Join the Game4Freak Discord Get exclusive plugin sneak peeks, talk directly with VisEntities, never miss important updates, and unlock special discount codes!
Raidable Boats

Raidable Boats 1.3.2

Fully automated raidable boats with NPC defenders that cruise the ocean
Skiff.jpg
Brigantine.jpg

Galleon.jpg
Man-o-War.jpg


Important - Patched CopyPaste Required

The official CopyPaste plugin on umod does not yet support PlayerBoats. Until it is updated, you must use the patched version of CopyPaste for Raidable Boats to function. Once the official version adds PlayerBoat support, switch back to it.

Starter Boat Profiles

A collection of ready-made boat profiles and CopyPaste files is available to help you get started quickly. Download them here.

Raidable Boats spawns armed pirate boats that autonomously navigate the ocean. Each boat comes equipped with NPC cannon gunners, a helmsman at the wheel, locked loot containers, and map markers -- creating a naval PvE encounter that players can board, fight through, and plunder.

Boats are built from Copy Paste files, meaning any player-designed boat can become a raidable event. A profile system ties each boat design to a difficulty tier, controlling NPC health, cannon accuracy, loot quality, and rewards. Boats spawn on a timer or are maintained at a target count, cruise between waypoints, and despawn after a configurable lifetime or once the raid is completed.

The plugin handles the full lifecycle: ocean pathfinding, NPC combat (both cannon-mounted and dismounted gunfire), raid engagement tracking, loot milestone announcements, raid completion conditions, reward distribution, and a sinking sequence when the raid is over.

Features

  • Profile system - Define multiple boat designs, each linked to a Copy Paste file and difficulty tier
  • Autonomous navigation - Boats cruise between ocean waypoints, avoid shallow water, ice, monuments, and other raid boats
  • Deep Sea spawning - Boats can spawn and navigate within the Deep Sea zone
  • Cannon NPC gunners - Npcs mount cannons and engage nearby player boats with adjustable accuracy and fire rate
  • Helmsman NPC - An NPC steers the boat; killing the helmsman stops the boat
  • Dismounted combat - Gunners and helmsmen can leave their stations to fight players who board the boat at close range
  • Defender respawn - Killed npcs respawn after a configurable delay
  • Difficulty tiers - Easy, Medium, Hard, and Nightmare tiers that scale NPC health, loot, cannon stats, and rewards
  • Loot generation - Use loot from the Copy Paste file or generate it from configurable loot tables with drop chances
  • Code-locked doors and containers - Doors and storage containers can be randomly locked with code locks
  • Raid completion tracking - Configurable conditions based on loot percentage looted and/or all defenders killed
  • Raid ownership - The first player to engage a boat claims it for themselves and their allies. Non-owners cannot loot, damage, or mount entities on the boat
  • Map markers - Moving vending machine markers with difficulty-colored radius indicators and optional ghost ship map icons
  • Automatic night lighting - Light entities on boats (lanterns, tuna lights, searchlights, ceiling lights, Chinese lanterns, jack o'lanterns) automatically turn on at night and off during the day
  • Reward integration - Distribute Economics currency and Server Rewards points, XPerience XP, and Skill Tree XP on completion
  • Scheduled and maintained spawning - Spawn on a timer, maintain a target count, or both
  • Anti-exploit protections - Block building, entity pickup, steering, sail/anchor/engine/cannon interaction on raid boats
  • Floating loot on sink - Remaining loot drops into the water when the boat sinks
  • Statistics tracking - Per-player statistics including raids completed, per-difficulty breakdowns, NPC kills, helmsman kills, and total damage dealt
  • Boat health- Each difficulty tier can multiply the boat's hull health, allowing harder tiers to have tankier ships
  • Debug visualization - Admin draw commands showing navigation paths, waypoints, speed, and ocean spawn nodes
  • Developer API - Hooks and API methods for external plugin integration

Dependencies

  • Copy Paste -- Required. All boat designs are pasted from Copy Paste files
Optional:
  • Economics -- Currency rewards on raid completion
  • Server Rewards -- Point rewards on raid completion
  • Gear Core -- Apply gear sets to NPC defenders instead of manual clothing lists
  • Friends -- Raid ownership ally detection via friends list
  • True PVE -- Automatic damage hook compatibility for PvE servers
  • Ultimate Leaderboard -- Push raid statistics (completions, kills, damage) to a server-wide leaderboard
  • XPerience -- XP rewards on raid completion
  • Skill Tree -- XP rewards on raid completion

Permissions

  • raidableboats.admin -- Grants access to all admin console commands (rboat.spawn, rboat.despawn, rboat.tp, rboat.list, rboat.profiles, rboat.reload, rboat.stats, rboat.debug, rboat.shownodes, rboat.help)

Commands

All commands are console commands (F1 or RCON). The /stats chat command is available to all players.

Player Commands

  • /stats -- Displays the player's personal raid statistics including raids completed (with per-difficulty breakdown), NPC kills, helmsman kills, damage dealt, and last raid time. The command name is configurable via Chat Stats Command in Statistics Settings

Admin Commands

Requires raidableboats.admin.
  • rboat.spawn [profile] [here|x y z]-- Spawns a raidable boat. If no profile is specified, one is chosen randomly by weight. If no position is given, a valid ocean position is found automatically
    • profile -- Name of the boat profile to spawn
    • here -- Spawn at the calling player's current position
    • x y z -- Spawn at specific world coordinates
  • rboat.despawn <nearest|all|net_id>-- Despawns raidable boats
    • nearest -- Despawns the boat closest to the calling player
    • all -- Despawns all active raidable boats
    • net_id -- Despawns the boat with the specified network ID (shown in rboat.list)
  • rboat.tp [profile] -- Teleports the calling player to a raidable boat. If no profile is specified, teleports to the nearest boat
  • rboat.list -- Lists all active raidable boats with their profile, difficulty, grid location, network ID, state, NPC count, and remaining loot
  • rboat.profiles -- Lists all loaded boat profiles with their difficulty tier, enabled status, and Copy Paste filename
  • rboat.reload -- Reloads boat profiles from the data folder without restarting the plugin
  • rboat.stats <player> -- Views raid statistics for a specific player by name or Steam ID
  • rboat.debug -- Toggles debug visualization for admins, showing navigation paths, waypoints, speed, steering, and velocity arrows
  • rboat.shownodes -- Draws all ocean spawn nodes as cyan boxes and Deep Sea spawn nodes as yellow boxes for 30 seconds
  • rboat.help -- Displays a summary of all available commands

Boat Profiles

Profiles are the core of the plugin. Each profile links a Copy Paste file to a difficulty tier and defines how the boat behaves as a raid event.

How Profiles Work

Profile files are stored in oxide/data/RaidableBoats/Profiles/. Each .json file in this folder is loaded as a profile. On first run, a default profile is created automatically.

A boat design is built in-game using the player boat system (hull, cannons, storage, doors, steering wheel, engine, sails), then saved with Copy Paste. The profile points to that saved file.

Profile Structure

JSON:
{
  "Enabled": true,
  "Profile Name": "default",
  "CopyPaste File Name": "raidboat_default",
  "Difficulty Tier": "Medium",
  "Protection Radius (Blocks Building)": 30.0,
  "Spawn Weight (Higher = More Likely To Be Chosen)": 1.0,
  "Loot Source (CopyPaste = Use Pasted Loot, Plugin = Generate From Loot Table)": "Plugin",
  "Custom Loot Table (Override For Plugin Loot Source)": null,
  "Extra CopyPaste Paste Options (e.g. inventories:true, deployables:false)": {}
}
  • Enabled -- Whether this profile is available for spawning
  • Profile Name -- Unique identifier used in commands and logging
  • CopyPaste File Name -- Name of the Copy Paste file in oxide/data/copypaste/ (without extension). The plugin validates this file exists on load
  • Difficulty Tier -- Must match one of the tier names defined in the config (e.g., "Easy", "Medium", "Hard", "Nightmare")
  • Protection Radius -- Radius in meters around the boat where player building is blocked
  • Spawn Weight -- Relative weight for random selection. A weight of 3.0 is three times more likely to be chosen than 1.0
  • Loot Source -- "CopyPaste" uses whatever inventory was saved in the paste file. "Plugin" clears containers and fills them from the loot table
  • Custom Loot Table -- When set and loot source is "Plugin", overrides the default loot table from the config. Set to null to use the default
  • Extra CopyPaste Paste Options -- Additional key-value pairs passed to Copy Paste (e.g., "deployables": "false")

Boat Design Requirements

The pasted boat must include:
  • A PlayerBoat entity (the hull)
  • A SmallEngine (for movement)
  • A SteeringWheel (for the helmsman NPC)
The pasted boat should include:
  • One or more Cannon entities (for NPC gunners)
  • One or more StorageContainer entities (for loot)
If no cannons are found, the boat spawns with no cannon defense. If no storage containers are found, raid completion via loot threshold is not possible.

Pre-configured Starter Profiles

The plugin ships with a single default profile on first install. For a ready-to-go fleet covering all four difficulty tiers, a set of pre-configured profiles and their matching Copy Paste files are available in the starter fleet pack thread.

The starter pack includes four boats, each designed around its difficulty tier:

SkiffBrigantineGalleonMan-o-War
DifficultyEasyMediumHardNightmare
Spawn Weight3.02.01.00.5
Defenders2468
Defender HP112150300450
Hull Health1.0x1.0x1.5x2.0x
Escort BoatsNone123
Loot Multiplier0.75x1.0x1.5x2.0x
Reward Multiplier0.5x1.0x2.0x3.0x
Dome ColorGreenBluePurpleRed

Defender HP shown is the effective health after the tier's health multiplier is applied to the base gunner health of 150. The exact number of cannons, turrets, traps, and storage containers depends on each boat's Copy Paste design — check the download thread for build screenshots and detailed breakdowns.

The spawn weights are tuned so easier boats appear more frequently and harder ones are rare. Escort boat counts, NPC counts, and combat multipliers are all controlled by the difficulty tier config and apply automatically to whichever profile uses that tier.

Installation:
  1. Download the four profile files (skiff.json, brigantine.json, galleon.json, man-o-war.json) and place them in oxide/data/RaidableBoats/Profiles/
  2. Download the four Copy Paste files (raidboat_skiff.json, raidboat_brigantine.json, raidboat_galleon.json, raidboat_manowar.json) and place them in oxide/data/copypaste/
  3. Run rboat.reload in the server console to load the new profiles
You can adjust weights, disable specific profiles, or use them as a starting point for your own custom fleet.

Creating Multiple Profiles

Create additional .json files in the profiles folder. For example, a fleet with varying difficulty:
  • oxide/data/RaidableBoats/Profiles/skiff.json -- Easy tier, small boat, high spawn weight
  • oxide/data/RaidableBoats/Profiles/brigantine.json -- Medium tier, medium boat
  • oxide/data/RaidableBoats/Profiles/galleon.json -- Hard tier, large boat, low spawn weight
  • oxide/data/RaidableBoats/Profiles/man-o-war.json -- Nightmare tier, heavily armed
After adding profiles, run rboat.reload to load them without restarting.

Configuration

General Settings

JSON:
{
  "General Settings": {
    "Maximum Active Boats": 3,
    "Block Player Building On Boats": true,
    "Block Entity Pickup On Boats": true,
    "Block Mounting Steering Wheel": true,
    "Block Boat Editing (Push And Rotate)": true,
    "Block Sail Interaction": true,
    "Block Anchor Interaction": true,
    "Block Player Cannon Interaction": true,
    "Block Engine Interaction": true,
    "Lock Doors With Code Locks": true,
    "Door Lock Chance Percentage (0-100)": 100.0,
    "Lock Storage Containers With Code Locks": true,
    "Container Lock Chance Percentage (0-100)": 30.0,
    "Never Lock These Prefabs (Full Prefab Path)": [],
    "Prefabs Exempt From Building Block (Full Prefab Path)": [
      "assets/prefabs/deployable/ladder.wall.wood/ladder.wall.wood.deployed.prefab"
    ],
    "Enable Auto Lights At Night": true,
    "Chat Prefix Text": "[Raidable Boats]",
    "Chat Prefix Color (Hex)": "#4A90D9"
  }
}
  • Maximum Active Boats -- Hard cap on how many raidable boats can exist at the same time
  • Block Player Building On Boats -- Prevents players from placing deployables on or near raid boats
  • Block Entity Pickup On Boats -- Prevents players from picking up entities attached to the boat
  • Block Mounting Steering Wheel -- Prevents players from sitting at the helm
  • Block Boat Editing -- Prevents pushing or rotating the boat
  • Block Sail Interaction -- Prevents players from raising, lowering, or rotating sails
  • Block Anchor Interaction -- Prevents players from dropping the anchor. The plugin automatically raises anchors if they are lowered
  • Block Player Cannon Interaction -- Prevents players from mounting or firing cannons
  • Block Engine Interaction -- Prevents players from starting, stopping, reversing, or fueling engines
  • Lock Doors With Code Locks -- Attaches random code locks to lockable doors
  • Door Lock Chance Percentage -- Chance each door gets locked
  • Lock Storage Containers With Code Locks -- Attaches random code locks to storage containers that support locks
  • Container Lock Chance Percentage -- Chance each container gets locked
  • Never Lock These Prefabs -- Full prefab paths that should never receive code locks
  • Prefabs Exempt From Building Block -- Full prefab paths that players are allowed to place even with building block enabled (e.g., ladders for boarding)
  • Enable Auto Lights At Night -- When true, light entities on the boat (lanterns, tuna lights, searchlights, ceiling lights, Chinese lanterns, jack o'lanterns) automatically turn on at night (18:00) and off in the morning (07:00). Furnaces and campfires are not affected
  • Chat Prefix Text -- Text shown before chat messages from the plugin
  • Chat Prefix Color -- Hex color for the chat prefix

Spawn Settings

JSON:
{
  "Spawn Settings": {
    "Enable Scheduled Spawning (Timed Intervals)": true,
    "Scheduled Spawn Interval In Minutes": 30.0,
    "Minimum Online Players For Scheduled Spawn": 1,
    "Enable Maintained Spawning (Keeps Target Count Active)": true,
    "Maintained Ocean Boat Count": 2,
    "Allowed Ocean Biomes For Spawning": ["Arid", "Temperate", "Tundra", "Arctic", "Jungle"],
    "Minimum Distance Between Boats": 300.0,
    "Minimum Distance From Shore (Ocean Only)": 100.0,
    "Minimum Distance From Monuments (Ocean Only)": 150.0,
    "Enable Deep Sea Spawning": false,
    "Maximum Active Deep Sea Boats": 2,
    "Maintained Deep Sea Boat Count": 1,
    "Minimum Distance From Deep Sea Structures": 150.0
  }
}
  • Enable Scheduled Spawning -- Spawns a new boat at regular intervals
  • Scheduled Spawn Interval In Minutes -- Time between scheduled spawn attempts
  • Minimum Online Players For Scheduled Spawn -- Minimum player count required for both scheduled and maintained spawns
  • Enable Maintained Spawning -- Continuously checks and spawns boats to maintain the target count
  • Maintained Ocean Boat Count -- How many ocean boats the plugin tries to keep active at all times
  • Allowed Ocean Biomes For Spawning -- Restricts ocean spawn positions to specific biome regions. Accepts: Arid, Temperate, Tundra, Arctic, Jungle. Note: DeepSea is not valid here -- Deep Sea spawning is controlled separately
  • Minimum Distance Between Boats -- Minimum spacing between active raidable boats
  • Minimum Distance From Shore -- How far from land ocean boats must spawn
  • Minimum Distance From Monuments -- Minimum distance from monuments for ocean spawn positions
  • Enable Deep Sea Spawning -- When true, raidable boats can also spawn and navigate within the Deep Sea zone
  • Maximum Active Deep Sea Boats -- Hard cap on how many raidable boats can exist in the Deep Sea at the same time. Still subject to the global Maximum Active Boats limit
  • Maintained Deep Sea Boat Count -- How many Deep Sea boats the plugin tries to keep active. Works alongside the ocean maintained count
  • Minimum Distance From Deep Sea Structures -- Minimum distance boats must maintain from Deep Sea structures (islands, floating cities, ghost ships, portals) when spawning and navigating

Difficulty Tiers

JSON:
{
  "Difficulty Tiers": {
    "Easy": {
      "Defender Health Multiplier": 0.75,
      "Defender Count Multiplier": 0.5,
      "Loot Amount Multiplier": 0.75,
      "Cannon Accuracy Multiplier": 0.5,
      "Cannon Fire Rate Multiplier": 0.7,
      "Reward Amount Multiplier": 0.5,
      "Dismounted Combat Damage Multiplier": 0.5,
      "Dismounted Combat Accuracy Multiplier": 0.7,
      "Boat Health Multiplier": 1.0,
      "Map Marker Color (Hex)": "#00FF00",
      "Announcement Color (Hex)": "#55D455"
    },
    "Medium": {
      "Defender Health Multiplier": 1.0,
      "Defender Count Multiplier": 1.0,
      "Loot Amount Multiplier": 1.0,
      "Cannon Accuracy Multiplier": 1.0,
      "Cannon Fire Rate Multiplier": 1.0,
      "Reward Amount Multiplier": 1.0,
      "Dismounted Combat Damage Multiplier": 1.0,
      "Dismounted Combat Accuracy Multiplier": 1.0,
      "Boat Health Multiplier": 1.0,
      "Map Marker Color (Hex)": "#FFFF00",
      "Announcement Color (Hex)": "#F5D442"
    },
    "Hard": {
      "Defender Health Multiplier": 2.0,
      "Defender Count Multiplier": 1.5,
      "Loot Amount Multiplier": 1.5,
      "Cannon Accuracy Multiplier": 1.5,
      "Cannon Fire Rate Multiplier": 1.3,
      "Reward Amount Multiplier": 2.0,
      "Dismounted Combat Damage Multiplier": 1.5,
      "Dismounted Combat Accuracy Multiplier": 1.2,
      "Boat Health Multiplier": 1.5,
      "Map Marker Color (Hex)": "#FF8C00",
      "Announcement Color (Hex)": "#FF8C00"
    },
    "Nightmare": {
      "Defender Health Multiplier": 3.0,
      "Defender Count Multiplier": 2.0,
      "Loot Amount Multiplier": 2.0,
      "Cannon Accuracy Multiplier": 2.0,
      "Cannon Fire Rate Multiplier": 1.5,
      "Reward Amount Multiplier": 3.0,
      "Dismounted Combat Damage Multiplier": 2.0,
      "Dismounted Combat Accuracy Multiplier": 1.4,
      "Boat Health Multiplier": 2.0,
      "Map Marker Color (Hex)": "#FF0000",
      "Announcement Color (Hex)": "#FF4444"
    }
  }
}
All multipliers are applied to base values from other config sections. You can add, rename, or remove tiers -- just ensure your profiles reference valid tier names.
  • Defender Health Multiplier -- Multiplied against the base health of gunners and helmsmen
  • Defender Count Multiplier -- Multiplied against Gunners Per Boat to determine how many cannons are crewed
  • Loot Amount Multiplier -- Scales item amounts in loot containers
  • Cannon Accuracy Multiplier -- Higher values reduce cannon aim offset (more accurate)
  • Cannon Fire Rate Multiplier -- Higher values reduce time between cannon shots (faster firing)
  • Reward Amount Multiplier -- Scales Economics and Server Rewards payouts
  • Dismounted Combat Damage Multiplier -- Scales per-hit damage when npcs fight dismounted
  • Dismounted Combat Accuracy Multiplier -- Scales hit chance when npcs fight dismounted
  • Boat Health Multiplier -- Scales the boat's maximum and current health on spawn. Values above 1.0 make the hull tankier, values below 1.0 make it weaker
  • Map Marker Color -- Color of the map marker radius circle for boats of this tier
  • Announcement Color -- Color used when the difficulty name appears in chat announcements

NPC Defender Settings

JSON:
{
  "NPC Defender Settings": {
    "Gunner Base Health (Before Difficulty Multiplier)": 150.0,
    "Gunners Per Boat (Before Difficulty Multiplier)": 4,
    "Defender Display Name": "Pirate Crew",
    "Make Gunners Invincible": false,
    "Starting Cannonballs Per Cannon": 20,
    "Infinite Cannonballs (Never Run Out)": true,
    "Enable Defender Respawn After Death": true,
    "Defender Respawn Delay In Seconds": 120.0,
    "Gunner Loadout Kits (Random Per Spawn)": [...],
    "Helmsman Loadout Kits (Random Per Spawn)": [...],
    "Gunner Loot Table (Dropped On Death)": [...],
    "Helmsman Loot Table (Dropped On Death)": [...],
    "Enable Helmsman NPC On Steering Wheel": true,
    "Helmsman Base Health (Before Difficulty Multiplier)": 200.0,
    "Enable Gunner Dismount Combat (Leave Cannon To Fight)": true,
    "Gunner Dismount Trigger Range": 30.0,
    "Gunner Retaliation Range (Dismount When Shot)": 100.0,
    "Gunner Dismounted Damage Per Hit": 15.0,
    "Gunner Dismounted Accuracy (0 - 100)": 60.0,
    "Enable Helmsman Dismount Combat (Leave Wheel To Fight)": true,
    "Helmsman Dismount Trigger Range": 30.0,
    "Helmsman Retaliation Range (Dismount When Shot)": 100.0,
    "Helmsman Dismounted Damage Per Hit": 15.0,
    "Helmsman Dismounted Accuracy (0 - 100)": 60.0
  }
}
  • Gunner Base Health -- Base HP for cannon gunners before the difficulty tier multiplier is applied
  • Gunners Per Boat -- Base number of cannon gunners to spawn. Multiplied by the tier's Defender Count Multiplier, then capped at the number of available cannons on the boat
  • Defender Display Name -- Display name shown for NPC defenders
  • Make Gunners Invincible -- When true, cannon gunners cannot be damaged
  • Starting Cannonballs Per Cannon -- Ammo placed in each cannon's hidden stash
  • Infinite Cannonballs -- When true, ammo stashes are automatically refilled after each shot
  • Enable Defender Respawn After Death -- Dead npcs respawn at their original station after a delay
  • Defender Respawn Delay In Seconds -- Time before a killed NPC respawns
  • Gunner Loadout Kits -- List of possible loadouts for gunners. One is chosen randomly per spawn. See Loadout Kits
  • Helmsman Loadout Kits -- List of possible loadouts for the helmsman
  • Gunner Loot Table -- Items dropped by gunners on death. See Loot Table Format
  • Helmsman Loot Table -- Items dropped by the helmsman on death
  • Enable Helmsman NPC On Steering Wheel -- Whether to spawn a helmsman. Without one, the boat does not navigate
  • Helmsman Base Health -- Base HP for the helmsman before difficulty multiplier
  • Enable Gunner Dismount Combat -- When true, gunners leave their cannons to fight players who board the boat
  • Gunner Dismount Trigger Range -- Distance at which a gunner will proactively dismount to engage a visible player
  • Gunner Retaliation Range -- Extended range at which a gunner dismounts when directly shot by a player
  • Gunner Dismounted Damage Per Hit -- Base damage per hit when a gunner fights dismounted (before tier multiplier)
  • Gunner Dismounted Accuracy -- Base hit chance for dismounted gunner combat (before tier multiplier)
  • Enable Helmsman Dismount Combat -- Same as gunner dismount, but for the helmsman. When the helmsman dismounts, the boat stops moving
  • Helmsman Dismount Trigger Range -- Proactive dismount range for the helmsman
  • Helmsman Retaliation Range -- Extended dismount range when the helmsman is shot
  • Helmsman Dismounted Damage Per Hit -- Base damage for dismounted helmsman `combat
  • Helmsman Dismounted Accuracy` -- Base hit chance for dismounted helmsman combat

Loadout Kit Format

Each loadout kit defines what an NPC spawns with. One kit is randomly selected from the list each time an NPC spawns.
JSON:
{
  "Weapon Shortname": "rifle.ak",
  "Weapon Skin ID (0 = Default)": 0,
  "Ammo Shortname": "ammo.rifle",
  "Ammo Amount": 200,
  "Clothing Shortnames": ["burlap.shirt", "burlap.trousers", "burlap.headwrap", "shoes.boots"],
  "GearCore Set Name (Leave Empty To Ignore)": ""
}
  • Weapon Shortname -- Item shortname for the weapon given to the NPC during dismounted combat
  • Weapon Skin ID -- Skin ID applied to the weapon. Set to 0 for default
  • Ammo Shortname -- Ammo type placed in the NPC's inventory for the weapon
  • Ammo Amount -- How much ammo to give
  • Clothing Shortnames -- List of clothing item shortnames equipped on the NPC
  • GearCore Set Name -- If set and Gear Core is loaded, equips the named gear set instead of using the clothing list

Loot Table Entry Format

Used in NPC death loot tables, the default loot table, and custom profile loot tables.
JSON:
{
  "Item Shortname": "scrap",
  "Minimum Amount": 50,
  "Maximum Amount": 200,
  "Drop Chance Percent (0 - 100)": 100.0,
  "Skin ID (0 = Default)": 0,
  "Is Blueprint": false,
  "Custom Item Display Name (Leave Empty For Default)": ""
}
  • Item Shortname -- Rust item shortname
  • Minimum Amount -- Minimum stack size (inclusive)
  • Maximum Amount -- Maximum stack size (inclusive). A random value between min and max is chosen
  • Drop Chance Percent -- Chance this entry is included
  • Skin ID -- Skin applied to the item. 0 for default
  • Is Blueprint -- When true, creates a blueprint of this item instead of the item itself
  • Custom Item Display Name -- Overrides the item's display name. Leave empty for default

Cannon Settings

JSON:
{
  "Cannon Settings": {
    "Maximum Engagement Range": 150.0,
    "Minimum Engagement Range (Dead Zone)": 15.0,
    "Time Between Shots (Seconds)": 6.0,
    "Aim Accuracy Offset (Higher = Less Accurate)": 2.0,
    "Reload Time (Seconds)": 3.0,
    "Cannonball Fuse Time (Seconds, Delay Before Detonation)": 3.0
  }
}
  • Maximum Engagement Range -- Cannons only fire at targets within this distance
  • Minimum Engagement Range -- Targets closer than this are ignored (dead zone to prevent self-damage)
  • Time Between Shots -- Base cooldown between cannon shots (divided by the tier's fire rate multiplier)
  • Aim Accuracy Offset -- Random positional offset applied to cannon aim. Higher values mean less accurate shots. Divided by the tier's accuracy multiplier
  • Reload Time -- Time to reload a cannonball before firing
  • Cannonball Fuse Time -- Delay before the cannonball detonates after firing

Navigation Settings

JSON:
{
  "Navigation Settings": {
    "Minimum Waypoint Distance": 80.0,
    "Maximum Waypoint Distance": 200.0,
    "Idle Duration At Waypoint (Seconds)": 12.0,
    "Spawn Height Above Water": 3.0,
    "Stop Duration After Collision (Seconds)": 15.0
  }
}
  • Minimum Waypoint Distance -- Minimum distance for the next waypoint from the boat's current position
  • Maximum Waypoint Distance -- Maximum distance for the next waypoint
  • Idle Duration At Waypoint -- How long the boat drifts at a waypoint before picking a new destination
  • Spawn Height Above Water -- Height offset above water level when spawning the boat
  • Stop Duration After Collision -- How long the boat pauses after colliding with a player boat

Loot Settings

JSON:
{
  "Loot Settings": {
    "Default Loot Table (Used When Profile Has No Custom Table)": [
      { "Item Shortname": "scrap", "Minimum Amount": 50, "Maximum Amount": 200, "Drop Chance Percent (0 - 100)": 100.0, "Skin ID (0 = Default)": 0, "Is Blueprint": false, "Custom Item Display Name (Leave Empty For Default)": "" },
      ...
    ]
  }
}
  • Default Loot Table -- The loot table used when a profile has Loot Source set to "Plugin" and no custom loot table defined. Each container on the boat independently rolls against the table. See Loot Table Entry Format for entry structure

Raid Completion Settings

JSON:
{
  "Raid Completion Settings": {
    "Require Minimum Loot Percentage Looted": true,
    "Minimum Loot Percentage Required (0 - 100)": 80.0,
    "Require All Defenders Killed": false,
    "Break Locked Doors When Boat Hull Is Destroyed": true
  }
}
  • Require Minimum Loot Percentage Looted -- When true, the raid completes only after a percentage of loot items have been taken from containers
  • Minimum Loot Percentage Required -- The threshold percentage of items that must be removed
  • Require All Defenders Killed -- When true, all npcs must be dead (with respawn disabled) for the raid to complete. When both conditions are enabled, both must be met
  • Break Locked Doors When Boat Hull Is Destroyed -- When true, all locked doors on the boat are destroyed when the boat hull itself is killed, giving raiders access to locked rooms

Despawn Settings

Code:
{
  "Despawn Settings": {
    "Maximum Boat Lifetime (Minutes)": 60,
    "Inactive Timeout (Minutes, No Players Nearby)": 20,
    "Drop Floating Loot When Boat Sinks": true,
    "Floating Loot Despawn Time (Minutes)": 5
  }
}
  • Maximum Boat Lifetime -- Boats are forcibly despawned after this many minutes regardless of state
  • Inactive Timeout -- If a raid is engaged but no progress is made within this time, the boat despawns. A warning is sent to raiders before this happens
  • Drop Floating Loot When Boat Sinks -- When true, remaining loot in containers is dropped as floating item containers when the boat sinks
  • Floating Loot Despawn Time -- How long floating loot containers persist before being removed

Map Marker Settings

JSON:
{
  "Map Marker Settings": {
    "Enable Map Markers": true,
    "Use Vending Machine Marker (Shows Name On Map)": true,
    "Default Marker Color (Hex, Overridden By Difficulty Tier)": "#FF0000",
    "Marker Radius On Map": 0.15,
    "Marker Display Label (Use {difficulty} For Difficulty Name)": "Raidable Boat [{difficulty}]",
    "Position Update Interval (Seconds)": 2.0
  }
}
  • Enable Map Markers -- Whether to show markers on the map for raidable boats
  • Use Vending Machine Marker -- Uses a vending machine marker that displays a name label on the map
  • Default Marker Color -- Fallback color if the difficulty tier has no color configured
  • Marker Radius On Map -- Size of the radius circle marker on the map
  • Marker Display Label -- Text displayed on the vending machine marker. Use {difficulty} as a placeholder for the tier name
  • Position Update Interval -- How often the marker position is updated as the boat moves

Announcement Settings

JSON:
{
  "Announcement Settings": {
    "Announce When Boat Spawns": true,
    "Announce When Raid Is Engaged": true,
    "Announce When Raid Is Completed": true,
    "Announce When Boat Despawns": false,
    "Announcement Radius (0 = Server Wide)": 0.0
  }
}
  • Announce When Boat Spawns -- Broadcasts a chat message when a new raidable boat appears
  • Announce When Raid Is Engaged -- Broadcasts when a player begins attacking a boat
  • Announce When Raid Is Completed -- Broadcasts when a raid is successfully completed
  • Announce When Boat Despawns -- Broadcasts when a boat despawns due to timeout
  • Announcement Radius -- Set to 0 for server-wide announcements. Any other value limits announcements to players within that radius

Reward Settings

JSON:
{
  "Reward Settings": {
    "Enable Economics Reward On Completion": false,
    "Economics Base Amount (Before Difficulty Multiplier)": 500.0,
    "Enable Server Rewards On Completion": false,
    "Server Rewards Base Points (Before Difficulty Multiplier)": 100
  }
}
  • Enable Economics Reward On Completion -- Deposits currency to all raiders when the raid completes. Requires Economics
  • Economics Base Amount -- Base currency amount, multiplied by the tier's Reward Amount Multiplier
  • Enable Server Rewards On Completion -- Awards points to all raiders. Requires Server Rewards
  • Server Rewards Base Points -- Base points amount, multiplied by the tier's Reward Amount Multiplier
  • Enable XPerience XP Reward On Completion -- Awards XP to all raiders. Requires the XPerience plugin
  • XPerience XP Base Amount -- Base XP amount, multiplied by the tier's Reward Amount Multiplier
  • Enable Skill Tree XP Reward On Completion -- Awards XP to all raiders. Requires the Skill Tree plugin
  • Skill Tree XP Base Amount -- Base XP amount, multiplied by the tier's Reward Amount Multiplier

Statistics Settings

JSON:
{
  "Statistics Settings": {
    "Enable Statistics Tracking": true,
    "Push Stats To UltimateLeaderboard Plugin (Requires UltimateLeaderboard Installed)": false,
    "Chat Stats Command": "stats"
  }
}
  • Enable Statistics Tracking -- When true, per-player raid statistics are tracked and saved (raids completed, NPC kills, damage dealt, per-difficulty breakdowns)
  • Push Stats To UltimateLeaderboard Plugin -- When true, raid statistics are pushed to the Ultimate Leaderboard plugin after each raid completion. See Ultimate Leaderboard Integration for setup instructions and available prefabs
  • Chat Stats Command -- The chat command name players use to view their stats (e.g., "stats" registers /stats). Change this if another plugin (such as Raidable Bases) already uses the same command name

Ownership Settings

JSON:
{
  "Ownership Settings": {
    "Enable Raid Ownership": false,
    "Lock Timeout Minutes": 20.0,
    "Use Rust Teams": true,
    "Use Clans Plugin": true,
    "Use Friends Plugin": true
  }
}
  • Enable Raid Ownership -- When true, the first player to engage a raidable boat (by boarding, damaging, or looting) claims ownership. Non-owners and non-allies are blocked from looting, damaging, mounting, and interacting with the boat, and npcs will ignore them
  • Lock Timeout Minutes -- After this many minutes of inactivity from the owner and their allies, ownership expires and the boat becomes available for anyone to claim
  • Use Rust Teams -- When true, members of the owner's Rust team are treated as allies and can participate in the raid
  • Use Clans Plugin -- When true, members of the owner's clan are treated as allies. Requires Clans
  • Use Friends Plugin -- When true, the owner's friends are treated as allies. Requires Friends

Raid Lifecycle

Understanding the boat's state progression helps with configuration and troubleshooting.
  1. Spawning -- The Copy Paste file is pasted, the boat is validated (engine, steering wheel, cannons, containers), npcs are spawned and mounted, loot is populated, code locks are applied, and map markers are created.
  2. Cruising -- The boat autonomously navigates between waypoints (ocean or Deep Sea). The helmsman steers, sails are raised, and engines run. Cannons scan for nearby player boats.
  3. Engaged -- Triggered when a player boards the boat, damages it, loots a container, or hits an NPC with a cannonball. The inactive despawn timer starts. If ownership is enabled, the triggering player claims the boat. Raiders receive progress messages (defender kills, loot milestones). Dismounted combat activates if players are within range.
  4. Completing -- The raid completion conditions are met. Rewards are distributed to all raiders. Statistics are updated.
  5. Sinking -- All defenders are killed shortly after sinking begins (3-second delay) and their corpses remain as lootable bodies. Cannon controllers and AI stop. The boat is flagged as broken, buoyancy is reduced, and the boat slowly sinks over 60 seconds. A configurable percentage of remaining loot is dropped as floating buoyant bags at the water surface. Items dropped from destroyed loot boxes during the fight are also converted into floating bags instead of being lost underwater.
  6. Despawning -- The boat is removed entirely (due to lifetime expiry, inactive timeout, or admin command). All associated entities, npcs, markers, and timers are cleaned up.

Stored Data

JSON:
{
  "Active Boats": [],
  "Total Boats Spawned": 42,
  "Total Boats Raided": 28,
  "Player Statistics": {
    "76561198012345678": {
      "Boats Raided": 7,
      "Raids By Difficulty": {
        "Easy": 2,
        "Medium": 3,
        "Hard": 1,
        "Nightmare": 1
      },
      "Npcs Killed": 34,
      "Helmsmen Killed": 5,
      "Total Damage Dealt": 12450.0,
      "Last Raid Time": "2026-01-15T10:30:00Z"
    }
  }
}
  • Active Boats -- List of boats that were active at the time of server save, used to restore boats after a restart. Cleared after restoration
  • Total Boats Spawned -- Lifetime counter of all boats spawned
  • Total Boats Raided -- Lifetime counter of all boats successfully raided
  • Player Statistics-- Per-player raid statistics keyed by Steam ID
    • Boats Raided -- Number of raids the player participated in
    • Raids By Difficulty -- Breakdown of completed raids per difficulty tier
    • Npcs Killed -- Total NPC defenders killed across all raids
    • Helmsmen Killed -- Total helmsmen killed across all raids
    • Total Damage Dealt -- Cumulative damage dealt to raid boats and their entities
    • Last Raid Time -- Timestamp of the player's most recent raid completion

Localization

JSON:
{
  "Error.NoPermission": "You do not have permission to use this command.",
  "Error.NoBuildingAllowed": "You cannot build on or near a raidable boat.",
  "Error.NoSteeringAllowed": "The helm of a raidable boat cannot be commandeered.",
  "Error.NoEditingAllowed": "You cannot modify a raidable boat.",
  "Error.NoCannonAllowed": "The cannons on this boat are crewed by defenders.",
  "Error.NoSailAllowed": "The sails on a raidable boat cannot be controlled.",
  "Error.NoAnchorAllowed": "The anchor on a raidable boat cannot be lowered.",
  "Error.NoPickupAllowed": "You cannot remove fixtures from a raidable boat.",
  "Error.NoAmmoStashAllowed": "This ammunition is reserved for the boat's cannon crew.",
  "Error.NoEngineAllowed": "You cannot interact with the engines of a raidable boat.",
  "Error.MaxBoatsReached": "Maximum number of raidable boats already active.",
  "Error.PasteFailed": "Failed to paste boat: {0}",
  "Error.ProfileNotFound": "Profile '{0}' not found.",
  "Error.NoProfiles": "No boat profiles available.",
  "Error.NoSpawnPosition": "Could not find a valid ocean position to spawn.",
  "Error.NoBoatsActive": "No raidable boats are currently active.",
  "Announce.Spawned": "A {0} raidable boat has been spotted sailing near {1}!",
  "Announce.Engaged": "The {0} raidable boat near {1} is under attack!",
  "Announce.Completed": "The {0} raidable boat at {1} has been raided and is sinking!",
  "Announce.Despawned": "A {0} raidable boat has sailed beyond the horizon.",
  "Announce.Despawned.DeepSea": "A {0} deep sea raidable boat has sailed beyond the horizon.",
  "Raid.Boarded": "You have boarded a {0} raidable boat! Defeat the crew and plunder the loot.",
  "Raid.DefenderKilled": "Defender eliminated! <color=#FFA500>{0}</color> remaining.",
  "Raid.AllDefendersKilled": "All defenders have been eliminated!",
  "Raid.HelmsmanKilled": "The helmsman has been killed! The boat has stopped.",
  "Raid.LootMilestone": "Loot plundered: <color=#FFA500>{0}%</color>",
  "Raid.Complete": "Raid complete! The boat is taking on water, grab what you can!",
  "Raid.Sinking": "The boat is going under! Some loot may float to the surface.",
  "Raid.DefendersRegrouping": "<color=#FF4444>Warning:</color> The boat's defenders are regrouping!",
  "Raid.InactiveWarning": "This raidable boat will despawn in <color=#FFA500>{0}</color> minutes if the raid is not completed.",
  "Ownership.Claimed": "You have claimed ownership of this raidable boat. Allies may also participate.",
  "Ownership.NotOwner": "This raidable boat is claimed by another player. You cannot interact with it.",
  "Ownership.Expired": "Your ownership of the raidable boat has expired due to inactivity.",
  "Reward.Economics": "You received <color=#55D455>${0}</color> for raiding the boat!",
  "Reward.ServerRewards": "You received <color=#55D455>{0} RP</color> for raiding the boat!",
  "Reward.XPerience": "You received <color=#55D455>{0} XP</color> (XPerience) for raiding the boat!",
  "Reward.SkillTree": "You received <color=#55D455>{0} XP</color> (Skill Tree) for raiding the boat!",
  "Raid.HullBreached": "The hull has been destroyed! All locked doors have been blown apart.",
  "Stats.Display": "<color=#4A90D9>Raid Statistics</color>\n- Raids completed: <color=#FFA500>{0}</color> ({1})\n- Defenders killed: <color=#FFA500>{2}</color>\n- Helmsmen killed: <color=#FFA500>{3}</color>\n- Escort crew killed: <color=#FFA500>{4}</color>\n- Damage dealt: <color=#FFA500>{5}</color>\n- Last raid: <color=#FFA500>{6}</color>",
  "Stats.NoStats": "No raid statistics found.",
  "PvP.Protected": "This player is protected while raiding a claimed raidable boat."
}

Ultimate Leaderboard Integration

Raidable Boats can push player raid statistics to Ultimate Leaderboard for server-wide rankings.

Enable in RaidableBoats

Set the following in your Raidable Boats config under Statistics Settings:
JSON:
"Push Stats To UltimateLeaderboard Plugin (Requires UltimateLeaderboard Installed)": true

Configure Ultimate Leaderboard

Add fields to your Ultimate Leaderboard config for each stat you want to track. The Type for every field must be "Event".
Available prefabs:
  • raidableboats_total_raids_completed -- All raids completed (any difficulty)
  • raidableboats_easy_wins -- Easy raids won
  • raidableboats_medium_wins -- Medium raids won
  • raidableboats_hard_wins -- Hard raids won
  • raidableboats_nightmare_wins -- Nightmare raids won
  • raidableboats_defenders_killed -- NPC defenders killed
  • raidableboats_helmsmen_killed -- Helmsmen killed
  • raidableboats_escort_crew_killed -- Escort crew killed
  • raidableboats_damage_dealt -- Total damage dealt to boats and defenders (integer)

Example Config Entry

JSON:
{
  "Title": "RAIDABLE BOATS",
  "Fields": [
    {
      "Type": "Event",
      "Image URL": "",
      "Title": "Total Raids Completed",
      "Prefab": "raidableboats_total_raids_completed",
      "Second Prefab": null
    },
    {
      "Type": "Event",
      "Image URL": "",
      "Title": "Easy Wins",
      "Prefab": "raidableboats_easy_wins",
      "Second Prefab": null
    }
  ]
}
Common mistake: Setting "Type" to "RaidableBoats" will cause a config error. It must always be "Event"

Developer Hooks

OnRaidableBoatSpawned

C#:
void OnRaidableBoatSpawned(BaseEntity boat, Vector3 position, string profileName, string difficulty, bool isDeepSea)
Called when a raidable boat finishes spawning and enters the cruising state.
  • BaseEntity boat - The spawned boat entity
  • Vector3 position - World position where the boat spawned
  • string profileName - Name of the boat profile used
  • string difficulty - Difficulty tier name (e.g., "Easy", "Hard")
  • bool isDeepSea - true if the boat spawned in the Deep Sea zone

OnRaidableBoatEngaged

C#:
void OnRaidableBoatEngaged(BaseEntity boat, BasePlayer engager, string profileName, string difficulty)
Called when a boat transitions from cruising to engaged.
  • BaseEntity boat - The engaged boat entity
  • BasePlayer engager - The player who triggered engagement, or null if triggered by a non-player event
  • string profileName - Name of the boat profile
  • string difficulty - Difficulty tier name

OnRaidableBoatCompleted

C#:
void OnRaidableBoatCompleted(BaseEntity boat, List<ulong> raiders, string profileName, string difficulty, float durationSeconds)
Called when a raid is successfully completed.
  • BaseEntity boat - The completed boat entity
  • List<ulong> raiders - Steam Ids of all players who participated
  • string profileName - Name of the boat profile
  • string difficulty - Difficulty tier name
  • float durationSeconds - Time elapsed since engagement in seconds

OnRaidableBoatOwnershipChanged

C#:
void OnRaidableBoatOwnershipChanged(BaseEntity boat, ulong newOwnerId, ulong previousOwnerId)
Called when ownership of a boat changes.
  • BaseEntity boat - The boat entity
  • ulong newOwnerId - Steam ID of the new owner, or 0 when ownership expires
  • ulong previousOwnerId - Steam ID of the previous owner, or 0 when first claimed

OnRaidableBoatLootMilestone

C#:
void OnRaidableBoatLootMilestone(BaseEntity boat, int percentLooted, List<ulong> raiders, string difficulty)
Called when raiders reach a loot milestone (25%, 50%, or 75%).
  • BaseEntity boat - The boat entity
  • int percentLooted - The milestone percentage reached
  • List<ulong> raiders - Steam Ids of all players who participated
  • string difficulty - Difficulty tier name

OnRaidableBoatDefenderKilled

C#:
void OnRaidableBoatDefenderKilled(BasePlayer npc, BasePlayer killer, BaseEntity boat, string difficulty, bool isHelmsman, int remainingDefenders)
Called when an NPC defender is killed.
  • BasePlayer npc - The killed NPC
  • BasePlayer killer - The player who killed the NPC, or null if not killed by a player
  • BaseEntity boat - The boat entity the NPC belonged to
  • string difficulty - Difficulty tier name
  • bool isHelmsman - true if the killed NPC was the helmsman
  • int remainingDefenders - Number of surviving defenders on the boat

Developer API

API_IsRaidableBoat

C#:
bool API_IsRaidableBoat(BaseEntity entity)
Returns true if the entity is an active raidable boat.

API_IsRaidableBoatNPC

C#:
bool API_IsRaidableBoatNPC(BasePlayer npc)
Returns true if the player is an NPC belonging to a raidable boat (defenders, helmsman, or escort crew).

API_IsRaidableBoatEscortNPC

C#:
bool API_IsRaidableBoatEscortNPC(BasePlayer npc)
Returns true if the player is an NPC specifically belonging to an escort boat crew.

API_IsRaidableBoatEscort

C#:
bool API_IsRaidableBoatEscort(BaseEntity entity)

API_IsRaidableBoatTurret

C#:
bool API_IsRaidableBoatTurret(BaseEntity entity)
Returns true if the entity is a turret (auto turret, flame turret, or gun trap) belonging to a raidable boat.

API_IsNearRaidableBoat

C#:
bool API_IsNearRaidableBoat(Vector3 position, float radius)

API_GetRaidableBoatDifficulty

C#:
string API_GetRaidableBoatDifficulty(BaseEntity boat)
Returns the difficulty tier name (e.g., "Easy", "Hard") for the boat, or null if not a raidable boat.

API_GetRaidableBoatProfile

C#:
string API_GetRaidableBoatProfile(BaseEntity boat)
Returns the profile name for the boat, or null if not a raidable boat.

API_GetRaidableBoatOwner

C#:
ulong API_GetRaidableBoatOwner(BaseEntity boat)
Returns the Steam ID of the current owner, or 0 if unclaimed or not a raidable boat.

API_GetRaidableBoatRaiders

C#:
List<ulong> API_GetRaidableBoatRaiders(BaseEntity boat)
Returns the Steam ids of all players who have participated in the raid, or null if not a raidable boat.

API_GetActiveBoatCount

C#:
int API_GetActiveBoatCount()
int API_GetActiveBoatCount(string difficulty)
Returns the total number of currently active raidable boats. When a difficulty is specified, only counts boats matching that tier.

API_GetPlayerRaidCompletions

C#:
int API_GetPlayerRaidCompletions(ulong playerId)
int API_GetPlayerRaidCompletions(ulong playerId, string difficulty)
Returns the total number of raids a player has completed. When a difficulty is specified, only counts completions at that tier.

API_GetPlayerDefenderKills

C#:
int API_GetPlayerDefenderKills(ulong playerId)
Returns the total number of NPC defenders a player has killed across all raids.

API_GetPlayerHelmsmanKills

C#:
int API_GetPlayerHelmsmanKills(ulong playerId)
Returns the total number of helmsmen a player has killed across all raids.

API_GetPlayerEscortNpcKills

C#:
int API_GetPlayerEscortNpcKills(ulong playerId)
Returns the total number of escort crew NPCs a player has killed across all raids.
Author
VisEntities
License duration
Unlimited
Price
29.99 USD
First release
Last update

Ratings

5.00 star(s) 4 reviews

Also by VisEntities

  • Chicken Coop
    Chicken Coop
    Get chickens to lay eggs, breed, and live in coops
  • Patrol Heli Crash Dont Retire
    Patrol Heli Crash Dont Retire
    Forces patrol helicopters to crash instead of leaving the map at the end of their lifetime
  • Biome Indicator
    Biome Indicator
    Displays the current biome and temperature to players via GUI and chat notifications

Latest updates

  1. 1.3.2

    Fixed npcs failing to spawn and boat entities (cannons, storage, sails, etc.) being destroyed on...
  2. 1.3.1

    Patched for the March 5 Rust update.
  3. 1.3.0

    Gameplay & Balance Boat health can now be scaled per difficulty tier. A configurable health...

Latest reviews

Raidable Boats is an incredible addition to any Rust server. The integration with leaderboard stats is fantastic, and the PvE loot-locking system ensures rewards stay with the players who earned them. On LuffyRust, our community absolutely loves this event—it keeps the oceans alive with action and gives players another exciting challenge to chase. Smooth performance, great design, and a really fun concept. Excellent work!

— MrLiquid, LuffyRust 🌊🏴‍☠️
Great Job has made the sea a place to be now, giving players more to do in the ocean. Great help with server owners as well. Thank You
Great addition for making the environment more dynamic and adds to player engagement opportunities. At the time of this review this is a newly created plugin, the updates have been timely, responsive, and effective.
Back
Top
Chat commands start with a /, while console commands can be entered directly in the F1 console or server console. Use find <keyword> in console to search for available commands related to the plugin. Parameters in < > are required, while [ ] are optional.
This plugin uses Oxide's permission system. Grant or revoke permissions using oxide.grant and oxide.revoke. You can assign them to individual players or groups using their Steam id or group name.
Settings are stored in the config file found under the config/ directory. You can edit this file manually, then reload the plugin to apply your changes.
Persistent data is saved in the data/ directory. This includes things like saved settings, usage stats, or player progress depending on the plugin. Deleting a data file will reset stored progress or customizations.
Language files are located in the lang/ folder. To translate messages, copy the en.json file into your target language folder (e.g. fr, de) and edit the values. Reload the plugin after changes to apply new messages.
This section lists public methods exposed by the plugin for use in other plugins. You can call these via the CallHook method. Ensure the plugin is loaded before calling its API to avoid null reference errors.
These are custom hooks that other plugins can listen for. Simply define a method with the same name and expected parameters in your plugin to handle the event. Hooks are triggered at key moments and are useful for extending or reacting to plugin behavior.
These hooks are injected into the game's code using Harmony. They let the plugin run code at key points in the game's internal logic. You can return values to block or modify behavior. Use with caution — these are powerful and can affect core mechanics.
Cart