video games and other stuff made by Tay the Ferret.
this is the complete documentation for every XML tag you can use in the Pokémon-Amie configuration files.
some sections are still incomplete. just ask me if you need to know how they work.
(back to the modding tutorial)
the whole file needs to be wrapped inside <config> </config> tags.
each touch definition assigns a name to a group of collision spheres. the name gets referenced in later parts of the config file.
name that will be referenced later in the config file.
a comma-separated list of strings to match against collision sphere names.
a collision sphere is part of this touch group if any part of it contains any of the sub-strings.
this tag is required unless you have an <inverse> tag.
(bug: you should probably be able to have a touch definition with only a <toy /> tag and no sub-strings, but currently that doesn't work. )
make this touch definition the inverse of another touch definition. (include all collision spheres not included in the specified touch definition.)
activate this touch when the player isn't touching any collision spheres.
this tag requires the touch definition to have <sub_strings> or <inverse> too. there's a built-in touch definition named "none" if you need it.
include all collision spheres on the current sex toy object, if any.
there are some pre-defined touch definitions named "any" and "none". you don't have to define them yourself, but you can use their names later in the config file.
"any" is active when any collision sphere on the character is being touched. (it doesn't include collision spheres on the sex toy.)
"none" is active when no collision spheres are being touched.
if you name a touch definition "rub_sound_genitals", the game will play a different rubbing sound whenever touching that group. this is to indicate when the player is arousing the Pokémon.
if you name a touch definition "rub_sound_pre_orgasm", the game will play a different rubbing sound whenever touching that group during the pre-orgasm pose. this is to indicate when the Pokémon is approaching orgasm!
the pre-orgasm sound overrides the genital sound during the pre-orgasm pose.
<config> ... <--! activated when touching the penis, sheath, or balls. --> <touch> <name>genitals</name> <sub_strings>penis,sheath,balls</sub_strings> </touch> <--! activated when touching any collision spheres that aren't included in the "genitals" touch definition. --> <touch> <name>not_genitals</name> <inverse>genitals</inverse> </touch> <--! activated when touching butt spheres, sex toy spheres, or touching nothing at all. --> <touch> <name>confused</name> <sub_strings>butt</sub_strings> <toy /> <or_none /> </touch> <--! getting turned on! --> <touch> <name>rub_sound_genitals</name> <sub_strings>penis,balls,pawpad,ear</sub_strings> </touch> <--! so close! --> <touch> <name>rub_sound_pre_orgasm</name> <sub_strings>penis</sub_strings> <toy /> </touch> ... </config>
defines one or more vertex swap states; one per vertex swap group.
the name of this collection of states, referenced later by poses.
activate these states only when the specified touch group is active.
if you don't specify this tag, then these states will become the default (they'll be active unless overridden by a touch or a blink).
values for one vertex swap group.
name of a vertex swap group.
name of the state to activate for this group.
<config> ... <vert_swap> <name>blink</name> <group> <name>eyes</name> <state>shut</state> </group> </vert_swap> <vert_swap> <name>default</name> <group> <name>mouth</name> <state>shut</state> </group> <group> <name>eyes</name> <state>open</state> </group> </vert_swap> <vert_swap> <name>happy</name> <touch>head</touch> <group> <name>mouth</name> <state>smile</state> </group> <group> <name>eyes</name> <state>shut_happy</state> </group> </vert_swap> <pose> ... <vert_swap_blink>blink</vert_swap_blink> <vert_swap>default</vert_swap> <vert_swap>happy</vert_swap> ... </pose> ... </config>
defines fade parameters for a single vertex swap state.
<vert_fade> overrides <vert_swap> for all groups it's active on, so you probably shouldn't use both swapping and fading on the same group. I've only used <vert_fade> for blushing so far.
the name of this fade definition, referenced later by poses.
name of a vertex swap group.
name of the state to fade for this group.
fade in when touching this touch group. fade out when not touching, or when you don't include this tag.
amount of seconds it takes to fade from fully transparent to fully opaque (or the other way around if the player isn't touching).
default: 0.0 (instant)
the minimum transparency from 0.0 to 1.0 (0.0 being fully transparent).
default: 0.0
the maximum transparency.
default: 1.0
<config> ... <vert_fade> <name>blush_fade_in</name> <group>blush</group> <state>on</state> <touch>6.0</touch> <fade_dur>6.0</fade_dur> </vert_fade> <vert_fade> <name>blush</name> <group>blush</group> <state>on</state> <--! keep it faded in even when not touching. --> <fade_min>1.0</fade_min> </vert_fade> ... <pose> ... <--! can only have one vert_fade for the "blush" group in each pose. --> <vert_fade>blush_fade_in</vert_fade> ... </pose> <pose> ... <vert_fade>blush</vert_fade> ... </pose> ... </config>
(I'll write this section if requested.)
defines ejaculation parameters which can be used in any pose.
identifier to be referenced later by poses.
each shot of semen originates from an animation bone on the character. specify its name here.
the semen will shoot in the direction this bone is pointing.
the bone doesn't have to have any vertices weighted to it, but it does need to be marked as a deform bone and have a vertex group named after it (even if that group has no vertices in it).
the full name of the Blender object to use for the semen model.
if the name of the Blender file is cum.blend and the object is horse_cum, then this value would be "cum.horse_cum"
there are multiple models already in cum.blend that you can use.
the full name of the Blender armature object for the semen model.
(for example: "cum.horse_cum_arma".)
the number of times to shoot semen.
default: keep shooting until the pose ends.
the number of seconds between each shot of semen.
how thick or transparent it looks. 0.0 is the most transparent, 1.0 is the most thick.
default: 1.0
affects hard/far the semen will shoot.
default: 1.0
scales the cum mesh.
default: 0.3 (don't ask me why!)
if you use this tag, any poses that use this <cum> definition will not make any <cum_sound>s.
<config> ... <cum> <name>orgasm</name> <attach_bone>penis_tip</attach_bone> <object>cum.horse_cum</object> <armature>cum.horse_cum_arma</armature> <count>3</count> <period>0.667</period> <transparency>0.9</transparency> <power>2.5</power> <scale>0.5</scale> </cum> ... <pose> ... <cum>orgasm</cum> ... </pose> ... </config>
define a sound to be played upon each ejaculation.
you can make multiple <cum_sound> definitions and it'll pick a random one for each ejaculation.
the tags for a <cum_sound> are the same as a <sound>
<config> ... <cum> <name>orgasm</name> ... </cum> ... <cum_sound> <file>snd/flareonCry136.wav</file> <volume>0.2</volume> <pitch_mod_const>1.2</pitch_mod_const> <pitch_mod>4.5</pitch_mod> </cum_sound> <cum_sound> <file>snd/flareonCry136.wav</file> <volume>0.2</volume> <pitch_mod_const>1.4</pitch_mod_const> <pitch_mod>4.0</pitch_mod> </cum_sound> ... <pose> ... <cum>orgasm</cum> ... </pose> ... </config>
defines an animation that can be activated in any pose on top of the main looping animation for that pose.
depending on its blend mode and type, it can be added to the main animation, blended with it, or replace it completely.
an additive animation's influence can change during the course of a pose between 0.0 (no influence) and 1.0 (full influence).
this section might seem complicated, but the rub/look horizontal/vertical animation types are really easy to animate, and you can pretty much copy and paste from Mew's or Zebstrika's or Flareon's XML and adjust values until it looks right!
and if you have a specific effect you want to do with additive animations but can't figure out how, just ask me (email or whatever) and I'll let you know the best way, if it's possible.
identifies this animation and its parameters when it's referenced later by poses.
the name of the Action in Blender.
how this animation will blend with the pose's main animation.
there are 3 blend modes:
"add"
the bone transforms in the additive animation will be added onto the main animation. so any bone left in its default orientation in the additive animation will have no effect on the pose's main animation.
"replace"
the additive animation will fully replace the pose's animation when the additive animation reaches its full influence of 1.0.
when its influence is less than 1.0, it will blend between the main pose's animation and the additive animation.
this only uses bones that have been animated away from their default orientation.
"replace_all"
same as "replace", except every bone from the additive animation will be used, not just the ones with keys on them.
the additive animation's type determines how it will be triggered and what will affect its influence.
there are 7 types:
"fade_loop"
the additive animation is a looping animation.
this can be helpful for gradually fading from the pose's main animation to a looping hip-thrust animation!
it fades from 0.0 influence to 1.0 influence as the player touches a touch group.
"fade_static"
the animation's current frame depends on its influence instead of the current time: it will be at its first frame when its influence is 0.0, and last frame at influence 1.0.
it fades from 0.0 influence to 1.0 influence as the player touches a touch group.
"rub_horizontal"
the animation is static, and its frame depends on how fast player's cursor is rubbing side to side.
I usually use this with animations of the character's head looking right and left so it moves as the player rubs.
"rub_vertical"
same as "rub_horizontal", but for up-and-down rubbing.
"look_horizontal"
the animation is static, and its current frame depends on where on the screen the player is pressing.
I usually just use this to aim the character's head to look at the cursor.
"look_horizontal"
same as "look_horizontal", but for the cursor's y-axis position on the screen.
"penetration"
the animation is static, and its current frame depends on the amount of penetration of the current sex toy, if there is one.
each type has its own values.
the type-specific values are all optional and their defaults are given below.
start fading in while the player is touching this touch group, and fade out when not touching.
default: if you don't use this tag, the animation will just fade out (toward 0.0 influence).
this animation's duration in seconds. it's usually best to have it match the duration of the main pose's animation, but you don't have to do that.
default: 1.0
the time (in seconds) that it takes to fade from 0.0 influence to 1.0 influence (or from 1.0 to 0.0 if not touching).
default: 1.0
the time (in seconds) that it takes to fade from 1.0 influence to 0.0 influence when the additive animation becomes inactive (when the character transitions to a pose without this additive animation).
default: 1.0
the influence to start at every time this animation becomes active (the start of the first pose it's used in).
default: 0.0
(same as "fade_loop".)
(same as "fade_loop".)
(same as "fade_loop".)
(same as "fade_loop".)
makes the blend no longer depend on influence. the animation is always fully blended in as long as the influence is greater than 0.0.
the animation's current frame is still controlled by the influence though.
no default. (it's just an empty tag.)
(same as "fade_loop", except for the default.)
default: "any"
this value corresponds to a point in the animation from 0.0 to 1.0.
the animation settles to the center value when the player is touching the character, moving away from the center the faster they rub.
default: 0.5
the animation moves as fast as it can away from its center when the mouse moves at this speed.
default: 5.0
scale the speed at which the animation's influence changes.
default: 1.0
the animation is more responsive at low smooth values (toward 0.0) and more laggy at high smooth values (toward 1.0).
the animation won't move away from its center at all when smooth is 1.0.
default: 0.9
(same as "rub_horizontal"/"rub_vertical".)
the maximum influence. (so if <range_scale> is 0.5, it will only ever get halfway through the animation.)
"look_horizontal", "look_vertical" types are centered at 0.5 and "penetration" is centered at 0.0, so a <range_scale> of 0.5 would scale the range to [0.25, 0.75] for "look_*" types, and [0.0, 0.5] for "penetration".
default: 1.0
<config> ... <additive_anim> <name>thrust</name> <anim>idle_side_thrust</anim> <blend_mode>replace_all</blend_mode> <type>fade_loop</type> <touch>penis</touch> <anim_dur>1.8</anim_dur> <fade_dur>6.0</fade_dur> <inactive_fade_out_dur>0.75</inactive_fade_out_dur> </additive_anim> ... <pose> ... <add_anim>thrust</add_anim> ... </pose> ... </config>
the name of the pose to start on when a Pokémon is selected.
its default value is the first pose in the XML file.
<config> ... <first_pose>idle</first_pose> ... <pose> <name>whatever</name> ... </pose> <pose> <name>idle</name> ... </pose> ... </config>
the name of the pose that happens right before the Pokémon's orgasm. the game can play a different rubbing sound during this pose.
<config> ... <pre_orgasm_pose>thrusting</pre_orgasm_pose> ... <pose> <name>thrusting</name> ... </pose> <pose> <name>orgasm</name> ... </pose> ... </config>
the name of this pose. referenced in the rest of the config file.
the name of an Action in Blender to use as the main looping animation.
the duration of the main animation in seconds.
the name of the camera animation to use for this pose.
for example, if the Action name is "cam:idle", you'd put "idle" here.
allow a <vert_swap> state to be active in this pose.
you can have multiple <vert_swap> definitions per pose.
if you use this tag, the character will randomly blink during this pose.
this tag specifies which <vert_swap> definition it will switch to while blinking.
you can only have one of these per pose.
allow a <vert_fade> state to be active in this pose.
you can have multiple <vert_fade> definitions per pose, but they're not made to overlap groups like the <vert_swap> tags are; each pose should only have one <vert_fade> per group, unlike <vert_swap>.
activate an additive animation for this pose.
this references an <additive_anim> earlier in the config file.
you can have multiple additive animations in one pose.
if this tag is used, a sex toy will appear for the whole pose.
the name references a toy definition earlier in the config file.
if this tag is used, the character will start ejaculating in this pose.
the name references a cum definition earlier in the config file.
this defines when to transition from this pose to a new one. usually when touching a certain touch group for a certain amount of time.
you can have multiple transitions in one pose.
<config> ... <vert_swap> <name>blink</name> ... </vert_swap> <vert_swap> <name>default</name> ... </vert_swap> <vert_swap> <name>pleasure</name> ... </vert_swap> ... <vert_fade> <name>blush</name> ... </vert_fade> ... <toy> <name>big_horse_dildo</name> ... </toy> ... <cum> <name>orgasm</name> ... </cum> ... <additive_anim> <name>head_rub_x</name> ... </additive_anim> <additive_anim> <name>head_rub_y</name> ... </additive_anim> <additive_anim> <name>sheath_rub</name> ... </additive_anim> ... <pose> <name>orgasm</name> <anim>thrusting</anim> <anim_dur>2.0</anim_dur> <camera_anim>orgasm</camera_anim> <vert_swap_blink>blink</vert_swap_blink> <vert_swap>default</vert_swap> <vert_swap>pleasure</vert_swap> <vert_fade>blush</vert_fade> <toy>big_horse_dildo</toy> <cum>orgasm</cum> <add_anim>head_rub_x</add_anim> <add_anim>head_rub_y</add_anim> <add_anim>sheath_rub</add_anim> <--! there's an example of transitions in a later section --> <transition> ... </transition> <transition> ... </transition> </pose> ... </config>
transitions define when to switch from the current pose to a new one.
a pose can have as many transitions as you want, but each transition only has one trigger.
transitions will only be triggered at the end of the current animation loop so you can smoothly match up the animation for each pose.
describes the conditions that trigger the transition.
there are three types of triggers:
all triggers need a <type> tag, plus any other tags specific to that type.
triggered after touching a certain touch group for an amount of time.
references a touch definition from earlier in the file.
seconds of touching before the transition gets triggered.
triggered after the pose's animation goes through a certain number of loops.
the transition is triggered after this many loops of the pose's main animation.
triggered when one of the additive animations on this pose gets to a certain point.
references an additive animation definition from earlier in the file.
the point in the additive animation that triggers the transition.
it's a number from 0.0 to 1.0. 0.0 is the first frame, 1.0 is the last.
this can be either "greater_or_equal" or "less_or_equal" depending on whether you want to trigger the transition when the animation is above or below the threshold.
the name of the pose to switch to when this transition gets triggered.
if you leave out this tag, the transition will go back to the previous pose.
play a sound effect when the transition is triggered.
the absolute path and filename for the .wav file to play.
how loud the sound is from 0.0 to 1.0.
a volume of 1.0 is really loud, so you should probably start with something like 0.5 and adjust it from there.
multiply the frequency by a constant value (changes the pitch uniformly over the whole sound).
values above 1.0 make it higher and values below 1.0 make it lower.
default: 1.0
makes the pitch/frequency of the sound shift higher or lower as it plays.
it starts out at its normal frequency, then moves higher or lower toward the end of the sound.
values above 1.0 make it higher and values below 1.0 make it lower.
default: 1.0
<config> ... <touch> <name>arousal</name> ... </touch> ... <additive_anim> <name>knot_expand</name> ... </additive_anim> ... <pose> <name>idle</name> ... <--! get aroused after over 3.5 seconds of continuous petting. --> <transition> <trigger> <type>touch</type> <touch_name>arousal</touch_name> <touch_dur>3.5</touch_dur> </trigger> <new_pose>aroused</new_pose> </transition> </pose> <pose> <name>aroused</name> ... <--! orgasm when the knot gets big enough. --> <transition> <trigger> <type>add_anim_threshold</type> <add_anim_name>knot_expand</add_anim_name> <threshold>1.0</threshold> <compare>greater_or_equal</compare> </trigger> <new_pose>orgasm</new_pose> </transition> </pose> <pose> <name>orgasm</name> ... <--! stop orgasm after 5 animation loops. --> <transition> <trigger> <type>anim_loop</type> <loop_count>5</loop_count> </trigger> <new_pose>afterglow</new_pose> <sound> <file>snd/happy_growl.wav</file> <volume>0.35</volume> <pitch_mod>0.8</pitch_mod> </sound> </transition> </pose> <pose> <name>afterglow</name> ... </pose> ... </config>