Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
VikingLove
18+. Vikings who skip their pants get a little more realistic, and there is a new way to greet a friend up close. Best discovered in game.
By SWATsqad
| Last updated | a month ago |
| Total downloads | 356 |
| Total rating | 0 |
| Categories | Mods Client-side Server-side |
| Dependency string | SWATsqad-VikingLove-1.4.3 |
| Dependants | 1 other package depends on this package |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350README
VikingLove
18+ only. This mod contains adult content. If that is not for you, do not install it.
Everything else is best discovered in game. Short version:
- Vikings who go without pants get a little more realistic.
- Walk up to a friend, look at them, press E. Press E again when you are done. Which side you approach from matters.
- There is also a chat command. Type
/jerkand find out. - It does not have to be a friend.
Every player needs the mod. The server only needs it if you want the server to decide the settings for everyone, which is optional; see Server settings below.
Install
- r2modman / Thunderstore Mod Manager: install like any other mod.
- Manual: unzip into
BepInEx/plugins/swats-VikingLove/. Keep the.objand.wavfiles next to the DLL.
A config file appears at BepInEx/config/swats.valheim.vikinglove.cfg after the first run.
Every key is described inside it.
Spoilers
Stop here if you want the surprise.
.
.
.
.
.
What it actually does
- No pants, no secrets. Any player with an empty leg slot shows a low-poly, deliberately exaggerated penis in the game's art style. It uses the player's own skin texture and colour, so it matches whatever you picked at character creation. Put pants on and it disappears.
- Make love. Look at another player and press E. They freeze and bend over, you snap
in behind them and thrust, a moaning sound plays for everyone nearby, and both of you see
"Love is in the air. Your pierce skill is slowly increasing." Both participants gain one
level per 100 seconds in the Spears skill while it lasts. Either player presses E to
stop. It also stops if someone dies, teleports, walks away, or after 30 seconds.
The prompt only appears while your own pants are off. Chains work: if a friend is already
busy behind someone, you can get behind the friend, and so on. Only a player whose rear is
not yet taken can be chosen.
From the front the prompt becomes "Go down on": you kneel and service them instead.
The mesh is hidden on both of you while that lasts, since at that range it clips through
heads and bodies; the head motion and the sound carry it. Turn that off with
HideMeshDuringOralif you would rather see the clipping, with its own sound on top of theirs. Only players can be serviced this way; creatures are always taken from behind, and from up to 6 metres away so you are not standing in reach of their claws with your pants down. The person at the front of a chain can be taken from behind and serviced from the front at the same time. Kneelers cannot be chained. When any session in a group runs its full duration, the whole group finishes together, so late joiners get Rested too. - Creatures. Anything alive can be taken from behind: enemies, deer, your tamed boar. Bosses are excluded. It stops fighting, its health drains over the session (kept at 1 until the end), A full-length session drains half its maximum health and costs you 100 stamina, so it softens a fight rather than winning it for you. Run out of stamina and you stop. It does not die on its own; the config can turn that back on. You line up with the top of its rear legs, or its pelvis, or the lower rear of its body when the rig has neither, and it stretches as far as it needs to in order to connect. Config section Enemies has the switches and a per-second drain cap for boss fights.
- Size varies with skin colour. Lightest skin gets 90% of the base size, darkest gets 110%.
- Relax emote. With pants off, the relax emote makes the left hand stroke it.
The
/jerkchat command does the same on demand, during any emote or while moving, speeds up over 10 seconds and ends with the spray. Type it again to cancel early. - Physics. It swings when you run, spin on the spot, jump or land, and keeps wobbling for a second or two afterwards. Purely visual and computed on each machine separately.
- Finish line. Let a session run its full 30 seconds and both of you get Rested for 10 minutes, a screen shake, sparkles, a message, and five seconds of spray from both tips. Pressing E early gives nothing.
Custom sound
Every file named moan*.wav next to the DLL is loaded and one is picked at random each time
(the receiving partner). Files named oral*.wav do the same for the kneeling partner.
Add, remove or replace files freely (8/16/24/32-bit PCM WAV). No rebuild needed.
Shipped sounds: moan_smm.wav (see Credits) and oral_popsicle.wav.
Config
| Section | Key | Default | Notes |
|---|---|---|---|
| Genitals | Enabled | true | Automatic when the leg slot is empty |
| Genitals | ShowOnFemaleModels | true | |
| Genitals | Scale | 1.0 | 0.2 to 3.0 |
| Genitals | ForwardOffset / UpOffset / TiltDegrees | 0.06 / -0.06 / 20 | Position tuning |
| Genitals | UseBodyShader | true | Set false if it renders black or pink |
| Genitals | FlipWinding | false | Set true if it looks inside-out |
| Genitals | FlatShading | false | Faceted instead of smooth |
| Genitals | SizeAtLightestSkin / SizeAtDarkestSkin | 0.9 / 1.1 | Size by skin colour |
| Genitals | LightestSkinLuminance / DarkestSkinLuminance | 1.0 / 0.25 | Calibration for the above |
| Genitals | SkinToneOverride | (empty) | Hex colour to force the base tone |
| Love | Enabled | true | |
| Love | StartDistance | 3.0 | Metres |
| Love | CoupleDistance | 0.50 | Gap behind the partner |
| Love | OralDistance / OralHeadBob / KneelEmote | 0.55 / 0.07 / kneel | Kneeling partner placement and motion |
| Enemies | Enabled / AllowTamed / AllowBosses | true / true / false | Who counts |
| Enemies | AnchorHeightFraction | 0.35 | Fallback anchor height on unnamed rigs |
| Enemies | StartDistance | 6 | Metres from which a creature can be picked |
| Enemies | DrainPercentOfMaxHealth / DrainCapPerSecond / FinishKills | 50 / 0 / false | Health drain |
| Enemies | StaminaPerSession | 100 | Stamina the initiator spends |
| Love | MaxDurationSeconds | 30 | 0 = no limit |
| Love | ThrustRate / ThrustAmplitude | 2.2 / 0.13 | Per second / metres |
| Love | BendDegrees | 70 | Partner bend-over angle |
| Love | InitiatorLeanDegrees | 12 | Initiator forward lean |
| Love | AimDownDegrees | 10 | Extra downward aim during a session |
| Love | StretchEnabled / StretchMax / StretchOverlap | true / 4 / 0.10 | Lengthens to reach the partner |
| Love | ReceiverScale | 0.4 | Receiving partner's mesh size, dangling |
| Love | HideMeshDuringOral | true | Hide the mesh on both players during oral |
| Emote | StrokeEnabled / StrokeEmote / StrokeRate | true / relax / 2.6 | Left-hand stroke during the emote |
| Emote | JerkEnabled / JerkSeconds / JerkFinishMessage | true / 10 / Phew. | The /jerk command |
| Physics | Enabled / Stiffness / Damping | true / 45 / 2.2 | Spring feel |
| Physics | LandingKickDegrees / RunSwayDegrees / TurnSwayDegrees | 35 / 18 / 25 | Swing sizes |
| Physics | MaxDegrees | 70 | Hard limit |
| Love | FinishEnabled / FinishRestedMinutes / FinishMessage | true / 10 / Refreshed! | Reward for a full-length session |
| Love | RequirePantsDown | true | Prompt only with your own pants off |
| Love | PartnerYawDegrees | -20 | Partner turn while pinned, negative = left |
| Love | SoundVolume / SoundRange | 1.0 / 30 | |
| Love | SkillLevelsPerTenSeconds | 0.1 | 0 = off |
| Love | FinishSpraySeconds | 5 | 0 = off |
| Love | SkillName | Spears | Any SkillType name |
| Love | StartMessage | Love is in the air... | Center-screen text |
Server settings
Install the mod on the server as well and its own config file becomes the authority. Everyone who joins is handed those values and uses them until they disconnect, then their own come back. Nobody's config file is ever written to or lost.
If the server does not run the mod nothing changes: no settings are sent and everyone uses their own file, exactly as before.
Two settings are always personal and never sent, because they are about your own ears:
Sound/Volume and Sound/Range. Three more are local because they only matter for fixing
rendering on your own machine: UseBodyShader, FlipWinding and FlatShading.
Changing the server's config file takes effect immediately. The mod watches the file, re-reads it when you save, and hands the new values to everyone connected within about a second. No restart of the server or of anybody's game.
Two settings are the exception and need a relog, because the mesh is built from them once when
the game starts: FlipWinding and FlatShading. Both are local troubleshooting switches.
vikinglove_reload in the console does the same thing by hand if you ever need it.
Credits
- Sound: "Screaming loudly at the hardcore gay sex penetration in a hotel" by SexyMaleMuscle on Freesound, https://freesound.org/people/SexyMaleMuscle/sounds/795355/. Licensed under CC BY-NC 4.0. Changes: trimmed to seconds 50 to 90, converted to mono 22.05 kHz WAV, compressed and normalized, fade in and fade out added.
- Oral sound:
oral_popsicle.wav, a popsicle sound effect supplied by the mod author, converted to mono 22.05 kHz, compressed and normalized. - Model and textures were generated for this mod.
This mod is free and non-commercial. Do not sell it or bundle it in anything sold.