DoppelExtras
doppel addon that adds fusion support, colored usernames, voice chat, horror mode, and other things!!!Changelog
2.9.6
- Fixed bots never appearing in Fusion (and no name tags):
ColorUtility.ToHtmlStringRGBis stripped in BONELAB and threw 'Method unstripping failed' on every bot. Hex colors are now formatted by the mod itself. (Present since 2.7.0.)
2.9.5
- Player sync start-up: the jaw patch and player-left hook can no longer stop the whole sync from starting; logs
[DoppelFusion] player sync ready.when it is on.
2.9.4
- Name tags sit at Fusion's normal height (offset default 0, scale 1.0; old saved values reset). Offset can now go negative.
2.9.3
- Fixed build error CS0453 on the message-prefix read (calls the Fusion serializer extension explicitly).
2.9.2
- "No Name" and a missing Fusion profile are what other players see when a bot is registered and then removed again straight away (the 2.9.0 rig-compare bug fixed in 2.9.1 did exactly that). Check that you are on 2.9.1 or newer.
- A bot's Fusion rig now gets 5 seconds to appear before the bot is removed (it was instant).
- Whenever the mod removes a bot's Fusion player it now writes the reason to the MelonLoader log (
[DoppelFusion] removing player N: ...). If names are still missing, send me those lines. - Not compiled or tested.
2.9.1
- Fusion fix. Since 2.1.0 the host checked that each bot's Fusion player wore the bot's own rig using a plain object comparison. Two wrapper objects for the same rig are not always the same object, so the check could fail for every bot and remove it again and again, which breaks Fusion sync. It now compares the rigs' native pointers, and only removes a bot if the mismatch lasts 3 seconds.
- The voice step can no longer stop pose sending if it errors.
- The dark-areas idea for Rabid was dropped as asked; it was never released.
- I could not run Fusion here, so this is my best match for what broke. If bots still do not show up for other players, send me the MelonLoader log from the start of a hosted session. Not compiled or tested.
2.9.0
- Rabid preset (Horror Presets > Preset 2): the hard one. It rushes you the whole time, decides every 0.25 to 0.6 s, attacks inside 2.15 m with a 70% chance, a 1.5 s cooldown, a 0.35 s wind-up, longer fist time, and never misses. It does not stop and stare. Its "pitch-perfect homing" is the constant rush plus a fresh path to you several times a second.
- Jumpscare Rush (Horror Presets, off by default): from MimicMod. When a horror bot is between 2.5 m and 5 m from you, at most once every 30 seconds it rushes and shouts a "taunt" line.
- MimicMod is now folded in as far as this mod uses it: the stalking numbers (2.8.0) and the jumpscare. Cover-hiding, light flicker, learning and recorded-voice playback are not included, to keep this small. You can remove MimicMod.dll; running both makes them fight over the bots' modes.
- Rabid's "hide in darker areas" is not in: measuring darkness needs lighting data I did not add. Not compiled or tested.
2.8.0
- Horror Presets page with the two smallest presets from the horror list: Docile and Neutral (off by default; "Enabled", "Preset (0 = Docile, 1 = Neutral)", "Only Enemy Bots").
- Built from MimicMod's numbers: a decision every 0.65 to 1.8 s, stalk toward you past 7 m, 22% rush chance, attack inside 2.15 m, 4 s attack cooldown, and a 0.8 s wind-up (standing still) before the fists come out.
- Neutral: the basic mode. It stalks you, sometimes stops and stares, sometimes rushes, and attacks up close, with a 25% chance to swing and miss.
- Docile: easy mode. Slower decisions, never rushes, tries to stop it sprinting, a longer 9 s attack cooldown and 1.4 s wind-up, and a 70% chance to miss.
- I did not copy MimicMod's code or merge its DLL. It also drives Doppel bots, so run only one of them at a time or they will fight over the bots' modes.
- Cover, jumpscares, learning, light flicker and recorded-voice playback from MimicMod are not included, and neither are the other five presets.
- "Stops it sprinting" and "miss" are approximations: Doppel does not expose a sprint speed or a hit chance, so Docile clears its run flag and a "miss" is a wind-up that ends without the fists coming out. Not compiled or tested.
2.7.0
- Random colored usernames (Names & Tags > "Random Colored Names", on by default). Each bot's name tag gets a random bright color: half the bots a solid color, half a two-color gradient (one color per letter, Unity rich text). Enemies keep the red tag while "Enemy Red Name Tags" is on. "Re-roll Name Colors" picks new ones.
- Optional: "Colored Names Also In Fusion Profile (host)" (off by default) puts the same colored text in the bot's Fusion nickname. Whether other players see the colors depends on their Fusion name tag showing rich text, which I have not checked, so it is off by default.
- From DOPPEL_IDEAS.txt I picked only this one because it is small and self-contained. The rest (presets, neutral doppels, commands, "grab this", gamemode support, map requests, horror mode) each need new behavior inside Doppel itself, so they are not in this build.
- Not compiled or tested.
2.6.1
- Bots use Brain mode automatically (Fixes > "Bots Use Brain Automatically", on by default). About 1.5 seconds after a bot appears, if it is still in Stand mode it is switched to Brain. Bots you already put in another mode, and Clone / Exact / Replay bots, are left alone. Turn the toggle off to keep Doppel's own default. It only affects bots that appear after the toggle is on; existing bots keep their mode.
- Not compiled or tested.
2.6.0
- Pitch varies per voice line. Every custom WAV line is played between -1 and +1 semitone (randomly, a new value each time) so repeats don't sound identical. "Vary Pitch Per Line" (on) and "Pitch Range (+/- semitones)" (default 1, up to 4) are on the Voice Chat page.
- The same pitch is applied to the voice sent over Fusion voice chat, so other players hear the same line you do. Speed changes slightly with pitch, like a record speeding up. Avatar vocals are played by the game and are not changed on your side.
- Not compiled or tested.
2.5.0
- Bots talk with players (Situational Voice > "Bots Talk Back To Players (Fusion too)", on by default; needs Bots Talk on). A calm bot within talking range answers a player who has just finished speaking (about a second later, with one of your "convo" lines or an avatar vocal), and a bot that a player walks up to waves and says hello. Works for you and for every other player in a Fusion lobby: the host reads each player's incoming voice chat to tell when they speak. It reacts to when someone talks, not to what they say. Each bot waits 10 to 25 seconds between answers.
- Voice to other machines was already added in 2.2.0 and applies to these lines too: when you host, the bot's voice goes out through Fusion voice chat, so players without the mod hear it. It needs the host toggle in Voice Chat (on by default). As a non-host the bots are not Fusion players, so other people cannot hear them.
- Not compiled or tested.
2.4.0
- Melee grabs use a real grip and point up (Fixes > "Melee Grab: Real Grip + Point Up", on by default). When a bot is about to grab a melee weapon, the weapon is first turned around the grip so its far end points up, like a force grab turning an upside-down object upright. If Doppel picked a blade-end grip, a handle / hilt / primary grip on the same weapon is used instead when there is one.
- Clone, Exact, Copy and Replay bots are skipped so recorded lessons stay as recorded. Only bots grabbing melee weapons are affected; guns are not.
- The weapon turns instantly rather than smoothly. Not compiled or tested; if a weapon snaps oddly, turn the toggle off and tell me what it did.
2.3.0
- Random avatar from SLZ pallets only (Map Spawning > "Random Avatar From SLZ Pallets Only", off by default). Every bot spawned by the mod (in front of you, random spawn, every spawn, auto-populate) gets a random avatar from the pallets whose id starts with
SLZ.BONELAB; mod avatars are never picked. With Random Sizes on, the size is rolled on top of the avatar's own size. "Re-roll Size Of All Bots" now keeps each bot's current avatar while this is on. If no SLZ avatars are found, the bot keeps your avatar and a warning is logged. - Bots spawned with Doppel's own menu are not changed.
- In a Fusion lobby you host, the new avatar reaches other players through the normal avatar sync. Not compiled or tested.
2.2.0
- Run From Bigger "Enabled" now really stops it. The logic was already switched off, but a flee destination that was already set kept the bot running to it. Turning the feature off (or a threat ending by toggle) now clears that destination.
- Toggle audit. Every one of the 53 settings was checked for a place that reads it. Three did nothing: Tag Height Offset, Tag Size and Fade Starts (m). They now work (size and height adjust the tag on your screen; the tag fades out between Fade Starts and Fade Ends when "Tags Never Fade" is off). Defaults are 0.3 and 1.2, so tags look slightly larger and higher than before until you change them.
- Bot voice is on by default (Voice Chat > "Send Bot Voice To Fusion Players (host)"). It now covers custom WAV lines and avatar vocals: the mod watches each bot's mouth audio source and streams any clip that starts on it. Clips Unity cannot read back (streamed or heavily compressed) cannot be sent.
- Bots say something when they join (Voice Chat > "Bots Say Something When They Join", on by default): about 2 seconds after a bot registers as a Fusion player it plays an idle line, so voice is used right away. Needs Bots Talk on.
- Host only. Not compiled or tested. Players can mute or deafen bots in Fusion like any player.
2.1.1
- Tags never fade (Names & Tags > "Tags Never Fade", on by default). Turn it off to use the old fade distances. This is the tag you see on your own screen; other players' own Fusion name tags follow their Fusion settings.
- Profile descriptions from traits (Names & Tags > "Profile Description From Traits (Fusion)", on by default). Each bot's Fusion profile description is built from the personality Doppel rolled for it (for example "right-handed, quick on its feet, a climber, a sharp shot"), with "Enemy," in front for enemies. Host only, since that is when bots are real Fusion players.
2.1.0
- Bots no longer copy you. A bot's Fusion player is now blocked from ever taking over your rig or sending your pose: a bot id with no bot behind it is ignored, and if a bot's player is wearing any rig other than the bot's own, the mod stops sending and re-registers it.
- Player leaving. When a real player leaves, the mod now does nothing to the bots for 4 seconds (no re-registering, no avatar or grip refresh, no removal). Poses keep sending so nobody freezes.
- Voice to Fusion (Voice Chat page, "Send Bot Voice To Fusion Players (host)", OFF by default). Host only. Sends the bot's custom WAV voice lines through Fusion voice chat as the bot's own voice, so players without the mod hear them. Avatar vocals and other sounds are not sent.
- Not compiled or tested. If the copying still happens, send the MelonLoader log from right after a player leaves.
2.0.2
- Spawning as a client. In a Fusion lobby you can now use the spawn buttons (Map Spawning page: in front of me, random spawn, every spawn, auto-populate) when you are not the host, but only if your Fusion role is Operator or Owner. Anyone else gets "Spawning in a Fusion lobby needs the Operator or Owner role." Hosts and offline play are unchanged.
- Limit: only a host can make bots real Fusion players (the join messages must come from the server). Bots a client spawns are shared through Doppel's own sync, so only players who also have Doppel see them. A one-time message says so.
2.0.1
- Fixed bots' brain turning off. Two causes:
- Conversation waves: Doppel's wave drops the bot into Stand mode and never puts it back, so any Brain bot that waved stopped thinking. The mod now remembers the bot's mode and restores it when the wave ends.
- Fleeing: bots already in Brain mode no longer run from bigger players or bots (they used to stop fighting while "fleeing"). New toggle: Run From Bigger > "Brain-Mode Bots Flee Too" (off by default). Bots that were switched to Brain only to flee still flee, and are only put back if they are still in Brain mode when the threat is gone.
- Plain Follow / Wander / Stand bots behave as before.
2.0.0 - DoppelFusion and DoppelFixes merged into one mod
Remove DoppelFusion.dll and DoppelFixes.dll from Mods and use this one instead; running them together patches the same things twice.
Fusion (from DoppelFusion, host only)
- Every bot is registered as a real Fusion player on the host, with a real
NetworkPlayeron the bot's own rig. Everyone in the lobby, with or without any mod, sees an ordinary player with the bot's name and avatar, in Lobby > Players too. Name changes are pushed to everyone. - The host sends the stock join, avatar, pose, grip, ragdoll, metadata and leave messages with the bot's own small ID as sender. Bot grips on props, static and world grips are synced; grabbing an unsynced prop makes Fusion sync it.
- Damage, teleport and entity-data messages that players aim at a bot are handled on the host (damage calls Doppel's
Bot.NetHit). - Doppel's own roster and pose packets are suppressed while this is on, so players who also have Doppel do not see each bot twice.
- Menu: Doppel Extras > Names & Tags > "Show Bots To All Fusion Players (host)". Turning it off removes the bots from the lobby.
- Spawn menu: Doppel Extras > Map Spawning > "Spawn 1 In Front Of Me" / "Spawn 1 Enemy In Front Of Me" (works regardless of the map-spawning toggle). Spawned bots sync on their own.
Fixed
- Bots teleporting around for other players. Remote copies follow a bot with a PD controller that needs the pelvis velocity, and teleport the copy when it falls too far behind. Doppel moves bots without reliable physics velocity, so the velocity is now measured from the last two pose samples (smoothed, capped at 25 m/s) before each pose is sent.
- Bot mouths copying yours in a Fusion lobby. Fusion's jaw code for a player the host owns reads the host's microphone. Bots now use their own loudness (the WAV or avatar vocal they are playing). Toggle: Names & Tags > "Bot Mouth Uses Its Own Voice (Fusion)".
- BoneMenu sliders: the start value and step were swapped in every slider (the value showed as the step). Fixed in this mod; the older mods (finger mods and so on) still have the same swap.
Fixes (from DoppelFixes)
- Doppel Extras > Fixes: "Despawn All Bots" (clears Doppel's queue, removes every bot, then force-destroys any survivors after 1.5 seconds), "Enemy Red Name Tags", "Vehicle Use" and "Crouch Use" sliders (written to Doppel's
tuning.txt; the same keys and formulas as DoppelFixes, default 1.4 each), and "Reset Vehicles + Crouching".
Notes
- Not compiled or tested by the author. The Fusion part reaches into Fusion internals (names taken from the DoppelFusion build you sent). If Fusion changes, the log shows "[DoppelFusion] Player sync could not start" and bots simply stay local.
- Spawn gun support and the avatar picker / devtools / battle mode ideas were dropped from this version.
- Removed the unused fields that caused the CS0169 warnings.
1.3.0
- Host only, off by default: bots show up to everyone as normal Fusion players (menu: Doppel Extras > Names & Tags > "HOST: Show Bots To Everyone As Players").
Players do not need any mod to see them. The host announces each bot with Fusion's own join message (name, avatar and size included), streams its pose every Fusion tick, updates its avatar when it changes, sends it to players who join later, and removes it with Fusion's own leave message. Each bot also appears in the Lobby > Players list for everyone.
- The bot's name is sent when it is announced (after its synced name is ready, up to 6 seconds), so it cannot be renamed afterwards.
- Only works while you are hosting a lobby. Test with one friend before a public lobby.
- Players who also have Doppel will see each bot twice (Doppel's own copy and the Fusion player). Turn this off for them, or turn Doppel's bot sync off.
- Bots are not real connections: Fusion actions aimed at a bot (kick, teleport, permission changes, voice) do nothing or log an error.
- Not tested by the author. If a lobby misbehaves, turn the toggle off; bots are removed from other players' games right away.
1.2.1
- Fixed the Fusion warning "Attempted to cleanup a PlayerId that was not valid": entries Fusion had already removed (for example on leaving a server) are no longer cleaned up a second time.
1.2.0
- Situational voicelines. Bots react to what happens around them with lines from your own WAVs, sorted in folders under
UserData/DoppelExtras/Voices:idle,assist,death,fall,kill,laugh,panic,taunt,witness,convo. A category with no WAVs falls back to the avatar's own vocals where one fits (laughandtauntstay silent).death: played where a bot goes down or vanishes.kill: the bot that most likely made a kill (nearest fighting bot on the other side), sometimes followed by ataunt.assist: fighting bots on the killer's side that were nearby.panic: bots on the dead bot's side nearby, and a bot that starts running from something bigger.witness: any other bot that can see it happen (line of sight, within 14 m).fall: a bot that lands hard says it; bots nearbylaughat a fall if on the same side, otherwisewitness. Also reacts to the player landing hard.taunt: now and then while fighting.idle: the existing random chatter. WAVs placed directly inVoicesstill count asidle.- Menu: Doppel Extras > Situational Voice (on/off, reaction chance, per-bot cooldown).
- Conversations. Two calm bots on the same side wave, then take turns talking (4 to 8 lines, using
convoWAVs, oridleif there are none), sometimes laughing, and wave again at the end. A bot can walk up to the other one first (toggle). A conversation stops if either bot starts fighting or running, or they wander apart. - Voice WAVs are loaded per category; use "Reload Voices Folder" after adding files.
- Known limits: who killed whom is a guess from who is nearby and fighting. Bots are not turned to face each other; Doppel's own meeting behaviour may or may not do that.
1.1.0 (for Doppel 1.4.0)
- Name tags now use Fusion's own head UI and name tag (same prefab, font and layout as real players).
- Bots are added to Fusion's Lobby > Players list (this machine only). Fixed: the entries were never actually registered before.
- Map spawning uses Doppel 1.4.0's own spawn routine, falls back to the old method if it is missing.
- Random sizes are applied a moment after spawn and normalised to the avatar's real height (safe for custom avatars).
- Names come from a hash of the bot's network ID, so everyone with the same names.txt sees the same name.
1.0.0
- First version: names, tags, voice chance, flee from bigger, map spawning, climbing, tuning editor.
