diff --git a/1.2/Assemblies/Rimworld-Animations.dll b/1.2/Assemblies/Rimworld-Animations.dll index ac8e119..98f2634 100644 Binary files a/1.2/Assemblies/Rimworld-Animations.dll and b/1.2/Assemblies/Rimworld-Animations.dll differ diff --git a/Source/Comps/CompBodyAnimator.cs b/Source/Comps/CompBodyAnimator.cs index 7ac3e09..4d3c791 100644 --- a/Source/Comps/CompBodyAnimator.cs +++ b/Source/Comps/CompBodyAnimator.cs @@ -244,18 +244,34 @@ namespace Rimworld_Animations { //play sound effect if(rjw.RJWSettings.sounds_enabled && clip.SoundEffects.ContainsKey(clipTicks) && AnimationSettings.soundOverride) { - SoundDef.Named(clip.SoundEffects[clipTicks]).PlayOneShot(new TargetInfo(pawn.Position, pawn.Map)); + - if (AnimationSettings.applySemenOnAnimationOrgasm && (pawn?.jobs?.curDriver is JobDriver_Sex) && clip.SoundEffects[clipTicks] == "Cum") { + SoundInfo sound = new TargetInfo(pawn.Position, pawn.Map); + string soundEffectName = clip.SoundEffects[clipTicks]; - Pawn partner = (pawn.jobs.curDriver as JobDriver_Sex)?.Partner; - if(anim.sexTypes.Contains((pawn.jobs.curDriver as JobDriver_Sex).sexType)) { - SemenHelper.calculateAndApplySemen(pawn, partner, (pawn.jobs.curDriver as JobDriver_Sex).sexType); - } - + if ((pawn.jobs.curDriver as JobDriver_Sex).isAnimalOnAnimal) + { + sound.volumeFactor *= RJWSettings.sounds_animal_on_animal_volume; } + if(soundEffectName.StartsWith("Voiceline_")) + { + sound.volumeFactor *= RJWSettings.sounds_voice_volume; + } + + if (clip.SoundEffects[clipTicks] == "Cum") { + + sound.volumeFactor *= RJWSettings.sounds_cum_volume; + considerApplyingSemen(); + + } else + { + sound.volumeFactor *= RJWSettings.sounds_sex_volume; + } + + SoundDef.Named(soundEffectName).PlayOneShot(sound); + } if(AnimationSettings.orgasmQuiver && clip.quiver.ContainsKey(clipTicks)) { quiver = clip.quiver[clipTicks]; @@ -270,6 +286,19 @@ namespace Rimworld_Animations { calculateDrawValues(); } + public void considerApplyingSemen() + { + if(AnimationSettings.applySemenOnAnimationOrgasm && (pawn?.jobs?.curDriver is JobDriver_Sex)) + { + Pawn partner = (pawn.jobs.curDriver as JobDriver_Sex)?.Partner; + + if (anim.sexTypes.Contains((pawn.jobs.curDriver as JobDriver_Sex).sexType)) + { + SemenHelper.calculateAndApplySemen(pawn, partner, (pawn.jobs.curDriver as JobDriver_Sex).sexType); + } + } + } + public void calculateDrawValues() { /*if(Find.TickManager.TickRateMultiplier > 1 && (lastDrawFrame + 1 >= RealTime.frameCount || RealTime.deltaTime < 0.05f)) {