Difference between revisions of "Creating An Animation Snippet for DeviousDesires"

From ColonolNuttyModsWiki
Jump to navigation Jump to search
(Created page with "{{NSFWPage}} =Preface= The following tutorial will go through the process of creating an animation snippet for use with Devious Desires. We will start...")
 
 
(9 intermediate revisions by the same user not shown)
Line 30: Line 30:
 
   <L n="animations_list">
 
   <L n="animations_list">
 
     <U>
 
     <U>
       <T n="animation_raw_display_name">Forced Milk Drinking</T>
+
       <T n="animation_raw_display_name">Test Animation Name</T>
       <T n="animation_author">Devious Desires</T>
+
       <T n="animation_author">DeviousDesires</T>
       <T n="animation_stage_name">forced_milk_drinking_dd</T>
+
       <T n="animation_stage_name">test_animation_name_dd</T>
 
       <L n="animation_locations">
 
       <L n="animation_locations">
 
       <E>FLOOR</E>
 
       <E>FLOOR</E>
      </L>
 
      <L n="animation_custom_locations">
 
      <T>12345</T>
 
      <T>15432</T>
 
      </L>
 
      <L n="animation_locations_by_tag">
 
      <E>FUNC_YOGA_MAT</E>
 
 
       </L>
 
       </L>
 
       <T n="animation_object">
 
       <T n="animation_object">
 
       <T n="object_animation_clip_name">DD:PosePack_12345_set_2</T>
 
       <T n="object_animation_clip_name">DD:PosePack_12345_set_2</T>
        <L n="object_effect_events">
 
          <U>
 
    <T n="effect_name">s40_obj_shower_spray</T>
 
    <T n="effect_joint_name">_FX_waterShower_0</T>
 
    <T n="event_start_after_seconds">0.0</T>
 
    <T n="event_end_after_seconds">100.0</T>
 
          </U>
 
        </L>
 
 
       </T>
 
       </T>
       <T n="animation_category">TEASING</T>
+
       <E n="animation_category">TEASING</E>
 
       <T n="animation_length">60.0</T>
 
       <T n="animation_length">60.0</T>
      <L n="animation_next_stages">
 
      <T>next_animation</T>
 
      </L>
 
      <T n="animation_allowed_for_random">True</T>
 
 
       <L n="animation_tags">
 
       <L n="animation_tags">
      <E>BREASTFEEDING</E>
 
 
       <E>AGGRESSIVE</E>
 
       <E>AGGRESSIVE</E>
      </L>
 
      <L n="animation_props_list">
 
        <U>
 
          <T n="prop_id">0</T>
 
          <T n="prop_name">Dildo 1</T>
 
          <E n="prop_type">BASIC</E>
 
          <T n="prop_animation_clip_name">DD:PosePack_201809101826573059_set_2</T>
 
          <L n="prop_guids">
 
            <T>12345</T>
 
            <T>76547</T>
 
          </L>
 
  <L n="prop_effect_events">
 
    <U>
 
      <T n="effect_name">ep1_photography_flash</T>
 
      <T n="effect_joint_name">_FX_</T>
 
      <T n="event_start_after_seconds">0.0</T>
 
      <T n="event_end_after_seconds">100.0</T>
 
    </U>
 
  </L>
 
        </U>
 
 
       </L>
 
       </L>
 
       <L n="animation_actors_list">
 
       <L n="animation_actors_list">
 
         <U>
 
         <U>
 
           <T n="actor_id">0</T>
 
           <T n="actor_id">0</T>
           <T n="actor_animation_clip_name">MOTHERLODESIMS:PosePack_201802211432198955_set_1</T>
+
           <T n="actor_animation_clip_name">PosePack_201802211432198955_set_1</T>
 
           <E n="actor_animation_category">TEASING</E>
 
           <E n="actor_animation_category">TEASING</E>
 
           <E n="actor_sim_type">ADULT_HUMAN</E>
 
           <E n="actor_sim_type">ADULT_HUMAN</E>
Line 99: Line 59:
 
    <E>AGGRESSOR</E>
 
    <E>AGGRESSOR</E>
 
    <E>DOM</E>
 
    <E>DOM</E>
    <E>BREASTFEEDING_MILK_RECEIVER</E>
 
 
    <E>IS_FORCING</E>
 
    <E>IS_FORCING</E>
 
  </L>
 
  </L>
           <T n="actor_self_interactions">
+
           <L n="actor_interactions">
            <U>
 
              <E n="action_type">ORALJOB</E>
 
      <L n="overlays_to_apply_to_target">
 
        <U>
 
                  <T n="overlay_type">CUM</T>
 
          <L n="overlay_body_locations">
 
            <E>BELLY</E>
 
          </L>
 
        </U>
 
      </L>
 
              <T n="is_penetrating_target">False</T>
 
              <T n="will_occur_inside_target">False</T>
 
            </U>
 
          </T>
 
          <T n="actor_interactions">
 
 
             <U>
 
             <U>
 
               <T n="target_actor_id">1</T>
 
               <T n="target_actor_id">1</T>
Line 123: Line 67:
 
      <L n="overlays_to_apply_to_target">
 
      <L n="overlays_to_apply_to_target">
 
        <U>
 
        <U>
                   <T n="overlay_type">MILK</T>
+
                   <E n="overlay_type">CUM</E>
 
          <L n="overlay_body_locations">
 
          <L n="overlay_body_locations">
            <E>NIPPLE_BOTH</E>
+
            <E>VAGINA</E>
 
          </L>
 
          </L>
 
        </U>
 
        </U>
Line 131: Line 75:
 
               <T n="is_penetrating_target">False</T>
 
               <T n="is_penetrating_target">False</T>
 
               <T n="will_occur_inside_target">False</T>
 
               <T n="will_occur_inside_target">False</T>
            </U>
 
          </T>
 
          <L n="actor_overlay_events">
 
            <U>
 
      <L n="overlays_to_apply">
 
        <U>
 
                <E n="overlay_type">CUM</E>
 
          <L n="overlay_body_locations">
 
            <E>MOUTH</E>
 
          </L>
 
        </U>
 
      </L>
 
      <T n="event_start_after_seconds">0.0</T>
 
      <T n="event_end_after_seconds">100.0</T>
 
            </U>
 
          </L>
 
          <L n="actor_effect_events">
 
            <U>
 
      <T n="effect_name">s40_sim_react_cry_heavy</T>
 
      <T n="effect_joint_name">b__Penis_Tip01</T>
 
      <T n="event_start_after_seconds">0.0</T>
 
      <T n="event_end_after_seconds">100.0</T>
 
            </U>
 
          </L>
 
          <L n="actor_equip_cas_part_events">
 
            <U>
 
      <L n="cas_part_ids">
 
        <T>34948</T>
 
      </L>
 
      <T n="event_start_after_seconds">0.0</T>
 
      <T n="event_end_after_seconds">100.0</T>
 
 
             </U>
 
             </U>
 
           </L>
 
           </L>
Line 167: Line 80:
 
         <U>
 
         <U>
 
           <T n="actor_id">1</T>
 
           <T n="actor_id">1</T>
           <T n="actor_animation_clip_name">MOTHERLODESIMS:PosePack_201802211432198955_set_2</T>
+
           <T n="actor_animation_clip_name">PosePack_201802211432198955_set_2</T>
           <T n="actor_animation_category">TEASING</T>
+
           <E n="actor_animation_category">TEASING</E>
 
           <E n="actor_sim_type">ADULT_HUMAN</E>
 
           <E n="actor_sim_type">ADULT_HUMAN</E>
 
           <L n="required_sexual_organs">
 
           <L n="required_sexual_organs">
             <E>BREASTS</E>
+
             <E>VAGINA</E>
 
           </L>
 
           </L>
 
  <L n="actor_unequip_list">
 
  <L n="actor_unequip_list">
    <E>TOP</E>
+
    <E>BOTTOM</E>
 
  </L>
 
  </L>
 
  <L n="actor_tags">
 
  <L n="actor_tags">
 
    <E>NON_AGGRESSOR</E>
 
    <E>NON_AGGRESSOR</E>
 
    <E>SUB</E>
 
    <E>SUB</E>
    <E>BREASTFEEDING_MILK_GIVER</E>
 
 
    <E>BEING_FORCED</E>
 
    <E>BEING_FORCED</E>
 
  </L>
 
  </L>
           <T n="actor_interactions">
+
           <L n="actor_interactions">
 
             <U>
 
             <U>
 
               <T n="target_actor_id">0</T>
 
               <T n="target_actor_id">0</T>
Line 188: Line 100:
 
      <L n="overlays_to_apply_to_target">
 
      <L n="overlays_to_apply_to_target">
 
        <U>
 
        <U>
                 <T n="overlay_type">MILK</T>
+
                 <E n="overlay_type">CUM</E>
 
          <L n="overlay_body_locations">
 
          <L n="overlay_body_locations">
 
            <E>MOUTH</E>
 
            <E>MOUTH</E>
Line 197: Line 109:
 
               <T n="will_occur_inside_target">True</T>
 
               <T n="will_occur_inside_target">True</T>
 
             </U>
 
             </U>
           </T>
+
           </L>
 
         </U>
 
         </U>
 
       </L>
 
       </L>
Line 211: Line 123:
 
<pre>
 
<pre>
 
     <U>
 
     <U>
       <T n="animation_raw_display_name">Forced Milk Drinking</T>
+
       <T n="animation_raw_display_name">Test Animation Name</T>
       <T n="animation_author">Devious Desires</T>
+
       <T n="animation_author">DeviousDesires</T>
       <T n="animation_stage_name">forced_milk_drinking_dd</T>
+
       <T n="animation_stage_name">test_animation_name_dd</T>
 
       <L n="animation_locations">
 
       <L n="animation_locations">
 
       <E>FLOOR</E>
 
       <E>FLOOR</E>
      </L>
 
      <L n="animation_custom_locations">
 
      <T>12345</T>
 
      <T>15432</T>
 
 
       </L>
 
       </L>
 
       <L n="animation_locations_by_tag">
 
       <L n="animation_locations_by_tag">
 
       <E>FUNC_YOGA_MAT</E>
 
       <E>FUNC_YOGA_MAT</E>
 +
      </L>
 +
      <L n="animation_custom_locations">
 +
      <T>1234</T>
 
       </L>
 
       </L>
 
       <T n="animation_object">
 
       <T n="animation_object">
      <T n="object_animation_clip_name">DD:PosePack_12345_set_2</T>
+
         ...
         <L n="object_effect_events">
 
          <U>
 
    <T n="effect_name">s40_obj_shower_spray</T>
 
    <T n="effect_joint_name">_FX_waterShower_0</T>
 
    <T n="event_start_after_seconds">0.0</T>
 
    <T n="event_end_after_seconds">100.0</T>
 
          </U>
 
        </L>
 
 
       </T>
 
       </T>
       <T n="animation_category">TEASING</T>
+
       <E n="animation_category">TEASING</E>
 
       <T n="animation_length">60.0</T>
 
       <T n="animation_length">60.0</T>
      <L n="animation_next_stages">
 
      <T>next_animation</T>
 
      </L>
 
      <T n="animation_allowed_for_random">True</T>
 
 
       <L n="animation_tags">
 
       <L n="animation_tags">
      <E>BREASTFEEDING</E>
+
        ...
      <E>AGGRESSIVE</E>
 
 
       </L>
 
       </L>
 
       <L n="animation_props_list">
 
       <L n="animation_props_list">
Line 261: Line 159:
 
!colspan="1"| Description
 
!colspan="1"| Description
 
!colspan="1"| Values
 
!colspan="1"| Values
 +
!colspan="1"| Is Required?
 
|-
 
|-
 
|animation_raw_display_name
 
|animation_raw_display_name
 
|This is what will be used for sorting as well as displaying (If an animation_display_name is not provided)
 
|This is what will be used for sorting as well as displaying (If an animation_display_name is not provided)
 
|The value can be any string/text you want it to be. It is recommended to make this name unique from ALL other animations, so it is easily identifiable!
 
|The value can be any string/text you want it to be. It is recommended to make this name unique from ALL other animations, so it is easily identifiable!
 +
|Yes
 
|-
 
|-
 
|animation_author
 
|animation_author
 
|The name of the author of this animation, more than likely your own name.
 
|The name of the author of this animation, more than likely your own name.
 
|The value can be any string/text you want it to be.
 
|The value can be any string/text you want it to be.
 +
|Yes
 
|-
 
|-
 
|animation_stage_name
 
|animation_stage_name
 
|This is used when identifying stages names. When another animation specifies its next stage animation within "animation_next_stages", this is the value that will be checked against.
 
|This is used when identifying stages names. When another animation specifies its next stage animation within "animation_next_stages", this is the value that will be checked against.
 
|This name should be absolutely unique from ALL other animations. It should also never contain any spaces or non letter, non number characters! Underscore is fine.
 
|This name should be absolutely unique from ALL other animations. It should also never contain any spaces or non letter, non number characters! Underscore is fine.
 +
|No
 
|-
 
|-
 
|animation_locations
 
|animation_locations
 
|This is a collection of named locations your animation will be available at. In this case, we are specifying FLOOR, meaning the animation will ]be available on the floor.
 
|This is a collection of named locations your animation will be available at. In this case, we are specifying FLOOR, meaning the animation will ]be available on the floor.
 
|For a complete list of named animation locations, take a look at this page [[Animation Locations for DeviousDesires|Animation Locations]]
 
|For a complete list of named animation locations, take a look at this page [[Animation Locations for DeviousDesires|Animation Locations]]
 +
|Kind of, if animation_custom_locations and animation_locations_by_tag are not provided.
 
|-
 
|-
 
|animation_custom_locations
 
|animation_custom_locations
 
|This is a collection of custom locations your animation will be available at. In this case, we are specifying 12345 and 15432, meaning the animation will ]be available for objects with the custom id of 12345 and 15432. The Custom Id (Also known as UID) of objects can be found by SHIFT+CLICK on the object -> Devious Desires -> Show Available Animations (testingcheats on may be required). The Terrain will always have the UID of -1, use animation_locations above to make an animation available for the floor instead.
 
|This is a collection of custom locations your animation will be available at. In this case, we are specifying 12345 and 15432, meaning the animation will ]be available for objects with the custom id of 12345 and 15432. The Custom Id (Also known as UID) of objects can be found by SHIFT+CLICK on the object -> Devious Desires -> Show Available Animations (testingcheats on may be required). The Terrain will always have the UID of -1, use animation_locations above to make an animation available for the floor instead.
 
|The UID of Objects.
 
|The UID of Objects.
 +
|Kind of, if animation_locations and animation_locations_by_tag are not provided.
 
|-
 
|-
 
|animation_locations_by_tag
 
|animation_locations_by_tag
 
|This is a collection of Game Tags to specify a location your animation will be available at. In this case, we are specifying FUNC_YOGA_MAT, meaning the animation will be available on any object tagged with FUNC_YOGA_MAT.
 
|This is a collection of Game Tags to specify a location your animation will be available at. In this case, we are specifying FUNC_YOGA_MAT, meaning the animation will be available on any object tagged with FUNC_YOGA_MAT.
 
|For a complete list of tags, take a look at this page [https://github.com/ColonolNutty/Sims4CommunityLibrary/blob/master/Scripts/sims4communitylib/enums/tags_enum.py CommonGameTag]
 
|For a complete list of tags, take a look at this page [https://github.com/ColonolNutty/Sims4CommunityLibrary/blob/master/Scripts/sims4communitylib/enums/tags_enum.py CommonGameTag]
 +
|Kind of, if animation_locations and animation_custom_locations are not provided.
 
|-
 
|-
 
|animation_object
 
|animation_object
 
|This is an object that details information related to the Object of the Animation, such as the animation clip it should play and events to play on it.
 
|This is an object that details information related to the Object of the Animation, such as the animation clip it should play and events to play on it.
 
|Animation Objects will be covered further down.
 
|Animation Objects will be covered further down.
 +
|No
 
|-
 
|-
 
|animation_category
 
|animation_category
 
|The category of the animation. This may be removed in the future, when tags are used exclusively.
 
|The category of the animation. This may be removed in the future, when tags are used exclusively.
|TEASING, HANDJOB, FOOTJOB, ORALJOB, TITJOB, VAGINAL, ANAL, CLIMAX
+
|HANDJOB, FOOTJOB, ORALJOB, TEASING, TITJOB, VAGINAL, ANAL, CLIMAX, DANCING
 +
|Yes
 
|-
 
|-
 
|animation_length
 
|animation_length
 
|The duration of the animation in real time seconds.
 
|The duration of the animation in real time seconds.
 
|A float (decimal number) indicating the number of seconds the animation will take in real time.
 
|A float (decimal number) indicating the number of seconds the animation will take in real time.
 +
|Yes
 
|-
 
|-
 
|animation_next_stages
 
|animation_next_stages
 
|A list of animations that can be progressed to or chosen automatically after this animation has finished. These are the "animation_stage_name" of those animations.
 
|A list of animations that can be progressed to or chosen automatically after this animation has finished. These are the "animation_stage_name" of those animations.
 
|The "animation_stage_name" of the animations the animations that can be progressed to automatically.
 
|The "animation_stage_name" of the animations the animations that can be progressed to automatically.
|-
+
|No
|animation_allowed_for_random
 
|When the player chooses Random Animation in an animation choose dialog, this determines whether or not the animation will be available. If set to True, the animation will be available to be chosen when the player chooses Random Animation.
 
|True or False
 
 
|-
 
|-
 
|animation_tags
 
|animation_tags
|A list of tags that describe the animation. i.e. BREASTFEEDING for a breastfeeding animation. AGGRESSIVE for an aggressive/rape animation. ROUGH for a Rough/bdsm animation. Otherwise it is free game what you decide to put in this! It is recommended you use also use a tag matching your animation category, so it'll be good to go when the animation category is no longer used. For the proper use of this specific property, please take a look at this page [[Animation Tags for DeviousDesires|Animation Tags]]
+
|A list of tags that describe the animation. i.e. BREASTFEEDING for a breastfeeding animation. AGGRESSIVE for an aggressive/rape animation. ROUGH for a Rough/bdsm animation. Check the Animation Tags page for details on other Special Tags! It is recommended you use also use a tag matching your animation category, so it'll be good to go when the animation category is no longer used. For the proper use of this specific property, please take a look at this page [[Animation Tags for DeviousDesires|Animation Tags]]
 
|For a complete list of Animation Tags, take a look at this page [[Animation Tags for DeviousDesires|Animation Tags]]
 
|For a complete list of Animation Tags, take a look at this page [[Animation Tags for DeviousDesires|Animation Tags]]
 +
|No
 
|-
 
|-
 
|animation_props_list
 
|animation_props_list
 
|A list of props to spawn and use during the animation, we will cover this further down!
 
|A list of props to spawn and use during the animation, we will cover this further down!
 
|You can have as many props as your animation needs.
 
|You can have as many props as your animation needs.
 +
|No
 
|-
 
|-
 
|animation_actors_list
 
|animation_actors_list
 
|A list of actors and their properties, we will cover this further down!
 
|A list of actors and their properties, we will cover this further down!
 
|You can have as many actors as your animation needs.
 
|You can have as many actors as your animation needs.
 +
|Yes
 
|}
 
|}
  
Line 342: Line 250:
 
!colspan="1"| Description
 
!colspan="1"| Description
 
!colspan="1"| Values
 
!colspan="1"| Values
 +
!colspan="1"| Is Required?
 
|-
 
|-
 
|object_animation_clip_name
 
|object_animation_clip_name
 
|The name of the Clip file. The name of the clip file and the instance identifier of that clip SHOULD equate to each other.
 
|The name of the Clip file. The name of the clip file and the instance identifier of that clip SHOULD equate to each other.
 
|The name of a Clip file.
 
|The name of a Clip file.
 +
|Yes
 
|-
 
|-
 
|object_effect_events
 
|object_effect_events
 
|A list of events that will apply effects to the Object either for the entire animation or for specific parts of an animation.
 
|A list of events that will apply effects to the Object either for the entire animation or for specific parts of an animation.
 
|Effect events will be covered further down, under Animation Events.
 
|Effect events will be covered further down, under Animation Events.
 +
|No
 
|}
 
|}
  
Line 384: Line 295:
 
!colspan="1"| Description
 
!colspan="1"| Description
 
!colspan="1"| Values
 
!colspan="1"| Values
 +
!colspan="1"| Is Required?
 
|-
 
|-
 
|prop_id
 
|prop_id
 
|This is what identifies the prop within the animation, for example when an error occurs or we need to do something with a specific prop, we'll use this property to locate it. i.e. Prop 2 interacts with Prop 0
 
|This is what identifies the prop within the animation, for example when an error occurs or we need to do something with a specific prop, we'll use this property to locate it. i.e. Prop 2 interacts with Prop 0
 
|A non decimal number (integer) that needs to be unique from all other props within THIS animation.
 
|A non decimal number (integer) that needs to be unique from all other props within THIS animation.
 +
|Yes
 
|-
 
|-
 
|prop_animation_clip_name
 
|prop_animation_clip_name
 
|The name of the Clip file. The name of the clip file and the instance identifier of that clip SHOULD equate to each other.
 
|The name of the Clip file. The name of the clip file and the instance identifier of that clip SHOULD equate to each other.
 
|The name of a Clip file.
 
|The name of a Clip file.
 +
|Yes
 
|-
 
|-
 
|prop_name
 
|prop_name
 
|A name used for logging the prop and being able to identify the prop. It may be used as a display name in various cases.
 
|A name used for logging the prop and being able to identify the prop. It may be used as a display name in various cases.
 
|Text that represents the name of the prop that should be unique to all other props.
 
|Text that represents the name of the prop that should be unique to all other props.
 +
|Yes
 
|-
 
|-
 
|prop_type
 
|prop_type
 
|The type of prop this is.
 
|The type of prop this is.
 
|BASIC, TONGUE
 
|BASIC, TONGUE
 +
|Yes
 
|-
 
|-
 
|prop_guids
 
|prop_guids
 
|A list of decimal identifiers that point to prop objects. When a prop is to be spawned, one out of all of these guids will be chosen at random to be used.
 
|A list of decimal identifiers that point to prop objects. When a prop is to be spawned, one out of all of these guids will be chosen at random to be used.
 
|Decimal identifiers of Objects.
 
|Decimal identifiers of Objects.
 +
|Yes
 
|-
 
|-
 
|prop_effect_events
 
|prop_effect_events
 
|A list of events that will apply effects to the Prop after it is spawned, either for the entire animation or for specific parts of an animation.
 
|A list of events that will apply effects to the Prop after it is spawned, either for the entire animation or for specific parts of an animation.
 
|Effect events will be covered further down, under Animation Events.
 
|Effect events will be covered further down, under Animation Events.
 +
|No
 
|}
 
|}
  
 
=Actors=
 
=Actors=
 
<pre>
 
<pre>
       <T n="animation_actors_list">
+
       <L n="animation_actors_list">
 
         <U>
 
         <U>
 
           <T n="actor_id">0</T>
 
           <T n="actor_id">0</T>
           <T n="actor_animation_clip_name">MOTHERLODESIMS:PosePack_201802211432198955_set_1</T>
+
           <T n="actor_animation_clip_name">PosePack_201802211432198955_set_1</T>
 
           <E n="actor_animation_category">TEASING</E>
 
           <E n="actor_animation_category">TEASING</E>
 
           <E n="actor_sim_type">ADULT_HUMAN</E>
 
           <E n="actor_sim_type">ADULT_HUMAN</E>
Line 427: Line 345:
 
    <E>AGGRESSOR</E>
 
    <E>AGGRESSOR</E>
 
    <E>DOM</E>
 
    <E>DOM</E>
    <E>BREASTFEEDING_MILK_RECEIVER</E>
 
 
    <E>IS_FORCING</E>
 
    <E>IS_FORCING</E>
 
  </L>
 
  </L>
           <T n="actor_self_interactions">
+
           <L n="actor_interactions">
            <U>
 
              <E n="action_type">ORALJOB</E>
 
      <L n="overlays_to_apply_to_target">
 
        <U>
 
                  <T n="overlay_type">CUM</T>
 
          <L n="overlay_body_locations">
 
            <E>BELLY</E>
 
          </L>
 
        </U>
 
      </L>
 
              <T n="is_penetrating_target">False</T>
 
              <T n="will_occur_inside_target">False</T>
 
            </U>
 
          </T>
 
          <T n="actor_interactions">
 
 
             <U>
 
             <U>
 
               <T n="target_actor_id">1</T>
 
               <T n="target_actor_id">1</T>
Line 451: Line 353:
 
      <L n="overlays_to_apply_to_target">
 
      <L n="overlays_to_apply_to_target">
 
        <U>
 
        <U>
                   <T n="overlay_type">MILK</T>
+
                   <E n="overlay_type">CUM</E>
 
          <L n="overlay_body_locations">
 
          <L n="overlay_body_locations">
            <E>NIPPLE_BOTH</E>
+
            <E>VAGINA</E>
 
          </L>
 
          </L>
 
        </U>
 
        </U>
Line 460: Line 362:
 
               <T n="will_occur_inside_target">False</T>
 
               <T n="will_occur_inside_target">False</T>
 
             </U>
 
             </U>
           </T>
+
           </L>
 
           <L n="actor_overlay_events">
 
           <L n="actor_overlay_events">
             <U>
+
             ...
      <L n="overlays_to_apply">
 
        <U>
 
                <E n="overlay_type">CUM</E>
 
          <L n="overlay_body_locations">
 
            <E>MOUTH</E>
 
          </L>
 
        </U>
 
      </L>
 
      <T n="event_start_after_seconds">0.0</T>
 
      <T n="event_end_after_seconds">100.0</T>
 
            </U>
 
 
           </L>
 
           </L>
 
           <L n="actor_effect_events">
 
           <L n="actor_effect_events">
             <U>
+
             ...
      <T n="effect_name">s40_sim_react_cry_heavy</T>
 
      <T n="effect_joint_name">b__Penis_Tip01</T>
 
      <T n="event_start_after_seconds">0.0</T>
 
      <T n="event_end_after_seconds">100.0</T>
 
            </U>
 
 
           </L>
 
           </L>
 
           <L n="actor_equip_cas_part_events">
 
           <L n="actor_equip_cas_part_events">
             <U>
+
             ...
      <L n="cas_part_ids">
 
        <T>34948</T>
 
      </L>
 
      <T n="event_start_after_seconds">0.0</T>
 
      <T n="event_end_after_seconds">100.0</T>
 
            </U>
 
 
           </L>
 
           </L>
 
         </U>
 
         </U>
Line 497: Line 377:
 
           ...
 
           ...
 
         </U>
 
         </U>
       </T>
+
       </L>
 
</pre>
 
</pre>
  
Line 508: Line 388:
 
!colspan="1"| Description
 
!colspan="1"| Description
 
!colspan="1"| Values
 
!colspan="1"| Values
 +
!colspan="1"| Is Required?
 
|-
 
|-
 
|actor_id
 
|actor_id
 
|This is what identifies the actor within the animation, for example when another actor is interacting with this actor, they'll use this property to locate them. i.e. Actor 2 applies overlay to Actor 0
 
|This is what identifies the actor within the animation, for example when another actor is interacting with this actor, they'll use this property to locate them. i.e. Actor 2 applies overlay to Actor 0
 
|A non decimal number (integer) that needs to be unique from all other actors within THIS animation.
 
|A non decimal number (integer) that needs to be unique from all other actors within THIS animation.
 +
|Yes
 
|-
 
|-
 
|actor_animation_clip_name
 
|actor_animation_clip_name
 
|The name of the Clip file. The name of the clip file and the instance identifier of that clip SHOULD equate to each other.
 
|The name of the Clip file. The name of the clip file and the instance identifier of that clip SHOULD equate to each other.
 
|The name of a Clip file.
 
|The name of a Clip file.
 +
|Yes
 
|-
 
|-
 
|actor_animation_category
 
|actor_animation_category
 
|The category or type of action this actor is receiving by other Actors. For example, if Actor 2 is doing vaginal with Actor 0, Actor 0 would have their category be Vaginal. Keep in mind, this property will likely be removed in favor of tags in the future!
 
|The category or type of action this actor is receiving by other Actors. For example, if Actor 2 is doing vaginal with Actor 0, Actor 0 would have their category be Vaginal. Keep in mind, this property will likely be removed in favor of tags in the future!
|TEASING, HANDJOB, FOOTJOB, ORALJOB, TITJOB, VAGINAL, ANAL, CLIMAX
+
|HANDJOB, FOOTJOB, ORALJOB, TEASING, TITJOB, VAGINAL, ANAL, CLIMAX, DANCING
 +
|Yes
 
|-
 
|-
 
|actor_sim_type
 
|actor_sim_type
 
|This is the type of Sim that may take this slot. It specifies the Age, Species, and Occult Type that may take this slot. Please note that Non-Occult Sim Types may be taken by Occult Sim Types. i.e. ADULT_HUMAN may be taken by ADULT_HUMAN_VAMPIRE, but ADULT_HUMAN_VAMPIRE may not be taken by ADULT_HUMAN.
 
|This is the type of Sim that may take this slot. It specifies the Age, Species, and Occult Type that may take this slot. Please note that Non-Occult Sim Types may be taken by Occult Sim Types. i.e. ADULT_HUMAN may be taken by ADULT_HUMAN_VAMPIRE, but ADULT_HUMAN_VAMPIRE may not be taken by ADULT_HUMAN.
 
|For a full list of Sim Types check out [[Common Sim Types for S4CL|Common Sim Types]]
 
|For a full list of Sim Types check out [[Common Sim Types for S4CL|Common Sim Types]]
 +
|Yes
 
|-
 
|-
 
|required_sexual_organs
 
|required_sexual_organs
 
|A list of the Sexual Organs this Actor slot requires a Sim to have in order for the Sim to take this slot. Only Sims with all of the listed Sexual Organs will be allowed to take this slot. If PENIS is listed and a Sim with a VAGINA takes this slot, a Strap-on will be equipped automatically. If no "sexual_organs" are provided, this slot will be available for all variations of Sexual Organs.
 
|A list of the Sexual Organs this Actor slot requires a Sim to have in order for the Sim to take this slot. Only Sims with all of the listed Sexual Organs will be allowed to take this slot. If PENIS is listed and a Sim with a VAGINA takes this slot, a Strap-on will be equipped automatically. If no "sexual_organs" are provided, this slot will be available for all variations of Sexual Organs.
 
|PENIS, VAGINA, BREASTS
 
|PENIS, VAGINA, BREASTS
 +
|No
 
|-
 
|-
 
|actor_unequip_list
 
|actor_unequip_list
 
|A list of clothing items to removed from Sims that take this Actor slot. i.e. BOTTOM will remove their lower body outfit, such as their pants. Do not keep this property if you do not want to unequip anything.
 
|A list of clothing items to removed from Sims that take this Actor slot. i.e. BOTTOM will remove their lower body outfit, such as their pants. Do not keep this property if you do not want to unequip anything.
 
|TOP, BOTTOM, HANDS, FEET, ALL
 
|TOP, BOTTOM, HANDS, FEET, ALL
 +
|No
 
|-
 
|-
 
|actor_tags
 
|actor_tags
|A list of tags that describe the actor slot. i.e. For BREASTFEEDING animations, add the BREASTFEEDING_MILK_GIVER tag to the Actor that is GIVING milk and the BREASTFEEDING_MILK_RECEIVER tag to the Actor that RECEIVING milk (Their hunger will fill, milk levels will drop, etc.). For AGGRESSIVE animations, add the AGGRESSOR tag to the Actor that is the attacker, and the NON_AGGRESSOR tag to the Actor that is the victim. For ROUGH animations, add the DOM tag to the Actor that is Dominant, and the SUB tag to the Actor that is Submissive. Besides those special tags, it is free game what you decide to put in this! It is recommended you also add a tag matching your actor animation category, so it'll be good to go when the actor animation category is no longer used. For the proper use of this specific property, please take a look at this page [[Animation Tags for DeviousDesires|Animation Tags]]
+
|A list of tags that describe the actor slot. i.e. For BREASTFEEDING animations, add the BREAST_MILK_SOURCE tag to the Actor that is GIVING milk and the BREAST_MILK_DRINKER tag to the Actor that RECEIVING milk (Their hunger will fill, milk levels will drop, etc.). For AGGRESSIVE animations, add the AGGRESSOR tag to the Actor that is the attacker, and the NON_AGGRESSOR tag to the Actor that is the victim. For ROUGH animations, add the DOM tag to the Actor that is Dominant, and the SUB tag to the Actor that is Submissive. Check the Animation Tags and Animation Actor Tags pages for details on other Special tags! It is recommended you also add a tag matching your actor animation category, so it'll be good to go when the actor animation category is no longer used. For the proper use of this specific property, please take a look at this page [[Animation Tags for DeviousDesires|Animation Tags]]
 
|For a complete list of Animation Actor Tags, take a look at this page [[Animation Actor Tags for DeviousDesires|Animation Actor Tags]]
 
|For a complete list of Animation Actor Tags, take a look at this page [[Animation Actor Tags for DeviousDesires|Animation Actor Tags]]
|-
+
|No
|actor_self_interactions
 
|A list of interactions this Actor does to themselves. i.e. Actor 0 will apply overlay to themselves.
 
|Actor self interactions will be covered further down.
 
 
|-
 
|-
 
|actor_interactions
 
|actor_interactions
|A list of interactions this Actor does to other Actors. i.e. Actor 0 is penetrating Actor 1 and will apply overlay to them.
+
|A list of interactions this Actor does to themselves or other Actors. i.e. Actor 0 is penetrating Actor 1 and will apply overlay to them.
 
|Actor interactions will be covered further down.
 
|Actor interactions will be covered further down.
 +
|Yes
 
|-
 
|-
 
|actor_overlay_events
 
|actor_overlay_events
 
|A list of events that will apply overlays to the Actor either for the entire animation or for specific parts of an animation.
 
|A list of events that will apply overlays to the Actor either for the entire animation or for specific parts of an animation.
 
|Overlay events will be covered further down, under Animation Events.
 
|Overlay events will be covered further down, under Animation Events.
 +
|No
 
|-
 
|-
 
|actor_effect_events
 
|actor_effect_events
 
|A list of events that will apply effects to the Actor either for the entire animation or for specific parts of an animation.
 
|A list of events that will apply effects to the Actor either for the entire animation or for specific parts of an animation.
 
|Effect events will be covered further down, under Animation Events.
 
|Effect events will be covered further down, under Animation Events.
 +
|No
 
|-
 
|-
 
|actor_equip_cas_part_events
 
|actor_equip_cas_part_events
 
|A list of events that will apply CAS Parts to the Actor either for the entire animation or for specific parts of an animation. At the end of the animation, if any CAS Parts were replaced, it will put those CAS Parts back on the outfit.
 
|A list of events that will apply CAS Parts to the Actor either for the entire animation or for specific parts of an animation. At the end of the animation, if any CAS Parts were replaced, it will put those CAS Parts back on the outfit.
 
|CAS Part events will be covered further down, under Animation Events.
 
|CAS Part events will be covered further down, under Animation Events.
 +
|No
 
|}
 
|}
  
Line 561: Line 449:
  
 
<pre>
 
<pre>
           <T n="actor_interactions">
+
           <L n="actor_interactions">
 
             <U>
 
             <U>
 
               <T n="target_actor_id">1</T>
 
               <T n="target_actor_id">1</T>
Line 567: Line 455:
 
      <L n="overlays_to_apply_to_target">
 
      <L n="overlays_to_apply_to_target">
 
        <U>
 
        <U>
                   <T n="overlay_type">MILK</T>
+
                   <E n="overlay_type">CUM</E>
 
          <L n="overlay_body_locations">
 
          <L n="overlay_body_locations">
            <E>NIPPLE_BOTH</E>
+
            <E>VAGINA</E>
 
          </L>
 
          </L>
 
        </U>
 
        </U>
Line 580: Line 468:
 
               ...
 
               ...
 
             </U>
 
             </U>
           </T>
+
           </L>
 
</pre>
 
</pre>
  
Line 591: Line 479:
 
!colspan="1"| Description
 
!colspan="1"| Description
 
!colspan="1"| Values
 
!colspan="1"| Values
 +
!colspan="1"| Is Required?
 
|-
 
|-
 
|target_actor_id
 
|target_actor_id
 
|This is the identifier of the Actor RECEIVING this action from THIS actor. i.e. Actor 1 (This actor) is penetrating Actor 0 (target_actor_id), so this value would be 0.
 
|This is the identifier of the Actor RECEIVING this action from THIS actor. i.e. Actor 1 (This actor) is penetrating Actor 0 (target_actor_id), so this value would be 0.
|A non decimal number (integer) that is a reference to another actor in THIS animation.
+
|A non decimal number (integer) that is a reference to another actor in THIS animation. You also reference the same Actor to indicate the actor is doing something to themselves.
 +
|Yes
 
|-
 
|-
 
|action_type
 
|action_type
 
|The type of action THIS Actor is performing to the Target Actor. Right now it has the same values as Animation Category, but may be changed in the future!
 
|The type of action THIS Actor is performing to the Target Actor. Right now it has the same values as Animation Category, but may be changed in the future!
|TEASING, HANDJOB, FOOTJOB, ORALJOB, TITJOB, VAGINAL, ANAL, CLIMAX
+
|HANDJOB, FOOTJOB, ORALJOB, TEASING, TITJOB, VAGINAL, ANAL, CLIMAX, DANCING
 +
|Yes
 
|-
 
|-
 
|overlays_to_apply_to_target
 
|overlays_to_apply_to_target
 
|These are the overlays THIS actor will apply to the Target Actor. If a CUM overlay is applied to the VAGINA and the action is flagged as Penetrating and Will Occur Inside, the Target actor may become pregnant!
 
|These are the overlays THIS actor will apply to the Target Actor. If a CUM overlay is applied to the VAGINA and the action is flagged as Penetrating and Will Occur Inside, the Target actor may become pregnant!
 
|A list of overlays to apply to the Target actor. See the next properties for more details.
 
|A list of overlays to apply to the Target actor. See the next properties for more details.
 +
|Yes, but can be empty.
 
|-
 
|-
 
|overlay_type
 
|overlay_type
 
|The type of overlay to apply to the Target Actor.
 
|The type of overlay to apply to the Target Actor.
 
|TEARS, BLUSH, CUM, MILK
 
|TEARS, BLUSH, CUM, MILK
 +
|Yes
 
|-
 
|-
 
|overlay_body_locations
 
|overlay_body_locations
 
|A list of locations the overlay will be applied to. i.e. If the "overlay_type" is CUM and MOUTH and CHEST are specified for "overlay_body_locations", then a Cum overlay will be applied to both the Mouth and Chest of the Target Actor.
 
|A list of locations the overlay will be applied to. i.e. If the "overlay_type" is CUM and MOUTH and CHEST are specified for "overlay_body_locations", then a Cum overlay will be applied to both the Mouth and Chest of the Target Actor.
 
|EYES, FACE, MOUTH, CHEST, BELLY, BACK, LOWER_BACK, ANUS, VAGINA, PENIS, BUTT, BUTT_LEFT, BUTT_RIGHT, FEET, NIPPLE_LEFT, NIPPLE_RIGHT, NIPPLE_BOTH, INNER_THIGH, LEFT_INNER_THIGH, RIGHT_INNER_THIGH, OUTER_THIGH, LEFT_OUTER_THIGH, RIGHT_OUTER_THIGH
 
|EYES, FACE, MOUTH, CHEST, BELLY, BACK, LOWER_BACK, ANUS, VAGINA, PENIS, BUTT, BUTT_LEFT, BUTT_RIGHT, FEET, NIPPLE_LEFT, NIPPLE_RIGHT, NIPPLE_BOTH, INNER_THIGH, LEFT_INNER_THIGH, RIGHT_INNER_THIGH, OUTER_THIGH, LEFT_OUTER_THIGH, RIGHT_OUTER_THIGH
 +
|Yes
 
|-
 
|-
 
|is_penetrating_target
 
|is_penetrating_target
 
|Whether or not this action is considered as "penetrating". i.e. If THIS actor is having their nipples sucked by another actor, THIS actor would be penetrating the other actor via their nipples. Alternatively, if THIS actor is putting a penis or strap-on in the Vagina of another Actor, THIS actor would be "penetrating" the other actor via their penis/strap-on.
 
|Whether or not this action is considered as "penetrating". i.e. If THIS actor is having their nipples sucked by another actor, THIS actor would be penetrating the other actor via their nipples. Alternatively, if THIS actor is putting a penis or strap-on in the Vagina of another Actor, THIS actor would be "penetrating" the other actor via their penis/strap-on.
 
|True or False
 
|True or False
 +
|Yes
 
|-
 
|-
 
|will_occur_inside_target
 
|will_occur_inside_target
 
|Whether or not this action will occur "inside". i.e. If THIS actor is climaxing and they keep their Penis inside another actor, THIS action would be considered as occurring "inside" the other actor. Alternatively, if this actor is Climaxing, but they pull out of the another actor at the end, THIS action would NOT be considered as occurring "inside".
 
|Whether or not this action will occur "inside". i.e. If THIS actor is climaxing and they keep their Penis inside another actor, THIS action would be considered as occurring "inside" the other actor. Alternatively, if this actor is Climaxing, but they pull out of the another actor at the end, THIS action would NOT be considered as occurring "inside".
 
|True or False
 
|True or False
 +
|Yes
 
|}
 
|}
 
=Actor Self Interactions=
 
 
<pre>
 
          <T n="actor_self_interactions">
 
            <U>
 
              <E n="action_type">ORALJOB</E>
 
      <L n="overlays_to_apply_to_target">
 
        <U>
 
                  <T n="overlay_type">CUM</T>
 
          <L n="overlay_body_locations">
 
            <E>BELLY</E>
 
          </L>
 
        </U>
 
      </L>
 
              <T n="is_penetrating_target">False</T>
 
              <T n="will_occur_inside_target">False</T>
 
            </U>
 
          </T>
 
</pre>
 
 
Self interactions are essentially the same as Actor Interactions only they apply to the Actor themselves.
 
  
 
=Animation Events=
 
=Animation Events=
Line 647: Line 521:
 
==Overlay Events==
 
==Overlay Events==
 
<pre>
 
<pre>
 +
          <L n="actor_overlay_events">
 
             <U>
 
             <U>
 
      <L n="overlays_to_apply">
 
      <L n="overlays_to_apply">
Line 652: Line 527:
 
                 <E n="overlay_type">CUM</E>
 
                 <E n="overlay_type">CUM</E>
 
          <L n="overlay_body_locations">
 
          <L n="overlay_body_locations">
            <E>MOUTH</E>
+
            <E>VAGINA</E>
 
          </L>
 
          </L>
 
        </U>
 
        </U>
Line 659: Line 534:
 
      <T n="event_end_after_seconds">100.0</T>
 
      <T n="event_end_after_seconds">100.0</T>
 
             </U>
 
             </U>
 +
          </L>
 
</pre>
 
</pre>
  
Line 668: Line 544:
 
!colspan="1"| Description
 
!colspan="1"| Description
 
!colspan="1"| Values
 
!colspan="1"| Values
 +
!colspan="1"| Is Required?
 
|-
 
|-
 
|overlays_to_apply
 
|overlays_to_apply
 
|These are the overlays that will be applied, they will not persist when the animation has finished.
 
|These are the overlays that will be applied, they will not persist when the animation has finished.
 
|A list of overlays to apply. See the next properties for more details.
 
|A list of overlays to apply. See the next properties for more details.
 +
|Yes
 
|-
 
|-
 
|overlay_type
 
|overlay_type
 
|The type of overlay to apply.
 
|The type of overlay to apply.
 
|TEARS, BLUSH, CUM, MILK
 
|TEARS, BLUSH, CUM, MILK
 +
|Yes
 
|-
 
|-
 
|overlay_body_locations
 
|overlay_body_locations
 
|A list of locations the overlay will be applied to. i.e. If the "overlay_type" is CUM and "overlay_body_locations" is MOUTH and CHEST, then a Cum overlay will be applied to both the Mouth and Chest.
 
|A list of locations the overlay will be applied to. i.e. If the "overlay_type" is CUM and "overlay_body_locations" is MOUTH and CHEST, then a Cum overlay will be applied to both the Mouth and Chest.
 
|EYES, FACE, MOUTH, CHEST, BELLY, BACK, LOWER_BACK, ANUS, VAGINA, PENIS, BUTT, BUTT_LEFT, BUTT_RIGHT, FEET, NIPPLE_LEFT, NIPPLE_RIGHT, NIPPLE_BOTH
 
|EYES, FACE, MOUTH, CHEST, BELLY, BACK, LOWER_BACK, ANUS, VAGINA, PENIS, BUTT, BUTT_LEFT, BUTT_RIGHT, FEET, NIPPLE_LEFT, NIPPLE_RIGHT, NIPPLE_BOTH
 +
|Yes
 
|-
 
|-
 
|event_start_after_seconds
 
|event_start_after_seconds
 
|The number of seconds from the start of the animation until the event should be triggered within the animation. If not specified, the event will be triggered at the start of the animation.
 
|The number of seconds from the start of the animation until the event should be triggered within the animation. If not specified, the event will be triggered at the start of the animation.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 +
|Yes
 
|-
 
|-
 
|event_end_after_seconds
 
|event_end_after_seconds
 
|The number of seconds from the start of the animation until the event should be stopped within the animation. This value should be greater than the start seconds. If not specified, the event will run until the end of the animation.
 
|The number of seconds from the start of the animation until the event should be stopped within the animation. This value should be greater than the start seconds. If not specified, the event will run until the end of the animation.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 +
|Yes
 
|}
 
|}
  
Line 709: Line 591:
 
!colspan="1"| Description
 
!colspan="1"| Description
 
!colspan="1"| Values
 
!colspan="1"| Values
 +
!colspan="1"| Is Required?
 
|-
 
|-
 
|effect_name
 
|effect_name
 
|The name of the effect to apply. It is case sensitive.
 
|The name of the effect to apply. It is case sensitive.
 
|Text that represents the name of the effect. For example "s40_sim_react_cry_heavy".
 
|Text that represents the name of the effect. For example "s40_sim_react_cry_heavy".
 +
|Yes
 
|-
 
|-
 
|effect_joint_name
 
|effect_joint_name
 
|The name of the bone to apply the effect to. It is case sensitive.
 
|The name of the bone to apply the effect to. It is case sensitive.
 
|Text that represents the name of a bone on the rig of the Sim.
 
|Text that represents the name of a bone on the rig of the Sim.
 +
|Yes
 
|-
 
|-
 
|event_start_after_seconds
 
|event_start_after_seconds
 
|The number of seconds from the start of the animation until the event should be triggered within the animation. If not specified, the event will be triggered at the start of the animation.
 
|The number of seconds from the start of the animation until the event should be triggered within the animation. If not specified, the event will be triggered at the start of the animation.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 +
|Yes
 
|-
 
|-
 
|event_end_after_seconds
 
|event_end_after_seconds
 
|The number of seconds from the start of the animation until the event should be stopped within the animation. This value should be greater than the start seconds. If not specified, the event will run until the end of the animation.
 
|The number of seconds from the start of the animation until the event should be stopped within the animation. This value should be greater than the start seconds. If not specified, the event will run until the end of the animation.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 +
|Yes
 
|}
 
|}
  
Line 747: Line 634:
 
!colspan="1"| Description
 
!colspan="1"| Description
 
!colspan="1"| Values
 
!colspan="1"| Values
 +
!colspan="1"| Is Required?
 
|-
 
|-
 
|cas_part_ids
 
|cas_part_ids
 
|A list of decimal identifiers for CAS Parts to equip.
 
|A list of decimal identifiers for CAS Parts to equip.
 
|Number without decimals.
 
|Number without decimals.
 +
|Yes
 
|-
 
|-
 
|event_start_after_seconds
 
|event_start_after_seconds
 
|The number of seconds from the start of the animation until the event should be triggered within the animation. If not specified, the event will be triggered at the start of the animation.
 
|The number of seconds from the start of the animation until the event should be triggered within the animation. If not specified, the event will be triggered at the start of the animation.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 +
|Yes
 
|-
 
|-
 
|event_end_after_seconds
 
|event_end_after_seconds
 
|The number of seconds from the start of the animation until the event should be stopped within the animation. This value should be greater than the start seconds. If not specified, the event will run until the end of the animation.
 
|The number of seconds from the start of the animation until the event should be stopped within the animation. This value should be greater than the start seconds. If not specified, the event will run until the end of the animation.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 
|A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead.
 +
|Yes
 
|}
 
|}
  
 
[[Category:DeviousDesires]]
 
[[Category:DeviousDesires]]

Latest revision as of 01:27, 12 April 2022

The content in this article is intended for Mature Adults Only and may feature topics which may be uncomfortable for some viewers.
By reading the contents of this page, regardless of whether or not you have read this warning, you give your consent to viewing the contents.
By giving your consent, you relinquish your right to publicly criticize, slander, or shame the contents of this page, those using the contents referenced on this page, the colonolnuttymodswiki website itself, and its contributors.
You have been warned.

Preface

The following tutorial will go through the process of creating an animation snippet for use with Devious Desires. We will start with a complete snippet first and break it down along the way.

Directory

References

Tutorial

Here we have a complete snippet and what we should end up with in the end.

Full Example

<?xml version="1.0" encoding="UTF-8"?>
<I c="DeviousDesiresAnimationPackage" i="snippet" m="deviousdesires.animations.animation_tuning" n="Example_Animations" s="12345678">
  <T n="has_devious_desires_animations">True</T>
  <L n="animations_list">
    <U>
      <T n="animation_raw_display_name">Test Animation Name</T>
      <T n="animation_author">DeviousDesires</T>
      <T n="animation_stage_name">test_animation_name_dd</T>
      <L n="animation_locations">
      	<E>FLOOR</E>
      </L>
      <T n="animation_object">
      	<T n="object_animation_clip_name">DD:PosePack_12345_set_2</T>
      </T>
      <E n="animation_category">TEASING</E>
      <T n="animation_length">60.0</T>
      <L n="animation_tags">
      	<E>AGGRESSIVE</E>
      </L>
      <L n="animation_actors_list">
        <U>
          <T n="actor_id">0</T>
          <T n="actor_animation_clip_name">PosePack_201802211432198955_set_1</T>
          <E n="actor_animation_category">TEASING</E>
          <E n="actor_sim_type">ADULT_HUMAN</E>
          <L n="required_sexual_organs">
            <E>PENIS</E>
          </L>
	  <L n="actor_unequip_list">
	    <E>BOTTOM</E>
	  </L>
	  <L n="actor_tags">
	    <E>AGGRESSOR</E>
	    <E>DOM</E>
	    <E>IS_FORCING</E>
	  </L>
          <L n="actor_interactions">
            <U>
              <T n="target_actor_id">1</T>
              <E n="action_type">ORALJOB</E>
	      <L n="overlays_to_apply_to_target">
	        <U>
                  <E n="overlay_type">CUM</E>
	          <L n="overlay_body_locations">
	            <E>VAGINA</E>
	          </L>
	        </U>
	      </L>
              <T n="is_penetrating_target">False</T>
              <T n="will_occur_inside_target">False</T>
            </U>
          </L>
        </U>
        <U>
          <T n="actor_id">1</T>
          <T n="actor_animation_clip_name">PosePack_201802211432198955_set_2</T>
          <E n="actor_animation_category">TEASING</E>
          <E n="actor_sim_type">ADULT_HUMAN</E>
          <L n="required_sexual_organs">
            <E>VAGINA</E>
          </L>
	  <L n="actor_unequip_list">
	    <E>BOTTOM</E>
	  </L>
	  <L n="actor_tags">
	    <E>NON_AGGRESSOR</E>
	    <E>SUB</E>
	    <E>BEING_FORCED</E>
	  </L>
          <L n="actor_interactions">
            <U>
              <T n="target_actor_id">0</T>
              <E n="action_type">TEASING</E>
	      <L n="overlays_to_apply_to_target">
	        <U>
              	  <E n="overlay_type">CUM</E>
	          <L n="overlay_body_locations">
	            <E>MOUTH</E>
	          </L>
	        </U>
	      </L>
              <T n="is_penetrating_target">True</T>
              <T n="will_occur_inside_target">True</T>
            </U>
          </L>
        </U>
      </L>
    </U>
  </L>
</I>

The above, is a simple animation containing two actors. Lets break it down.

Animation

Starting with the Animation Properties. We'll exclude the actor list and discuss that a bit later.

    <U>
      <T n="animation_raw_display_name">Test Animation Name</T>
      <T n="animation_author">DeviousDesires</T>
      <T n="animation_stage_name">test_animation_name_dd</T>
      <L n="animation_locations">
      	<E>FLOOR</E>
      </L>
      <L n="animation_locations_by_tag">
      	<E>FUNC_YOGA_MAT</E>
      </L>
      <L n="animation_custom_locations">
      	<T>1234</T>
      </L>
      <T n="animation_object">
        ...
      </T>
      <E n="animation_category">TEASING</E>
      <T n="animation_length">60.0</T>
      <L n="animation_tags">
        ...
      </L>
      <L n="animation_props_list">
        ...
      </L>
      <L n="animation_actors_list">
        ...
      </L>
    </U>

Below you will find each of the elements, what they do or are for, and what values are ok to put within them.

Element Name Description Values Is Required?
animation_raw_display_name This is what will be used for sorting as well as displaying (If an animation_display_name is not provided) The value can be any string/text you want it to be. It is recommended to make this name unique from ALL other animations, so it is easily identifiable! Yes
animation_author The name of the author of this animation, more than likely your own name. The value can be any string/text you want it to be. Yes
animation_stage_name This is used when identifying stages names. When another animation specifies its next stage animation within "animation_next_stages", this is the value that will be checked against. This name should be absolutely unique from ALL other animations. It should also never contain any spaces or non letter, non number characters! Underscore is fine. No
animation_locations This is a collection of named locations your animation will be available at. In this case, we are specifying FLOOR, meaning the animation will ]be available on the floor. For a complete list of named animation locations, take a look at this page Animation Locations Kind of, if animation_custom_locations and animation_locations_by_tag are not provided.
animation_custom_locations This is a collection of custom locations your animation will be available at. In this case, we are specifying 12345 and 15432, meaning the animation will ]be available for objects with the custom id of 12345 and 15432. The Custom Id (Also known as UID) of objects can be found by SHIFT+CLICK on the object -> Devious Desires -> Show Available Animations (testingcheats on may be required). The Terrain will always have the UID of -1, use animation_locations above to make an animation available for the floor instead. The UID of Objects. Kind of, if animation_locations and animation_locations_by_tag are not provided.
animation_locations_by_tag This is a collection of Game Tags to specify a location your animation will be available at. In this case, we are specifying FUNC_YOGA_MAT, meaning the animation will be available on any object tagged with FUNC_YOGA_MAT. For a complete list of tags, take a look at this page CommonGameTag Kind of, if animation_locations and animation_custom_locations are not provided.
animation_object This is an object that details information related to the Object of the Animation, such as the animation clip it should play and events to play on it. Animation Objects will be covered further down. No
animation_category The category of the animation. This may be removed in the future, when tags are used exclusively. HANDJOB, FOOTJOB, ORALJOB, TEASING, TITJOB, VAGINAL, ANAL, CLIMAX, DANCING Yes
animation_length The duration of the animation in real time seconds. A float (decimal number) indicating the number of seconds the animation will take in real time. Yes
animation_next_stages A list of animations that can be progressed to or chosen automatically after this animation has finished. These are the "animation_stage_name" of those animations. The "animation_stage_name" of the animations the animations that can be progressed to automatically. No
animation_tags A list of tags that describe the animation. i.e. BREASTFEEDING for a breastfeeding animation. AGGRESSIVE for an aggressive/rape animation. ROUGH for a Rough/bdsm animation. Check the Animation Tags page for details on other Special Tags! It is recommended you use also use a tag matching your animation category, so it'll be good to go when the animation category is no longer used. For the proper use of this specific property, please take a look at this page Animation Tags For a complete list of Animation Tags, take a look at this page Animation Tags No
animation_props_list A list of props to spawn and use during the animation, we will cover this further down! You can have as many props as your animation needs. No
animation_actors_list A list of actors and their properties, we will cover this further down! You can have as many actors as your animation needs. Yes

Animation Object

      <T n="animation_object">
      	<T n="object_animation_clip_name">DD:PosePack_12345_set_2</T>
        <L n="object_effect_events">
          <U>
	    <T n="effect_name">s40_obj_shower_spray</T>
	    <T n="effect_joint_name">_FX_waterShower_0</T>
	    <T n="event_start_after_seconds">0.0</T>
	    <T n="event_end_after_seconds">100.0</T>
          </U>
        </L>
      </T>


Below you will find each of the elements, what they do or are for, and what values are ok to put within them.

Element Name Description Values Is Required?
object_animation_clip_name The name of the Clip file. The name of the clip file and the instance identifier of that clip SHOULD equate to each other. The name of a Clip file. Yes
object_effect_events A list of events that will apply effects to the Object either for the entire animation or for specific parts of an animation. Effect events will be covered further down, under Animation Events. No

Props

      <L n="animation_props_list">
        <U>
          <T n="prop_id">0</T>
          <T n="prop_name">Dildo 1</T>
          <E n="prop_type">BASIC</E>
          <T n="prop_animation_clip_name">DD:PosePack_201809101826573059_set_2</T>
          <L n="prop_guids">
            <T>12345</T>
            <T>76547</T>
          </L>
	  <L n="prop_effect_events">
	    <U>
	      <T n="effect_name">ep1_photography_flash</T>
	      <T n="effect_joint_name">_FX_</T>
	      <T n="event_start_after_seconds">0.0</T>
	      <T n="event_end_after_seconds">100.0</T>
	    </U>
	  </L>
        </U>
      </L>


Below you will find each of the elements, what they do or are for, and what values are ok to put within them.

Element Name Description Values Is Required?
prop_id This is what identifies the prop within the animation, for example when an error occurs or we need to do something with a specific prop, we'll use this property to locate it. i.e. Prop 2 interacts with Prop 0 A non decimal number (integer) that needs to be unique from all other props within THIS animation. Yes
prop_animation_clip_name The name of the Clip file. The name of the clip file and the instance identifier of that clip SHOULD equate to each other. The name of a Clip file. Yes
prop_name A name used for logging the prop and being able to identify the prop. It may be used as a display name in various cases. Text that represents the name of the prop that should be unique to all other props. Yes
prop_type The type of prop this is. BASIC, TONGUE Yes
prop_guids A list of decimal identifiers that point to prop objects. When a prop is to be spawned, one out of all of these guids will be chosen at random to be used. Decimal identifiers of Objects. Yes
prop_effect_events A list of events that will apply effects to the Prop after it is spawned, either for the entire animation or for specific parts of an animation. Effect events will be covered further down, under Animation Events. No

Actors

      <L n="animation_actors_list">
        <U>
          <T n="actor_id">0</T>
          <T n="actor_animation_clip_name">PosePack_201802211432198955_set_1</T>
          <E n="actor_animation_category">TEASING</E>
          <E n="actor_sim_type">ADULT_HUMAN</E>
          <L n="required_sexual_organs">
            <E>PENIS</E>
          </L>
	  <L n="actor_unequip_list">
	    <E>BOTTOM</E>
	  </L>
	  <L n="actor_tags">
	    <E>AGGRESSOR</E>
	    <E>DOM</E>
	    <E>IS_FORCING</E>
	  </L>
          <L n="actor_interactions">
            <U>
              <T n="target_actor_id">1</T>
              <E n="action_type">ORALJOB</E>
	      <L n="overlays_to_apply_to_target">
	        <U>
                  <E n="overlay_type">CUM</E>
	          <L n="overlay_body_locations">
	            <E>VAGINA</E>
	          </L>
	        </U>
	      </L>
              <T n="is_penetrating_target">False</T>
              <T n="will_occur_inside_target">False</T>
            </U>
          </L>
          <L n="actor_overlay_events">
            ...
          </L>
          <L n="actor_effect_events">
            ...
          </L>
          <L n="actor_equip_cas_part_events">
            ...
          </L>
        </U>
        <U>
          <T n="actor_id">1</T>
          ...
        </U>
      </L>


Below you will find each of the elements, what they do or are for, and what values are ok to put within them.

Element Name Description Values Is Required?
actor_id This is what identifies the actor within the animation, for example when another actor is interacting with this actor, they'll use this property to locate them. i.e. Actor 2 applies overlay to Actor 0 A non decimal number (integer) that needs to be unique from all other actors within THIS animation. Yes
actor_animation_clip_name The name of the Clip file. The name of the clip file and the instance identifier of that clip SHOULD equate to each other. The name of a Clip file. Yes
actor_animation_category The category or type of action this actor is receiving by other Actors. For example, if Actor 2 is doing vaginal with Actor 0, Actor 0 would have their category be Vaginal. Keep in mind, this property will likely be removed in favor of tags in the future! HANDJOB, FOOTJOB, ORALJOB, TEASING, TITJOB, VAGINAL, ANAL, CLIMAX, DANCING Yes
actor_sim_type This is the type of Sim that may take this slot. It specifies the Age, Species, and Occult Type that may take this slot. Please note that Non-Occult Sim Types may be taken by Occult Sim Types. i.e. ADULT_HUMAN may be taken by ADULT_HUMAN_VAMPIRE, but ADULT_HUMAN_VAMPIRE may not be taken by ADULT_HUMAN. For a full list of Sim Types check out Common Sim Types Yes
required_sexual_organs A list of the Sexual Organs this Actor slot requires a Sim to have in order for the Sim to take this slot. Only Sims with all of the listed Sexual Organs will be allowed to take this slot. If PENIS is listed and a Sim with a VAGINA takes this slot, a Strap-on will be equipped automatically. If no "sexual_organs" are provided, this slot will be available for all variations of Sexual Organs. PENIS, VAGINA, BREASTS No
actor_unequip_list A list of clothing items to removed from Sims that take this Actor slot. i.e. BOTTOM will remove their lower body outfit, such as their pants. Do not keep this property if you do not want to unequip anything. TOP, BOTTOM, HANDS, FEET, ALL No
actor_tags A list of tags that describe the actor slot. i.e. For BREASTFEEDING animations, add the BREAST_MILK_SOURCE tag to the Actor that is GIVING milk and the BREAST_MILK_DRINKER tag to the Actor that RECEIVING milk (Their hunger will fill, milk levels will drop, etc.). For AGGRESSIVE animations, add the AGGRESSOR tag to the Actor that is the attacker, and the NON_AGGRESSOR tag to the Actor that is the victim. For ROUGH animations, add the DOM tag to the Actor that is Dominant, and the SUB tag to the Actor that is Submissive. Check the Animation Tags and Animation Actor Tags pages for details on other Special tags! It is recommended you also add a tag matching your actor animation category, so it'll be good to go when the actor animation category is no longer used. For the proper use of this specific property, please take a look at this page Animation Tags For a complete list of Animation Actor Tags, take a look at this page Animation Actor Tags No
actor_interactions A list of interactions this Actor does to themselves or other Actors. i.e. Actor 0 is penetrating Actor 1 and will apply overlay to them. Actor interactions will be covered further down. Yes
actor_overlay_events A list of events that will apply overlays to the Actor either for the entire animation or for specific parts of an animation. Overlay events will be covered further down, under Animation Events. No
actor_effect_events A list of events that will apply effects to the Actor either for the entire animation or for specific parts of an animation. Effect events will be covered further down, under Animation Events. No
actor_equip_cas_part_events A list of events that will apply CAS Parts to the Actor either for the entire animation or for specific parts of an animation. At the end of the animation, if any CAS Parts were replaced, it will put those CAS Parts back on the outfit. CAS Part events will be covered further down, under Animation Events. No

Actor Interactions

          <L n="actor_interactions">
            <U>
              <T n="target_actor_id">1</T>
              <E n="action_type">ORALJOB</E>
	      <L n="overlays_to_apply_to_target">
	        <U>
                  <E n="overlay_type">CUM</E>
	          <L n="overlay_body_locations">
	            <E>VAGINA</E>
	          </L>
	        </U>
	      </L>
              <T n="is_penetrating_target">False</T>
              <T n="will_occur_inside_target">False</T>
            </U>
            <U>
              <T n="target_actor_id">2</T>
              ...
            </U>
          </L>


Below you will find each of the elements, what they do or are for, and what values are ok to put within them.

Element Name Description Values Is Required?
target_actor_id This is the identifier of the Actor RECEIVING this action from THIS actor. i.e. Actor 1 (This actor) is penetrating Actor 0 (target_actor_id), so this value would be 0. A non decimal number (integer) that is a reference to another actor in THIS animation. You also reference the same Actor to indicate the actor is doing something to themselves. Yes
action_type The type of action THIS Actor is performing to the Target Actor. Right now it has the same values as Animation Category, but may be changed in the future! HANDJOB, FOOTJOB, ORALJOB, TEASING, TITJOB, VAGINAL, ANAL, CLIMAX, DANCING Yes
overlays_to_apply_to_target These are the overlays THIS actor will apply to the Target Actor. If a CUM overlay is applied to the VAGINA and the action is flagged as Penetrating and Will Occur Inside, the Target actor may become pregnant! A list of overlays to apply to the Target actor. See the next properties for more details. Yes, but can be empty.
overlay_type The type of overlay to apply to the Target Actor. TEARS, BLUSH, CUM, MILK Yes
overlay_body_locations A list of locations the overlay will be applied to. i.e. If the "overlay_type" is CUM and MOUTH and CHEST are specified for "overlay_body_locations", then a Cum overlay will be applied to both the Mouth and Chest of the Target Actor. EYES, FACE, MOUTH, CHEST, BELLY, BACK, LOWER_BACK, ANUS, VAGINA, PENIS, BUTT, BUTT_LEFT, BUTT_RIGHT, FEET, NIPPLE_LEFT, NIPPLE_RIGHT, NIPPLE_BOTH, INNER_THIGH, LEFT_INNER_THIGH, RIGHT_INNER_THIGH, OUTER_THIGH, LEFT_OUTER_THIGH, RIGHT_OUTER_THIGH Yes
is_penetrating_target Whether or not this action is considered as "penetrating". i.e. If THIS actor is having their nipples sucked by another actor, THIS actor would be penetrating the other actor via their nipples. Alternatively, if THIS actor is putting a penis or strap-on in the Vagina of another Actor, THIS actor would be "penetrating" the other actor via their penis/strap-on. True or False Yes
will_occur_inside_target Whether or not this action will occur "inside". i.e. If THIS actor is climaxing and they keep their Penis inside another actor, THIS action would be considered as occurring "inside" the other actor. Alternatively, if this actor is Climaxing, but they pull out of the another actor at the end, THIS action would NOT be considered as occurring "inside". True or False Yes

Animation Events

Overlay Events

          <L n="actor_overlay_events">
            <U>
	      <L n="overlays_to_apply">
	        <U>
              	  <E n="overlay_type">CUM</E>
	          <L n="overlay_body_locations">
	            <E>VAGINA</E>
	          </L>
	        </U>
	      </L>
	      <T n="event_start_after_seconds">0.0</T>
	      <T n="event_end_after_seconds">100.0</T>
            </U>
          </L>

Below you will find each of the elements, what they do or are for, and what values are ok to put within them.

Element Name Description Values Is Required?
overlays_to_apply These are the overlays that will be applied, they will not persist when the animation has finished. A list of overlays to apply. See the next properties for more details. Yes
overlay_type The type of overlay to apply. TEARS, BLUSH, CUM, MILK Yes
overlay_body_locations A list of locations the overlay will be applied to. i.e. If the "overlay_type" is CUM and "overlay_body_locations" is MOUTH and CHEST, then a Cum overlay will be applied to both the Mouth and Chest. EYES, FACE, MOUTH, CHEST, BELLY, BACK, LOWER_BACK, ANUS, VAGINA, PENIS, BUTT, BUTT_LEFT, BUTT_RIGHT, FEET, NIPPLE_LEFT, NIPPLE_RIGHT, NIPPLE_BOTH Yes
event_start_after_seconds The number of seconds from the start of the animation until the event should be triggered within the animation. If not specified, the event will be triggered at the start of the animation. A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead. Yes
event_end_after_seconds The number of seconds from the start of the animation until the event should be stopped within the animation. This value should be greater than the start seconds. If not specified, the event will run until the end of the animation. A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead. Yes

Effect Events

          <L n="actor_effect_events">
            <U>
	      <T n="effect_name">s40_sim_react_cry_heavy</T>
	      <T n="effect_joint_name">b__Penis_Tip01</T>
	      <T n="event_start_after_seconds">0.0</T>
	      <T n="event_end_after_seconds">100.0</T>
            </U>
          </L>

Below you will find each of the elements, what they do or are for, and what values are ok to put within them.

Element Name Description Values Is Required?
effect_name The name of the effect to apply. It is case sensitive. Text that represents the name of the effect. For example "s40_sim_react_cry_heavy". Yes
effect_joint_name The name of the bone to apply the effect to. It is case sensitive. Text that represents the name of a bone on the rig of the Sim. Yes
event_start_after_seconds The number of seconds from the start of the animation until the event should be triggered within the animation. If not specified, the event will be triggered at the start of the animation. A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead. Yes
event_end_after_seconds The number of seconds from the start of the animation until the event should be stopped within the animation. This value should be greater than the start seconds. If not specified, the event will run until the end of the animation. A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead. Yes

Equip CAS Part Events

          <L n="actor_equip_cas_part_events">
            <U>
	      <L n="cas_part_ids">
	        <T>34948</T>
	      </L>
	      <T n="event_start_after_seconds">0.0</T>
	      <T n="event_end_after_seconds">100.0</T>
            </U>
          </L>

Below you will find each of the elements, what they do or are for, and what values are ok to put within them.

Element Name Description Values Is Required?
cas_part_ids A list of decimal identifiers for CAS Parts to equip. Number without decimals. Yes
event_start_after_seconds The number of seconds from the start of the animation until the event should be triggered within the animation. If not specified, the event will be triggered at the start of the animation. A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead. Yes
event_end_after_seconds The number of seconds from the start of the animation until the event should be stopped within the animation. This value should be greater than the start seconds. If not specified, the event will run until the end of the animation. A floating point number. Using decimal values can give you more flexibility, such as specifying a number of milliseconds instead. Yes