LAB/05 — INVENTORY

PetBradley

A pocket-sized Bradley APC that follows its owner, guns down whatever attacks them, and cannot hurt a friend.
← BACK TO STORE

Changelog

v1.0.419 Sept 2026
  • Fixed default config loot crate names.
v1.0.319 Sept 2026
  • Fixed OnPlayerDeath pet removal
v1.0.214 Sept 2026
  • Fixed auto targeting of enemies without player or pet being attacked.
  • Pet auto hides when mounted, in raidable bases bubble, and reappears when you leave he area.
v1.0.110 Sept 2026

No notes for this release.

PetBradley screenshot 1
1 / 3

The problem

Bradley is the best thing Facepunch ever put on the island, and your players meet it twice a wipe — once at Launch Site and once as a corpse. The rest of the wipe it sits in the compound doing nothing for you: no reward to hand out, no VIP perk anyone actually wants, no reason to open another crate.

Every "pet" plugin answers that with a scientist in a hat or a re-skinned bear. PetBradley hands the player the tank.

What PetBradley does

Spawns a real BradleyAPC — the game's own vehicle, its own AI, its own turret — at a quarter scale, with its gun turned down to something a base fight can survive.

It follows its owner around, scans for enemies every 0.45 seconds, and fires on players, NPCs or animals depending on what you allow. It never targets its owner. It never targets the owner's team. Damage to either is zeroed before it lands, so no friendly-fire ticket ever reaches your Discord.

Walk away and it drives after you. Climb a lighthouse and it stops trying to drive up the wall, sits still for three seconds, then reappears at your side. Fall off a cliff and it eases down instead of teleporting.

Bodyguard, not a hunter

By default the pet is defensive. It only fires on things that hit its owner, a teammate, or the pet itself, and it forgets an attacker 20 seconds after their last hit. Your players can walk past a boar, a scientist camp or another player without the tank starting a war.

Flip DefensiveOnly off and it attacks any allowed target in range, the way it did in 1.0.1.

Steps aside when it should

The pet hides itself when its owner mounts anything (horse, car, heli, any seat), enters a Raidable Bases event, noclips, or vanishes. It comes back on its own when the reason is gone. No tank left under a minicopter, no tank inside somebody's raid bubble.

Each trigger is a switch in the config.

Three ways to hand one out

Turn on any combination:

Chat command — /pb, gated behind a permission. The straightforward VIP perk.

A thrown flare — the pet ships as a skinned flare item. Throw it, the tank appears. Store the pet and the flare comes back to your inventory. Sell it in your shop, hand it out as an event prize, put it in a kit.

Crate loot — off by default. Turn it on and the flare drops from any crate list you name, at any chance you name. Elite crates, heli crates, Bradley's own crate — your call.

Built the right way

No Harmony patch, no reflection into private state. Every server-wide hook — damage, targeting, loot spawn, item use — stays unsubscribed while no pet is out, and the 0.15s movement tick does not even exist until the first one spawns. A server with the plugin loaded and nobody using it pays nothing for it.

Pets are cleaned up on owner death, on disconnect and on unload. Nothing survives a restart to haunt your map.

Features

  • Real Bradley AI at a configurable scale, from 0.1 up to full size
  • Bullet damage and max health set by config, live-editable in game
  • Main cannon off by default — turn it on if your server wants the noise
  • Defensive by default: only shoots what hit the owner, a teammate, or the pet
  • Owner and owner's team are immune, and never targeted
  • Targeting toggles for players, NPCs and animals
  • Auto-hide when mounted, in a Raidable Bases event, in noclip, or vanished — returns by itself
  • Follows through steps and slopes, eases down drops, warps back when stuck or left behind
  • Deploy by command, by thrown flare, by crate loot — any combination
  • Storing the pet returns the flare item
  • Zero hook cost while no pet is out
  • Full language file, every message editable
  • Developer API and hooks, shared with PetHeli and PetScientist
  • Oxide and Carbon
  • No dependencies

Commands

CommandAccessDescription
/pbpetbradley.spawnToggle: spawn a pet, or store the one you have
/pb spawnpetbradley.spawnSpawn a pet
/pb dismiss / store / pickuppetbradley.spawnStore the pet, returning the flare item
/pb give <player>petbradley.giveGive a player a deploy flare
/pb scale <0.1-1>petbradley.adminSet the pet scale, live, and save it to config
/pb dmg <number>petbradley.adminSet bullet damage, live, and save it to config

Permissions

  • petbradley.spawn — use /pb to spawn and store
  • petbradley.flare — deploy by throwing the flare item
  • petbradley.give — use /pb give
  • petbradley.admin — use /pb scale and /pb dmg

Configuration

{
  "Scale": 0.25,
  "BulletDamage": 2.5,
  "StoppingDist": 3.0,
  "SearchRange": 60.0,
  "MaxStepHeight": 0.75,
  "MaxFollowDistance": 30.0,
  "MaxVerticalGap": 4.0,
  "UseCannon": false,
  "MaxHealth": 300.0,
  "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,
    "InRaidableBase": true,
    "WhenNoclip": true,
    "WhenVanished (needs the Vanish plugin)": true
  },
  "PickupReturnsItem": true,
  "DeployItemShortname": "flare",
  "DeployItemName": "Pet Bradley",
  "DeploySkin": 1357924680,
  "LootChance": 0.08,
  "LootCratePrefabs": [ "crate_normal", "crate_normal_2", "crate_elite", "crate_mine", "heli_crate", "bradley_crate" ]
}

Scale and BulletDamage apply to a pet already out the moment you change them with /pb scale or /pb dmg. MaxFollowDistance is the leash: past it the pet stops driving and reappears beside its owner.

Developer API

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

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

Requirements

Any current Rust server on Oxide or Carbon. No other plugins needed. Optional: Raidable Bases and Vanish, for those two auto-hide triggers.

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.