Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. integer iChannel = 42;
  2. integer iListenHandle;
  3. integer iBoobMaxCount = 5;
  4. integer iHandPosesMaxCount = 7;
  5. integer iFaceExpressionsMaxCount = 4;
  6. integer iVagMaxCount = 2;
  7. integer iToungePosesMaxCount = 4;
  8. integer iLastBoobId;
  9.  
  10. float   dVoiceAnimTimeLeft = 0;
  11. integer bIsVoiceTalking;
  12.  
  13. integer iButtId;
  14. integer iTailId;
  15. integer iEyelashesId;
  16. integer iToungeId;
  17. integer iTailSizeId;
  18.  
  19. integer iFaceExpressionId;
  20. integer iLeftHandId;
  21. integer iRightHandId;
  22.  
  23. list aiBoobList;
  24. list aiTailVagList;
  25. list aiNoTailVagList;
  26.  
  27. list aiHandLinkList;
  28.  
  29. integer bIsNippleEnabled = TRUE;
  30. integer bIsNosePointy = TRUE;
  31. integer bIsBlinkOn = TRUE;
  32. integer bIsTailOn = TRUE;
  33. integer bIsVaginaOn = FALSE;
  34. integer bIsEyelashesOn = TRUE;
  35. integer bIsTailFast;
  36. integer bIsTalking;
  37. integer bIsAttached;
  38. float  dNextBlink;
  39. float  dNextDeform;
  40.  
  41. list   aiFeetAlphaList = [1, 1, 1, 1, 1, 1];
  42. list   aiLegsAlphaList = [1, 1, 1, 1, 1, 1, 1, 1];
  43. integer iButtAlpha = 1;
  44. integer iVagAlpha = 1;
  45. list   aiBellyAlphaList = [1, 1, 1];
  46. list   aiChestAlphaList = [1, 1, 1, 1];
  47. list   aiCollarAlphaList = [1, 1, 1, 1];
  48. integer iNeckAlpha = 1;
  49. list   aiArmsAlphaList = [1, 1, 1, 1, 1, 1, 1, 1];
  50. list   aiForearmsAlphaList = [1, 1, 1, 1];
  51. list   aiHandsAlphaList = [1, 1];
  52. integer iHeadAlpha = 1;
  53. integer iBoobAlpha = 1;
  54. integer bIsStumpOn;
  55.  
  56. string oCurrentJawAnimation = "Jawstate_000";
  57. string oCurrentEyeAnimation = "Eyestate_000";
  58. string oCurrentBlinkAnimation = "Blink_000";
  59. string oCurrentTailAnimation = "Tail0";
  60. integer iCurrentTailAnimationId;
  61.  
  62.  
  63. integer GetLinkNum ( string oPrimName )
  64. {
  65.     integer iPrimCount = llGetNumberOfPrims();
  66.     integer iCounter;
  67.     for ( iCounter = 0; iCounter < iPrimCount + 1 ; iCounter++ )
  68.     {
  69.         if ( llGetLinkName( iCounter ) == oPrimName) return iCounter;
  70.     }
  71.     return FALSE;
  72. }
  73.  
  74. string Right(string oSrc, string oDivider) {
  75.     integer iIndex = llSubStringIndex( oSrc, oDivider );
  76.     if(~iIndex)
  77.         return llDeleteSubString( oSrc, 0, iIndex + llStringLength(oDivider) - 1);
  78.     return oSrc;
  79. }
  80.  
  81. ClearModel()
  82. {
  83. integer iCounter;
  84. for ( iCounter = 0; iCounter < iBoobMaxCount; iCounter++ )
  85.     {
  86.         llSetLinkAlpha(  llList2Integer ( aiBoobList, iCounter ), 0, ALL_SIDES );
  87.         string oBoobSelectedString = llGetLinkName( llList2Integer( aiBoobList, iCounter ) );
  88.         llSetLinkAlpha( GetLinkNum( oBoobSelectedString + "Nipples" ), 0, ALL_SIDES );
  89.         llSetLinkAlpha( GetLinkNum( oBoobSelectedString + "NoNipples" ), 0, ALL_SIDES );
  90.     }
  91. for ( iCounter = 0; iCounter < iVagMaxCount; iCounter++ )
  92.     {
  93.         llSetLinkAlpha( llList2Integer ( aiNoTailVagList, iCounter ), 0, ALL_SIDES);
  94.         llSetLinkAlpha( llList2Integer ( aiTailVagList, iCounter ), 0, ALL_SIDES );
  95.     }
  96. for ( iCounter = 0; iCounter < iHandPosesMaxCount; iCounter++ )
  97.     {
  98.         llSetLinkAlpha( GetLinkNum( "HandPose" + (string)iCounter ), 0, ALL_SIDES );
  99.     }
  100. for ( iCounter = 0; iCounter < iFaceExpressionsMaxCount; iCounter++ )
  101.     {
  102.         llSetLinkAlpha( GetLinkNum( "FaceExpression" + (string)iCounter ), 0, ALL_SIDES );
  103.     }
  104. for ( iCounter = 0; iCounter < 4; iCounter++ )
  105.     {
  106.         llSetLinkAlpha( GetLinkNum( "TonguePose" + (string)iCounter ), 0, ALL_SIDES );
  107.     }
  108. for ( iCounter = 0; iCounter < 8; iCounter++ )
  109.     {
  110.         llSetLinkAlpha( GetLinkNum( "HandPose" + (string)iCounter ), 0, ALL_SIDES );
  111.     }    
  112.    
  113.     llSetLinkAlpha( GetLinkNum( "Butt" ), 0, ALL_SIDES );
  114.     llSetLinkAlpha( GetLinkNum( "NoseSmooth" ) ,0, ALL_SIDES );
  115.     llSetLinkAlpha( GetLinkNum( "NosePointy" ) ,0, ALL_SIDES );
  116.     llSetLinkAlpha( GetLinkNum( "Stump" ), 0, ALL_SIDES );
  117. }
  118.  
  119. SetModelFromList ( integer iPresetId, list aiPresetsList, integer iLastPresetId, integer iMaxPresetCount, integer bAlpha )
  120. {
  121.     llSetLinkAlpha( llList2Integer ( aiPresetsList, iLastPresetId ), 0, ALL_SIDES );
  122.     llSetLinkAlpha( llList2Integer ( aiPresetsList, iPresetId ), bAlpha, ALL_SIDES );
  123.     if ( iPresetId > iMaxPresetCount )
  124.     {
  125.         llSay ( 0, "Unexpected Preset Error :<" );
  126.     }
  127. }
  128.  
  129. HandleVaginaState ( integer iPresetId )
  130. {
  131.     bIsVaginaOn = iPresetId;      
  132.     if ( bIsTailOn == TRUE )
  133.     {
  134.         SetModelFromList ( bIsVaginaOn, aiTailVagList, !bIsVaginaOn, iVagMaxCount, iVagAlpha );
  135.     }
  136.     else
  137.     {
  138.         SetModelFromList ( bIsVaginaOn, aiNoTailVagList, !bIsVaginaOn, iVagMaxCount, iVagAlpha );
  139.     }
  140. }
  141.  
  142. HandleTailState ( integer bIsOn )
  143. {
  144.     if ( !bIsOn )
  145.         {
  146.                 llSetLinkAlpha( iButtId , iButtAlpha, ALL_SIDES);
  147.                 llSetLinkAlpha( iTailId , 0, ALL_SIDES);          
  148.                 llSetLinkAlpha( llList2Integer ( aiTailVagList, bIsVaginaOn ), 0, ALL_SIDES );
  149.                 llSetLinkAlpha( llList2Integer ( aiNoTailVagList, bIsVaginaOn ), iVagAlpha, ALL_SIDES );
  150.                 bIsTailOn = FALSE;
  151.         }
  152.         else
  153.         {
  154.                 llSetLinkAlpha( iButtId , 0, ALL_SIDES);
  155.                 llSetLinkAlpha( iTailId , iButtAlpha, ALL_SIDES);          
  156.                 llSetLinkAlpha( llList2Integer ( aiNoTailVagList, bIsVaginaOn ), 0, ALL_SIDES );
  157.                 llSetLinkAlpha( llList2Integer ( aiTailVagList, bIsVaginaOn ), iVagAlpha, ALL_SIDES );
  158.                 bIsTailOn = TRUE;
  159.         }
  160. }
  161.  
  162. HandleBoobsState ( integer iPresetId )
  163. {
  164.     SetModelFromList ( iPresetId, aiBoobList, iLastBoobId, iBoobMaxCount, TRUE );
  165.    
  166.     integer iCounter = 0;
  167.    
  168.    
  169.     for ( iCounter = 0; iCounter < 4; iCounter++ )
  170.     {  
  171.         if ( iPresetId == 0 && iCounter == 2 );
  172.         else
  173.         {
  174.             llSetLinkAlpha( llList2Integer( aiBoobList, iPresetId ), llList2Integer( aiChestAlphaList, iCounter), iCounter * 2);
  175.             llSetLinkAlpha( llList2Integer( aiBoobList, iPresetId ), llList2Integer( aiChestAlphaList, iCounter), (iCounter * 2) + 1);
  176.         }
  177.     }
  178.    
  179.     if ( iPresetId == 0 )
  180.     {
  181.         llSetLinkAlpha( llList2Integer( aiBoobList, iPresetId ), llList2Integer( aiChestAlphaList, 3), 4);
  182.         llSetLinkAlpha( llList2Integer( aiBoobList, iPresetId ), llList2Integer( aiChestAlphaList, 3), 5);
  183.     }
  184.    
  185.     string oBoobSelectedString = llGetLinkName( llList2Integer( aiBoobList, iLastBoobId ) );
  186.     llSetLinkAlpha( GetLinkNum( oBoobSelectedString + "Nipples" ), 0, ALL_SIDES);
  187.     llSetLinkAlpha( GetLinkNum( oBoobSelectedString + "NoNipples" ),0, ALL_SIDES);
  188.    
  189.     iLastBoobId = iPresetId;
  190.    
  191.     oBoobSelectedString = llGetLinkName( llList2Integer( aiBoobList, iLastBoobId ) );
  192.     llSetLinkAlpha( GetLinkNum( oBoobSelectedString + "Nipples" ), bIsNippleEnabled && iBoobAlpha, ALL_SIDES);
  193.     llSetLinkAlpha( GetLinkNum( oBoobSelectedString + "NoNipples" ),!bIsNippleEnabled && iBoobAlpha, ALL_SIDES);
  194. }
  195.  
  196. HandleJawState ( integer iPresetId )
  197. {
  198.     string oAnimationNameString = "Jawstate_0";
  199.     if ( iPresetId < 10 )
  200.         {
  201.             oAnimationNameString += "0" + (string)iPresetId;
  202.         }
  203.     else
  204.         {
  205.             oAnimationNameString += (string)iPresetId;
  206.         }
  207.     if ( bIsAttached )
  208.     {
  209.         llStopAnimation ( oCurrentJawAnimation );
  210.         llStartAnimation( oAnimationNameString );
  211.     }
  212.     oCurrentJawAnimation = oAnimationNameString;
  213. }  
  214.  
  215. HandleEyelidState ( integer iPresetId )
  216. {
  217.     string oAnimationNameString = "Eyestate_0";
  218.     if ( iPresetId < 10 )
  219.         {
  220.             oAnimationNameString += "0" + (string)iPresetId;
  221.         }
  222.     else
  223.         {
  224.             oAnimationNameString += (string)iPresetId;
  225.         }  
  226.     if ( bIsAttached )
  227.     {
  228.         llStopAnimation ( oCurrentEyeAnimation );
  229.         llStartAnimation( oAnimationNameString );
  230.     }
  231.     oCurrentEyeAnimation = oAnimationNameString;
  232. }
  233.  
  234. HandleTailSpeedState ( integer iPresetId )
  235. {
  236.     if ( oCurrentTailAnimation != "Tail0" )
  237.     {
  238.         string oAnimationNameString = "Tail";
  239.         if ( iPresetId )
  240.         {
  241.             oAnimationNameString += "Fast" + (string)iCurrentTailAnimationId;
  242.         }
  243.         else
  244.         {
  245.             oAnimationNameString += "Slow" + (string)iCurrentTailAnimationId;    
  246.         }
  247.         bIsTailFast = iPresetId;
  248.         if ( bIsAttached )
  249.         {
  250.             llStopAnimation ( oCurrentTailAnimation );
  251.             llStartAnimation( oAnimationNameString );
  252.         }
  253.         oCurrentTailAnimation = oAnimationNameString;
  254.     }
  255. }
  256.  
  257. HandleTailAnimState ( integer iPresetId )
  258. {
  259. string oAnimationNameString = "Tail";
  260. if ( iPresetId == 0 )
  261. {
  262.     oAnimationNameString += (string)iPresetId;
  263. }
  264. else
  265. {
  266.     if ( bIsTailFast )
  267.     {
  268.         oAnimationNameString += "Fast" + (string)iPresetId;  
  269.     }
  270.     else
  271.     {
  272.         oAnimationNameString += "Slow" + (string)iPresetId;    
  273.     }
  274. }
  275.     iCurrentTailAnimationId = iPresetId;
  276.     if ( bIsAttached )
  277.     {
  278.         llStopAnimation ( oCurrentTailAnimation );
  279.         llStartAnimation( oAnimationNameString );
  280.     }
  281.     oCurrentTailAnimation = oAnimationNameString;
  282. }
  283.  
  284. HandleNippleState ( integer bState )
  285. {
  286.     bIsNippleEnabled = bState;
  287.     string oBoobSelectedString = llGetLinkName( llList2Integer( aiBoobList, iLastBoobId ) );
  288.     llSetLinkAlpha( GetLinkNum( oBoobSelectedString + "Nipples" ) ,bIsNippleEnabled && iBoobAlpha, ALL_SIDES);
  289.     llSetLinkAlpha( GetLinkNum( oBoobSelectedString + "NoNipples" ) ,!bIsNippleEnabled && iBoobAlpha, ALL_SIDES);
  290. }
  291.  
  292. HandleNoseState ( integer iState )
  293. {
  294.         bIsNosePointy = iState;
  295.         llSetLinkAlpha( GetLinkNum( "NoseSmooth" ) ,!bIsNosePointy && iHeadAlpha && !bIsStumpOn, ALL_SIDES );
  296.         llSetLinkAlpha( GetLinkNum( "NosePointy" ) ,bIsNosePointy && iHeadAlpha && !bIsStumpOn, ALL_SIDES );
  297. }
  298.  
  299. HandeHandState( integer iHand, integer iState )
  300. {
  301.     llSetLinkAlpha( llList2Integer( aiHandLinkList, iState ), llList2Integer( aiHandsAlphaList   , iHand), iHand );
  302.     if ( !iHand  ) //left hand
  303.     {
  304.         if ( iLeftHandId != iState )
  305.         {
  306.             llSetLinkAlpha( llList2Integer( aiHandLinkList, iLeftHandId ), 0, iHand );
  307.             iLeftHandId = iState;
  308.         }
  309.     }
  310.     else
  311.     {
  312.         if ( iRightHandId != iState )
  313.         {
  314.             llSetLinkAlpha( llList2Integer( aiHandLinkList, iRightHandId ), 0, iHand );
  315.             iRightHandId = iState;
  316.         }
  317.     }
  318. }
  319.  
  320. HandleFaceExpressionState( integer iState )
  321. {
  322.     llSetLinkAlpha( GetLinkNum( "FaceExpression" + (string)iFaceExpressionId ), 0, ALL_SIDES );
  323.     iFaceExpressionId = iState;
  324.     llSetLinkAlpha( GetLinkNum( "FaceExpression" + (string)iFaceExpressionId ), iHeadAlpha && !bIsStumpOn, ALL_SIDES );
  325. }
  326.  
  327. HandleAlpha( string oNameString, integer iFace )
  328. {
  329.     if ( oNameString == "Feet" )
  330.     {
  331.         aiFeetAlphaList     = llListReplaceList( aiFeetAlphaList    , [!llList2Integer( aiFeetAlphaList    , iFace)], iFace, iFace );
  332.         llSetLinkAlpha( GetLinkNum( oNameString ), llList2Integer( aiFeetAlphaList    , iFace), iFace );
  333.     }
  334.     else if ( oNameString == "Legs" )
  335.     {
  336.         aiLegsAlphaList     = llListReplaceList( aiLegsAlphaList    , [!llList2Integer( aiLegsAlphaList    , iFace)], iFace, iFace );
  337.         llSetLinkAlpha( GetLinkNum( oNameString ), llList2Integer( aiLegsAlphaList    , iFace), iFace );
  338.     }
  339.     else if ( oNameString == "Butt" )
  340.     {
  341.         iButtAlpha = iFace;    
  342.         if ( bIsTailOn )
  343.         {
  344.             llSetLinkAlpha( GetLinkNum( "Tail" ), iButtAlpha, ALL_SIDES );
  345.         }
  346.         else
  347.         {
  348.             llSetLinkAlpha( GetLinkNum( "Butt" ), iButtAlpha, ALL_SIDES );
  349.         }
  350.     }
  351.     else if ( oNameString == "Vag" )
  352.     {
  353.         iVagAlpha = !iVagAlpha;
  354.        
  355.         if ( !bIsVaginaOn )
  356.         {
  357.             if (bIsTailOn) oNameString = "VaginaTailSmooth";
  358.             else oNameString = "VaginaNoTailSmooth";
  359.         }
  360.         else
  361.         {
  362.             if (bIsTailOn) oNameString = "VaginaTailNonSmooth";
  363.             else oNameString = "VaginaNoTailNonSmooth";
  364.         }
  365.        
  366.         llSetLinkAlpha( GetLinkNum( oNameString ), iVagAlpha, ALL_SIDES );
  367.     }
  368.     else if ( oNameString == "Belly" )
  369.     {
  370.         integer iToReplace = !llList2Integer( aiBellyAlphaList   , iFace);
  371.         aiBellyAlphaList = llListReplaceList( aiBellyAlphaList   , [ iToReplace ], iFace, iFace );
  372.        
  373.         if ( iFace == 0 )
  374.         {
  375.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 0);
  376.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 1);
  377.         }
  378.         else if ( iFace == 1 )
  379.         {
  380.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 2);
  381.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 3);
  382.         }
  383.         else if ( iFace == 2 )
  384.         {
  385.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 4);
  386.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 5);
  387.         }  
  388.        
  389.     }
  390.     else if ( oNameString == "Chest" )
  391.     {
  392.         integer iToReplace = !llList2Integer( aiChestAlphaList   , iFace);
  393.         aiChestAlphaList = llListReplaceList( aiChestAlphaList   , [ iToReplace ], iFace, iFace );
  394.         oNameString = llGetLinkName( llList2Integer( aiBoobList, iLastBoobId ) );
  395.  
  396.         if ( iFace == 0 )
  397.         {
  398.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 0);
  399.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 1);
  400.         }
  401.         else if ( iFace == 1 )
  402.         {
  403.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 2);
  404.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 3);
  405.         }
  406.         else if ( iFace == 2 )
  407.         {            
  408.             iBoobAlpha = !iBoobAlpha;
  409.            
  410.             if ( iLastBoobId >= 1 )
  411.             {
  412.                 llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 4);
  413.                 llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 5);
  414.                 if (bIsNippleEnabled) oNameString = llGetLinkName( llList2Integer( aiBoobList, iLastBoobId ) ) + "Nipples";
  415.                 else oNameString = llGetLinkName( llList2Integer( aiBoobList, iLastBoobId ) ) + "NoNipples";
  416.                
  417.                 llSetLinkAlpha( GetLinkNum( oNameString ), iBoobAlpha, ALL_SIDES );
  418.             }
  419.         }
  420.         else if ( iFace == 3 )
  421.         {
  422.             if ( iLastBoobId >= 1 )
  423.             {
  424.                 llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 6);
  425.                 llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 7);
  426.             }
  427.             else
  428.             {
  429.                 llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 4);
  430.                 llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 5);
  431.             }
  432.         }
  433.     }
  434.     else if ( oNameString == "Collar" )
  435.     {
  436.         integer iToReplace = !llList2Integer( aiCollarAlphaList   , iFace);
  437.         aiCollarAlphaList = llListReplaceList( aiCollarAlphaList   , [iToReplace], iFace, iFace );
  438.         if ( iFace == 0 )
  439.         {
  440.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 0);
  441.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 1);
  442.         }
  443.         else if ( iFace == 1 )
  444.         {
  445.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 2);
  446.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 3);
  447.         }
  448.         else if ( iFace == 2 )
  449.         {
  450.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 4);
  451.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 5);
  452.         }
  453.         else if ( iFace == 3 )
  454.         {
  455.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 6);
  456.             llSetLinkAlpha( GetLinkNum( oNameString ), iToReplace, 7);
  457.         }
  458.     }
  459.     else if ( oNameString == "Neck" )
  460.     {
  461.         iNeckAlpha = !iNeckAlpha;
  462.         if ( !bIsStumpOn )
  463.             llSetLinkAlpha( GetLinkNum( oNameString ), iNeckAlpha, ALL_SIDES );
  464.     }
  465.     else if ( oNameString == "Arms" )
  466.     {
  467.         aiArmsAlphaList     = llListReplaceList( aiArmsAlphaList    , [!llList2Integer( aiArmsAlphaList    , iFace)], iFace, iFace );
  468.         llSetLinkAlpha( GetLinkNum( oNameString ), llList2Integer( aiArmsAlphaList    , iFace), iFace );
  469.     }
  470.     else if ( oNameString == "Forearms" )
  471.     {
  472.         aiForearmsAlphaList = llListReplaceList( aiForearmsAlphaList, [!llList2Integer( aiForearmsAlphaList, iFace)], iFace, iFace );
  473.         llSetLinkAlpha( GetLinkNum( oNameString ), llList2Integer( aiForearmsAlphaList    , iFace), iFace );
  474.     }
  475.     else if ( oNameString == "Hands" )
  476.     {
  477.         if ( iFace == 0 ) oNameString = "HandPose" + (string)iLeftHandId;//Left Hand
  478.         else oNameString = "HandPose" + (string)iRightHandId;
  479.        
  480.         aiHandsAlphaList    = llListReplaceList( aiHandsAlphaList   , [!llList2Integer( aiHandsAlphaList   , iFace)], iFace, iFace );
  481.         llSetLinkAlpha( GetLinkNum( oNameString ), llList2Integer( aiHandsAlphaList    , iFace), iFace ); //current hands
  482.     }
  483.     else if ( oNameString == "Head" )
  484.     {
  485.         iHeadAlpha = !iHeadAlpha;
  486.         if ( bIsStumpOn )
  487.         {
  488.             llSetLinkAlpha( GetLinkNum( "Stump" ), iHeadAlpha, ALL_SIDES );
  489.         }
  490.         else
  491.         {
  492.             llSetLinkAlpha( GetLinkNum( "Head" ), iHeadAlpha, ALL_SIDES );
  493.  
  494.             llSetLinkAlpha( GetLinkNum( "Eyelashes" ), iHeadAlpha && bIsEyelashesOn, ALL_SIDES );
  495.        
  496.             llSetLinkAlpha( GetLinkNum( "MouthInterior" ), iHeadAlpha, ALL_SIDES );
  497.        
  498.             llSetLinkAlpha( GetLinkNum( "TonguePose" + (string)iToungeId ), iHeadAlpha, ALL_SIDES );
  499.        
  500.             llSetLinkAlpha( GetLinkNum( "FaceExpression" + (string)iFaceExpressionId ), iHeadAlpha, ALL_SIDES );
  501.             if ( !bIsNosePointy )
  502.                 llSetLinkAlpha( GetLinkNum( "NoseSmooth" ), iHeadAlpha, ALL_SIDES ); // current nose
  503.             else
  504.                 llSetLinkAlpha( GetLinkNum( "NosePointy" ), iHeadAlpha, ALL_SIDES );
  505.         }
  506.     }
  507. }
  508.  
  509. HandleTailSize ( integer iSize )
  510. {
  511.     if ( iTailSizeId != iSize )
  512.     {
  513.         iTailSizeId = iSize;
  514.         if ( bIsAttached )
  515.             llStartAnimation("TailSize" + (string)iTailSizeId);
  516.     }
  517. }
  518.  
  519. HandleToungePose ( integer iPose )
  520. {
  521.     llSetLinkAlpha( GetLinkNum( "TonguePose" + (string)iToungeId ), 0, ALL_SIDES );
  522.     llSetLinkAlpha( GetLinkNum( "TonguePose" + (string)iPose ), iHeadAlpha && !bIsStumpOn, ALL_SIDES );
  523.     iToungeId = iPose;
  524. }
  525.  
  526. HandleEyelashesTexture( string oTextureKey )
  527. {
  528.     if ( oTextureKey != "none" && oTextureKey != "" )
  529.         llSetLinkTexture( GetLinkNum( "Eyelashes" ), oTextureKey, ALL_SIDES);
  530. }
  531.  
  532. ParseMessage( string message )     //Decrypt
  533. {
  534.     list parsed = llParseString2List(message, ["|"], []);
  535.     integer lengthOfList = llGetListLength(parsed);
  536.     string oCategoryString = llList2String(parsed, 0);
  537.     integer iPresetId =  llList2Integer ( parsed, 2 );
  538.    
  539.     if ( oCategoryString == "BoobsState" )
  540.     {
  541.         HandleBoobsState ( iPresetId );
  542.     }
  543.     else if ( oCategoryString == "VaginaState" )
  544.     {
  545.         HandleVaginaState ( iPresetId );
  546.     }
  547.     else if ( oCategoryString == "TailState" )
  548.     {
  549.        HandleTailState ( iPresetId );
  550.     }
  551.     else if ( oCategoryString == "EyelashState" )
  552.     {
  553.         bIsEyelashesOn = iPresetId;
  554.         llSetLinkAlpha( iEyelashesId ,bIsEyelashesOn && iHeadAlpha && !bIsStumpOn, ALL_SIDES);
  555.     }
  556.     else if ( oCategoryString == "MouthState" )
  557.     {
  558.         HandleJawState ( iPresetId );
  559.     }
  560.     else if ( oCategoryString == "EyelidState" )
  561.     {
  562.         HandleEyelidState ( iPresetId );
  563.     }
  564.     else if ( oCategoryString == "TailAnimState" )
  565.     {
  566.         HandleTailAnimState ( iPresetId );
  567.     }
  568.     else if ( oCategoryString == "TailSpeedState" )
  569.     {
  570.         HandleTailSpeedState ( iPresetId );
  571.     }
  572.     else if ( oCategoryString == "NippleState" )
  573.     {
  574.         HandleNippleState ( iPresetId );
  575.     }
  576.     else if ( oCategoryString == "NoseState" )
  577.     {
  578.         HandleNoseState ( iPresetId );
  579.     }
  580.     else if ( oCategoryString == "HandState" )
  581.     {
  582.         HandeHandState ( llList2Integer ( parsed, 1 ),iPresetId );
  583.     }
  584.     else if ( oCategoryString == "FaceExpressionState" )
  585.     {
  586.         HandleFaceExpressionState( iPresetId );
  587.     }
  588.     else if ( oCategoryString == "Alpha" )
  589.     {
  590.         HandleAlpha( llList2String ( parsed, 2 ), llList2Integer ( parsed, 1 ));
  591.     }
  592.     else if ( oCategoryString == "TailSize" )
  593.     {
  594.         HandleTailSize( iPresetId );
  595.     }
  596.     else if ( oCategoryString == "ToungeState" )
  597.     {
  598.         HandleToungePose( iPresetId );
  599.     }
  600.     else if ( oCategoryString == "StumpState" )
  601.     {
  602.         bIsStumpOn = llList2Integer ( parsed, 1 );
  603.         llSetLinkAlpha( GetLinkNum( "Head" ), !bIsStumpOn && iHeadAlpha, ALL_SIDES );
  604.         llSetLinkAlpha( GetLinkNum( "Eyelashes" ), !bIsStumpOn && iHeadAlpha && bIsEyelashesOn, ALL_SIDES );
  605.         llSetLinkAlpha( GetLinkNum( "MouthInterior" ), !bIsStumpOn && iHeadAlpha, ALL_SIDES );
  606.         llSetLinkAlpha( GetLinkNum( "TonguePose" + (string)iToungeId ), !bIsStumpOn && iHeadAlpha, ALL_SIDES );
  607.         llSetLinkAlpha( GetLinkNum( "FaceExpression" + (string)iFaceExpressionId ), !bIsStumpOn && iHeadAlpha, ALL_SIDES );
  608.         llSetLinkAlpha( GetLinkNum( "NoseSmooth" ), !bIsStumpOn && !bIsNosePointy, ALL_SIDES ); // current nose
  609.         llSetLinkAlpha( GetLinkNum( "NosePointy" ), !bIsStumpOn && bIsNosePointy, ALL_SIDES );
  610.         llSetLinkAlpha( GetLinkNum( "Neck" ), !bIsStumpOn && iNeckAlpha, ALL_SIDES );
  611.         llSetLinkAlpha( GetLinkNum( "Stump" ), bIsStumpOn && iHeadAlpha, ALL_SIDES );
  612.     }
  613.     else if ( oCategoryString == "Texture" )
  614.     {
  615.         if ( llList2Integer ( parsed, 1 ) == 3  )
  616.             HandleEyelashesTexture( llList2String ( parsed, 2 ) );
  617.     }
  618.     else if ( oCategoryString == "VoiceTalk" )
  619.     {
  620.         dVoiceAnimTimeLeft = 0.7;
  621.     }
  622. }
  623.  
  624. HandleListen ( string oMessageString )
  625. {
  626.     ParseMessage ( oMessageString );
  627. }
  628.  
  629. Init()
  630. {
  631.     iListenHandle = llListen( iChannel, "", "", "");
  632.    
  633.     aiBoobList += GetLinkNum( "ChestMan"  );
  634.     aiBoobList += GetLinkNum( "ChestNoCup");
  635.     aiBoobList += GetLinkNum( "ChestACup" );
  636.     aiBoobList += GetLinkNum( "ChestBCup" );
  637.     aiBoobList += GetLinkNum( "ChestCCup" );
  638.     aiNoTailVagList += GetLinkNum( "VaginaNoTailSmooth" );
  639.     aiNoTailVagList += GetLinkNum( "VaginaNoTailNonSmooth" );
  640.     aiTailVagList += GetLinkNum( "VaginaTailSmooth" );
  641.     aiTailVagList += GetLinkNum( "VaginaTailNonSmooth" );
  642.     iButtId = GetLinkNum( "Butt" );
  643.     iTailId = GetLinkNum( "Tail" );
  644.     iEyelashesId = GetLinkNum( "Eyelashes" );
  645.     integer iCounter = 0;
  646.     for ( iCounter = 0; iCounter < 8; iCounter++ )
  647.     {
  648.         aiHandLinkList += GetLinkNum( "HandPose" + (string)iCounter );
  649.     }
  650.  
  651.     ClearModel();
  652.    
  653.     HandleTailState ( bIsTailOn );
  654.     HandleTailSpeedState ( bIsTailFast );
  655.     llSetLinkAlpha( iEyelashesId ,bIsEyelashesOn && iHeadAlpha && !bIsStumpOn, ALL_SIDES);
  656.     HandleEyelidState ( 0 );
  657.     SetModelFromList ( iLastBoobId, aiBoobList, iLastBoobId, iBoobMaxCount, TRUE );
  658.     SetModelFromList ( bIsVaginaOn, aiTailVagList, !bIsVaginaOn, iVagMaxCount, TRUE );
  659.     HandleVaginaState ( bIsVaginaOn );
  660.     HandleNippleState( bIsNippleEnabled );
  661.     HandleNoseState( bIsNosePointy );
  662.     HandleJawState( 0 );
  663.     HandleFaceExpressionState( 0 );
  664.     HandleToungePose( 0 );
  665.     HandleTailSpeedState( 0 );
  666.     HandleTailAnimState( 0 );
  667.     HandeHandState ( TRUE, iRightHandId );
  668.     HandeHandState ( FALSE, iLeftHandId );
  669.    
  670.     llSetTimerEvent( 0.1 );    
  671.     if ( bIsAttached )
  672.     {
  673.         llStartAnimation( oCurrentJawAnimation );
  674.         llStartAnimation( oCurrentEyeAnimation );
  675.     }
  676. }
  677.  
  678. default
  679. {
  680.     state_entry()
  681.     {
  682.         bIsAttached = llGetAttached();
  683.        
  684.         if ( bIsAttached )
  685.             llRequestPermissions( llGetOwner(), PERMISSION_TRIGGER_ANIMATION );
  686.        
  687.         Init();
  688.     }
  689.    
  690.     listen( integer channel, string name, key id, string message )
  691.     {
  692.         if ( llGetOwnerKey( id ) == llGetOwner() )
  693.         {
  694.             HandleListen( message );
  695.         }
  696.     }
  697.    
  698.     attach ( key id )
  699.     {
  700.        
  701.         llStartAnimation( oCurrentJawAnimation );
  702.         llStartAnimation( oCurrentEyeAnimation );
  703.         llStartAnimation ( oCurrentTailAnimation );
  704.         llStartAnimation("TailSize" + (string)iTailSizeId);
  705.        
  706.     }  
  707.    
  708.     on_rez ( integer start_param )
  709.     {
  710.         bIsAttached = llGetAttached();
  711.        
  712.         if ( bIsAttached )
  713.         {
  714.             llRequestPermissions( llGetOwner(), PERMISSION_TRIGGER_ANIMATION );
  715.        
  716.             llStartAnimation( "Deformation" );
  717.             llStopAnimation ( oCurrentTailAnimation );
  718.             llStartAnimation ( oCurrentTailAnimation );
  719.         }
  720.     }
  721.    
  722.     changed(integer change)
  723.     {
  724.         if (change & CHANGED_LINK)
  725.         {
  726.              llResetScript();
  727.         }
  728.         if (change & CHANGED_OWNER)
  729.         {
  730.              llResetScript();
  731.         }
  732.     }
  733.    
  734.     timer()
  735.     {
  736.         if (  dNextDeform <= 0  )
  737.         {
  738.             dNextDeform = 6;
  739.             if ( bIsAttached )
  740.             {
  741.                 llStartAnimation( "Deformation" );
  742.                 llStartAnimation("TailSize" + (string)iTailSizeId);
  743.             }
  744.         }
  745.         else
  746.         {
  747.             dNextDeform -= 0.1;
  748.         }
  749.        
  750.         if ( dVoiceAnimTimeLeft > 0 )
  751.         {
  752.             dVoiceAnimTimeLeft-= 0.1;
  753.             if ( !bIsVoiceTalking )
  754.             {
  755.                 bIsVoiceTalking = TRUE;
  756.                 llStopAnimation( oCurrentJawAnimation );
  757.                 llStartAnimation( "Talk" );
  758.             }
  759.         }
  760.         else
  761.         {
  762.             if ( bIsVoiceTalking )
  763.             {
  764.                 bIsVoiceTalking = FALSE;
  765.                 if ( !bIsTalking )
  766.                 {
  767.                     llStopAnimation( "Talk" );
  768.                     llStartAnimation( oCurrentJawAnimation );
  769.                 }
  770.             }
  771.         }
  772.        
  773.         if ( llGetAgentInfo( llGetOwner() ) & AGENT_TYPING )
  774.         {
  775.             if ( bIsAttached )
  776.                 llStopAnimation( oCurrentJawAnimation );
  777.             if ( !bIsTalking )
  778.             {
  779.                 bIsTalking = TRUE;
  780.                 if ( bIsAttached )
  781.                     llStartAnimation( "Talk" );
  782.             }
  783.         }
  784.         else
  785.         {
  786.             if ( bIsTalking && bIsAttached && !bIsVoiceTalking )
  787.             {
  788.                 llStartAnimation( oCurrentJawAnimation );
  789.                 llStopAnimation( "Talk" );
  790.             }
  791.             bIsTalking = FALSE;
  792.         }
  793.        
  794. //        if ( oCurrentEyeAnimation != "Eyestate_010" && dNextBlink <= 0  )
  795. //        {
  796. //            string oBlinkAnimation = "Blink_" + Right( oCurrentEyeAnimation, "_" );
  797. //           dNextBlink = 10.0 + llFrand( -5.0 );
  798. //            
  799. //            if ( bIsAttached )
  800. //                llStartAnimation( oBlinkAnimation );
  801. //        }
  802. //        else
  803. //        {
  804. //            dNextBlink -= 0.1;
  805.         }
  806.     }
  807. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement