Creating An Animation Snippet for DeviousDesires

From ColonolNuttyModsWiki
Jump to navigation Jump to search
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