LAB/05 — INVENTORY

PetScientist

A scientist NPC that follows its owner through bases, doors and monuments, shoots whatever attacks them, and deals reduced damage. Spawn it with a command, a thrown flare, or find one in a crate.
← BACK TO STORE

Changelog

v1.0.019 Sept 2026

Initial Release

PetScientist screenshot 1
1 / 2

What it is

A scientist that belongs to a player. It walks on the game's own navmesh, so it follows you through your base, up your stairs, into monuments and across the map. Lose it off a cliff or behind a closed door and it warps to you after 3 seconds. It never gets stuck for long.

By default it is a bodyguard, not a hunter. It only shoots things that hit you, your teammates, or the pet itself. Shoot a boar and it stands there. Let a wolf bite you and it opens fire.

11 variants, one config list

Pick which scientists your players can have. Each one is a real Facepunch scientist prefab with its own gun and outfit:

full (random loadout), lr300, mp5, pistol, shotgun, heavy, arctic, peacekeeper, nvg, roam, junkpile

Turn any variant off. Set the default. Add your own prefab paths if you want.

Three ways to get one

  • Command — /ps or /ps heavy. Permission-gated.
  • Flare item — a skinned flare named Pet Scientist (heavy). Throw it, the pet spawns where it lands. Sell it in your shop, give it as a reward, hand it out with /psgive.
  • Loot crates — off by default. Turn it on and set a chance; the flare shows up in normal, military, elite, mine, heli and Bradley crates.

Made for servers, not just for fun

  • Damage scale. Default 0.1, so the pet is a distraction and a helper, not a free kill machine. Set it to 0 for a pure decoy or 1 for full damage.
  • Defensive only. On by default. Turn it off and the pet attacks any valid target within SearchRange.
  • Target filters. Players, NPCs, animals. Each one a switch.
  • Team-safe. Never shoots the owner or teammates. Never damages them. Ignores shots from them.
  • Safe zones. Never fires inside one.
  • Auto-hide. The pet steps away when you mount anything (horse, car, heli, chair), noclip, or vanish. It comes back by itself when you stop. No lost pets under vehicles.
  • Clean death. Pet dies: no corpse, no loot bag, no free gun on the ground. Owner dies or disconnects: pet is gone.
  • Nothing persists. Pets never save to the map file. Restart the server, no orphan scientists.
  • Plays nice with PetBradley and PetHeli. It knows the other two pets and never fires on them.

Commands

CommandPermissionDescription
/pspetscientist.spawnSpawn the default variant, or store your live pet and get the flare back
/ps <variant>petscientist.spawnSpawn that variant
/ps variantsnoneList enabled variants
/ps storenoneStore your pet (also dismiss, pickup)
/ps scale <0.25-2>petscientist.adminSet pet size, saves to config
/ps dmg <number>petscientist.adminSet damage scale, saves to config
/psgive <player> [variant]petscientist.giveGive a player a Pet Scientist flare

Permissions

  • petscientist.spawn — use /ps
  • petscientist.flare — throw the flare item
  • petscientist.give — use /psgive
  • petscientist.admin — change scale and damage

Configuration

{
  "Scale": 1.0,
  "DamageScale (multiplier on every hit the pet lands)": 0.1,
  "MaxHealth": 200.0,
  "StoppingDist": 3.0,
  "SearchRange": 40.0,
  "MaxFollowDistance": 30.0,
  "MaxVerticalGap": 4.0,
  "StuckSeconds (how long the pet may be stuck before it warps to you)": 3.0,
  "OwnerCanHurtPet": false,
  "DefaultVariant": "full",
  "Variants": [ { "Name": "full", "Prefab": "assets/rust.ai/agents/npcplayer/humannpc/scientist/scientistnpc_full_any.prefab", "Enabled": true }, "..." ],
  "Modes": { "Command": true, "Flare": true, "LootCrates": false },
  "Targets": { "Players": true, "NPCs": true, "Animals": true },
  "DefensiveOnly (only attack what hits the owner, a teammate, or the pet)": true,
  "AggroSeconds (how long an attacker stays a target)": 20.0,
  "AutoHide": {
    "WhenMounted (car, heli, horse, any seat)": true,
    "WhenNoclip": true,
    "WhenVanished (needs the Vanish plugin)": true
  },
  "PickupReturnsItem": true,
  "DeployItemShortname": "flare",
  "DeployItemName": "Pet Scientist",
  "DeploySkin": 1357924682,
  "LootChance": 0.08,
  "LootCratePrefabs": [ "crate_normal", "crate_normal_2", "crate_elite", "crate_mine", "heli_crate", "bradley_crate" ]
}

Every chat message is in the language file.

Developer API

Same surface as PetBradley and PetHeli, so one integration covers all three:

  • API_IsPet(BaseEntity), API_GetPetOwner(BaseEntity), API_HasPet(ulong), API_StorePet(ulong), API_SuspendPet(ulong, bool)
  • Hooks: CanSpawnPet(BasePlayer) (return non-null to block), OnPetSpawned(BaseEntity, BasePlayer), OnPetRemoved(BaseEntity, ulong)

Requirements

  • Oxide or Carbon. One file, no extensions, no Harmony.
  • Optional: Vanish (for the vanished auto-hide).

Pairs with

PetBradley — a mini Bradley that rolls beside you. PetHeli — a mini attack heli that circles overhead. All three share the same commands, config shape and API.

Support

Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.