NpcRaiders
Raid night, any night. Players call a squad of armed NPC raiders onto their own base and defend it wave after wave. It's safe, self-contained raid content for solo players, small groups and PvE servers, with no waiting for a real raider.
The raiders spawn near the base, pick a side and work through it layer by layer with rockets and explosives, then push in through the holes they make. Wipe out every wave before time runs out to win the reward. Lose the TC, or run out the clock, and the raiders win.
Fully sandboxed. Only players authorized on the targeted TC can hurt the raiders, and the raiders only fight those players. Nobody else can interfere, and the raiders never wander off to bother the rest of the server.
Note
New in 2.0.0: smarter raiding AI with roles, raiders that don't know where your TC is, pushing in through breaches, a fully configurable raid HUD you can move in game, Loottable and CustomLoot support, and SimplePVE support. Configs from 1.9.x upgrade themselves, there's nothing to delete.
Video Showcase
Features
The raid
Self-raid events. Players call raiders on a base they're authorized on. Nobody else's base can be targeted.
Waves. Set the NPCs per wave, the number of extra waves and the delay between them, from a quick skirmish to a full siege.
Time limit. Every wave has to be cleared before the event timer runs out. Chat warns you 60 and 30 seconds before the end.
MLRS strikes (optional). On chosen waves an MLRS barrage spreads across the base. Set the spread, the damage and whether it can hurt building blocks.
Block repairs (optional) during the event, so players can't just hammer their walls back.
Raiders that actually raid
Real aim. Every rocket goes at the first wall or door between the raider and its target, so a base gets opened up layer by layer instead of splashing the outside.
Roles. Each wave is split into Rocketeers who circle the base and fire rockets, Breachers who walk up and plant C4 or satchels, and Assault raiders who come in closer and hunt defenders. You set the split per tier.
They don't always know where your TC is. Turn it off per tier and the raiders pick one random side and dig in from there, like a real raid group. On the wave you choose (the last wave by default) they find the TC and go straight for it.
Pushing in. When a wall or door breaks, a few raiders go through the gap toward the TC.
Breach alerts. Defenders get a chat message telling them which side was breached.
No friendly fire. Raiders never kill each other, whatever the weapon, and the MLRS strike can't hurt them either.
Raid HUD
Live raid card for everyone authed on the TC: wave, time left, raiders left, TC health and status lines such as MLRS strikes, the raiders finding your TC, or the next wave countdown.
Fully configurable. Position, background color and material, frame, hazard tape, icon background, icon (image URL, png ID, or item shortname with skin) and every text color. All text comes from the lang file, so it can be translated.
Move it in game. Admins nudge or snap it with /raidme hudpos, and the position is saved to the config.
Players can hide it with /raidme hud.
Tiers and economy
Unlimited raid tiers. Easy, Medium, Hard, Expert and Nightmare come built in, each with its own AI tuning. Add as many as you like, each with its own permission.
Per-tier tuning. NPC count, waves, health, names, kits, aim, damage scales, AI behaviour, loot, cost and reward.
Pay to raid. Charge any item (Scrap by default), Economics money or ServerRewards points.
Win rewards. Give an item, Economics money, ServerRewards points or a kit, to the starter or to everyone on the TC.
Sell it in your shop. A console command starts a raid for a player from any shop or GUI plugin.
Fair play
Locked-down combat. No griefing and no stray damage to bystanders.
Cooldowns. A raid cooldown, plus a separate TC-auth cooldown so nobody re-auths a cupboard to farm events.
VIP cooldowns. Give permission groups their own shorter cooldowns.
Queue. At the maximum number of running raids, new events wait in line and players are told when it's their turn.
Location checks. No raids underground, in deep water, or on terrain you block (icebergs, ice sheets and cliffs by default).
Loot and stats
NPC loot from anywhere. AlphaLoot profiles, Loottable presets, CustomLoot presets, your own loot files, or vanilla scientist loot.
Build loot files in game. Put items in your inventory and type /raidme loot add <name>. Done.
Corpses are locked to the raid's members, so nobody else can steal the loot.
Leaderboards. /raidme stats opens a Top 25 screen for wins, losses, kills, deaths and waves, plus your own stats.
Kits support. Dress and arm each tier's raiders to match its difficulty.
Server friendly
PvE friendly. Works with SimplePVE, TruePVE and LifeSupport. The raid's damage rules keep working even while your PvE plugin is switched off for a PvP or purge schedule.
Every message in the player's own language. All chat and HUD text is in the lang file.
Light on the server. Raiders scan for targets twice a second instead of every frame.
How a raid works
Start it. Stand in your building area and type /raidme buy <type>. The cost is taken, or you join the queue if the server is busy.
Get ready. You get a short warning before the first wave, and the raid HUD appears.
Defend. Raiders spawn around the base, take up positions and start working through your walls. Breachers walk in with explosives, and when a wall falls some raiders push inside. Chat tells you where they broke through.
Win or lose.
Result
When
✅ Win
Every raider in every wave is dead before the timer runs out
❌ Loss
The raiders destroy your tool cupboard
⏱️ Time's up
The timer runs out with raiders still alive: no reward
Everyone authorized on that TC fights together. A win pays the reward and adds to your stats.
Raid tiers
Each tier is a preset in the config with its own permission, so you can sell them separately or bundle them into ranks. The built-in tiers come tuned like this:
Tier
Permission
NPCs per wave
Waves
Knows the TC
Rockets every
Pushers
Easy
npcraiders.easy
10
3
No (finds it on the last wave)
8-14s
Off
Medium
npcraiders.medium
15
4
No (finds it on the last wave)
6-11s
2
Hard
npcraiders.hard
20
5
Yes
5-9s
3
Expert
npcraiders.expert
30
5
Yes
4-8s
4
Nightmare
npcraiders.nightmare
30
6
Yes
3-6s
5
Note
Add your own tier: copy a tier block in the config, give it a new lowercase name and permission, then add matching entries under Raid Buy Options and Raid Reward Options. The new permission is registered on reload.
Raider AI
Every tier has an AI behaviour block in the config.
Roles
Role
What it does
Rocketeer
Circles the base on the stand-off ring and fires rockets at whatever is between it and the target
Breacher
Walks up to the wall in its way, plants an explosive from the tier's explosive list, then falls back
Assault
Stands closer, sees further and goes after defenders on walls and roofs
Rocketeers and Assault raiders also walk in to plant an explosive now and then, instead of firing a rocket (20% of the time by default).
Does the raid know where the TC is?
Yes: raiders circle the whole base and aim straight at the TC.
No: they pick one random side and aim for the middle of the base. If the middle is already blown open, they switch to the nearest standing low wall. On the wave you set (0 = the last wave) they find the TC, move to its side and go for it, and the HUD tells the defenders.
Pushing in
When a wall or door of the raided base breaks, up to the tier's max pushers go through the gap toward the target, shooting the next piece in their way. Only Breachers and Assault raiders push.
Tip
Raiders firing too many rockets? Seconds between rockets counts per raider, so 20 raiders firing every 5-10 seconds is still 2-4 rockets a second across the raid. Raise both numbers for a slower siege, or raise the Breacher share for more explosives.
Permissions
Permission
Allows
npcraiders.use
Using /raidme to view and start raids
npcraiders.<tier>
Starting that raid tier (for example npcraiders.hard)
npcraiders.admin
Admin commands: cancel raids, clear data, loot files, HUD position, debug view
npcraiders.nocooldown
Skipping the raid and TC-auth cooldowns
npcraiders.nocost
Starting raids for free
npcraiders.vip1 / vip2 / vip3
Shorter cooldowns (set in Raid Vip Options, add as many as you like)
Commands
The chat command is /raidme by default. You can rename it in the config.
Players
Command
Description
/raidme
Help menu: the tiers you can use, with NPC and wave counts
/raidme buy
Every tier you can buy, with its cost
/raidme buy <type>
Start a raid of that tier on the base you're authorized on
/raidme stats
Open the leaderboards and your personal stats
/raidme hud
Hide or show the raid HUD
Admins
Command
Description
/raidme reload all
Cancel every running raid
/raidme reload player <name>
Cancel one player's raid
/raidme clear
Wipe all stored cooldowns and player data
/raidme loot add <name>
Create a loot file from your inventory, or add your inventory to one
/raidme loot clear <name>
Remove all items from a loot file
/raidme hudpos
Show a preview of the raid HUD and its current position
/raidme hudpos left|right|up|down [pixels]
Move the HUD (10px by default) and save it to the config
/raidme hudpos anchor <name>
Snap the HUD to topleft, top, topright, left, center, right, bottomleft, bottom or bottomright
/raidme hudpos reset
Put the HUD back in its default spot
/raidme debug
Draw every raider's role, state, destination and aim, plus the ring, target and breaches (needs a real admin)
/raidme terrain
Debug: shows the terrain colliders and water depth where you stand (for the block list)
Server console
Command
Description
npcraiders buy <type> <playerID>
Start a raid purchase for a player (for shops and GUI plugins)
npcraiders.debug
One line per running raid: wave, raiders alive by role, fighting, pushing, breaches and time left
NPC loot
Loot only drops when the tier has Npc drop loot on death set to true. Each corpse uses the first source that's set up, in this order:
AlphaLoot: profile names in AlphaLoot profile names For Npc Loot
Loottable: custom preset names in Loottable custom preset names For Npc Loot
CustomLoot: preset names in CustomLoot preset names For Npc Loot
Your own loot files: names in Npc drop loot config names
Vanilla scientist loot, when none of the above is set
If a list has more than one name, each corpse gets one at random. If a plugin isn't loaded or a preset doesn't exist, that source is skipped and the console tells you once.
Making your own loot file
Put the items you want raiders to drop into your inventory.
Type /raidme loot add <name>.
(Optional) Open oxide/data/NpcRaiders/LootProfiles/<name>.json and set the min / max number of items to drop. If you leave them at 0, a corpse drops between 1 and all of the file's items. Each item's amount ranges from 1 to the amount you had when you created it, and you can change those too.
Add the name to a tier's Npc drop loot config names.
Hosting partner
Installation
Upload NpcRaiders.cs to oxide/plugins.
Grant the basic and tier permissions, for example:
oxide.grant group default npcraiders.use
oxide.grant group default npcraiders.easy
(Optional) Install Kits and create kits for each tier's raiders.
Set the costs and rewards in the config, then reload.
Stand in your base and type /raidme buy easy.
Note
Updating from 1.9.x? Just replace the file. Your config keeps all its settings and gets the new ones added on load. Upgraded tiers get the standard AI values (raiders know the TC, rockets every 5-10s, up to 3 pushers). A fresh config gets the per-tier values from the table above.
Configuration
Key settings explained
Setting
What it does
BuyType
Item ID (for example -932201673 = Scrap), economics or serverrewards
BuyAmmount
How much it costs to start the raid
RewardType
Item ID, economics, serverrewards or kit
RewardAmmount
Amount of the reward, or the kit name for kit
rewardAll
true = every online player authorized on the TC is rewarded (items for each, money or points split between them), false = only the starter
How many extra waves
Waves after the first one, so 2 means 3 waves in total
Mlrs waves and amounts
Which wave fires MLRS, and how many rockets ("1": 6 = 6 rockets on wave 1)
Mlrs spread radius
How wide the barrage lands around the base. 0 uses the size of the base
Mlrs damages building blocks
Whether the strike can damage the raided base. Only the raided base can ever be hit
External Tc Scan Range
How far from the event the target base's TC is searched for. If none is found, the event ends
NPC aimConeScale
Raider accuracy: lower = more accurate
NPCs know where the TC is
false = raid one random side until the TC is found
Wave the NPCs find the TC
The wave they find it on when they don't know it. 0 = the last wave
Stand-off ring
How far from the base centre Rocketeers stand. Bigger bases push the ring out on their own
Seconds between rockets
Per raider, the wait between rockets
Role split in percent
How each wave is split between Rocketeers, Breachers and Assault raiders
Push into the base / Max NPCs pushing in at once
Whether raiders go through breached walls and doors, and how many at a time
Background material
Any UI material. Blur materials are skipped unless Use blur materials is true, because they wash out on Rust's new render pipeline
Icon image
An image URL or a png ID. Leave it empty to show the item from Icon item shortname and Icon item skin
Block raid in colider
Terrain names where raids can't start. Use /raidme terrain to find names
Optional plugins
None are required. NpcRaiders connects to these on its own when they're installed:
Plugin
Used for
Kits
Raider loadouts and kit rewards
AlphaLoot
Raider corpse loot profiles
Loottable
Raider corpse loot from custom presets
CustomLoot
Raider corpse loot from presets
Economics
Raid costs and money rewards
ServerRewards
Raid costs and point rewards
SimplePVE / TruePVE
Raid combat works on PvE servers
LifeSupport
Revives are handled correctly during an event
FAQ
Can players raid other players with this?
No. A player can only start an event on a base they're authorized on, so it's self-contained PvE content.
Can I sell different difficulty levels?
Yes. Every tier has its own permission, NPC count, waves, AI behaviour, loot, cost and reward. Sell each tier on its own or bundle them into ranks.
What does it depend on?
Nothing. Kits, AlphaLoot, Loottable, CustomLoot, Economics, ServerRewards, SimplePVE/TruePVE and LifeSupport are optional and connect on their own.
Do I need to delete my config when updating to 2.0.0?
No. New settings are added to your existing config on load, and everything you've set stays as it is.
The raiders only shoot rockets, I want more C4.
Raise the Breacher share in the role split, lower Seconds between explosive plants, or raise the walk-in plant chance. Make sure the tier's Explosive item shortnames list isn't empty.
Can I move or restyle the raid HUD?
Yes. As an admin use /raidme hudpos to move it in game. Colors, material, icon and every text color are in the Raid HUD section of the config, and the text itself is in the lang file.
The HUD background looks washed out or see-through.
Leave Use blur materials on false. Blur materials are broken on Rust's new render pipeline, so they're skipped unless you turn that on.
Can players skip paying or the cooldown?
With permissions: npcraiders.nocost makes raids free and npcraiders.nocooldown skips both cooldowns. That's useful for staff testing or as a VIP perk.
Can players re-auth on TCs to farm rewards?
No. A separate TC-auth cooldown stops players from authorizing on a cupboard and starting another event straight away.
What happens when too many raids are running?
New raids wait in a queue. Players see their place in line and get a warning 60 seconds before their event starts.
Can I start a raid from my shop plugin?
Yes. Run npcraiders buy <type> <playerID> from the shop as a server command.
Raids won't start on my map's terrain.
That terrain is in the Block raid in colider list. Stand there, use /raidme terrain to see the collider names, and remove the one you want to allow.
For developers
void NpcRaidersEventStart(BasePlayer player, ulong playerID, string raidType, Vector3 location, object raidEvent)
void NpcRaidersEventEnd(BasePlayer player, ulong playerID, string raidType, Vector3 location)
void NpcRaidersGenerateEventMembers(BasePlayer player, ulong playerID, string raidType, int totalWaves, Vector3 location, object raidEvent)
Support
Need help or found a bug? Open a support ticket on this page.
Check out my other plugins