Version

1.0.0

Updated

2 hours ago

Views

5

Downloads

0

Overview

SeasonPass is a full battle pass for Rust. A free track and a premium track, tiers your players climb by playing, daily and weekly challenges, and a season that rolls over on wipe.

The hard part of a battle pass is not the panel. It is the tuning. Almost every pass ever configured is either so slow nobody finishes or so fast it is over in four days, and the owner does not find out until the season has already ended.

SeasonPass measures itself. It tells each player how long the season will actually take them at the rate they are playing, and it tells you — from your own server's data — the median tier reached, the percentage of players finishing, and whether your curve is achievable at all. That is the part no other pass ships, and it is the reason this one is worth installing over the one you are already running.

Three templates ship with it, and they are three genuinely different interfaces — different layout, different chrome, different structure — not one panel in three colours.

Free, MIT, no dependencies. Works on a bare server with nothing else installed.

Features

  • Free track and premium track, unlimited rewards on every tier
  • 1 to 200 tiers, added one at a time or generated with an XP curve
  • Three complete templates: The Runway, The Field Manual, The Ascent
  • Live completion estimate — every player sees how long the season will take them
  • Catch-up XP so players who join late or fall behind can still finish
  • Admin health readout built from real server data, not guesswork
  • 20 XP sources, each with its own value, on/off switch and daily cap
  • Daily, weekly and season-long challenges drawn from a pool you write
  • Every reward switches between an item, a server command and a currency payout with one button
  • Economics and ServerRewards built in for both buying premium and paying rewards out
  • Or scrap, any item, or your own economy plugin through three hook names
  • Items support amount, skin, custom name and blueprints
  • Retroactive premium — buying at tier 40 grants the first 39 too, on by default
  • Premium XP multiplier and extra daily challenges
  • Anti-farm caps: per source, per hour, per day
  • Rewards that do not fit go to a holding area, never destroyed
  • Season rolls on wipe, with reset, keep or carry-over behaviour
  • Every visible string editable in game, unlimited languages, player language switcher
  • Full in-game editor. Nothing needs a config file
  • Free, MIT, no dependencies

Pacing, and why it matters more than the panel

This is the section worth reading before anything else, because it is where passes fail.

A battle pass has one number that decides whether it works: how many hours it takes a normal player to finish. Set it too high and players do the maths, realise they cannot get there, and stop caring by day three. Set it too low and the whole thing is over before the wipe is.

Nearly every pass leaves you to guess that number. SeasonPass calculates it three different ways.

1. Every player sees their own estimate

The panel shows a line like “finishes in 14 days at your rate”, worked out from that player's own XP history — not an average, not a guess. It is honest, and it is the number that decides whether they keep playing.

Showing an honest estimate sounds risky. It is not. A player who can see they will finish keeps playing. A player who cannot tell either way assumes the worst and quits. The estimate is a setting if you disagree, but it defaults to on for a reason.

2. Players who fall behind earn more

Anyone more than a few tiers below the expected pace for the day earns bonus XP, scaling with how far behind they are, up to a ceiling you set. Late joiners are the single biggest source of churn on a seasonal system, and this is the fix.

Setting Default What it does
Give players who fall behind bonus XP On Turns catch-up on
Tiers behind before catch-up starts 3 Grace before the bonus kicks in
Highest catch-up multiplier 2.0× The ceiling for players furthest behind

3. You get told the truth about your own curve

Run pass.health and you get a readout built from your server, not from defaults:

SeasonPass health
  season 1 - 30 tiers, 70,200 XP total
  ends: 29d 23h
  players this season: 42
  median tier: 11
  finished: 3  (7%)
  loaded 240 min ago
  XP sources that have fired since load: 18 of 20

If more than a handful of players are in and nobody has finished, it says so directly. Most owners have no idea their pass is untunable until the season is already over.

The same readout lists which XP sources have actually fired since the plugin loaded. If you have players gathering wood and gather.wood never appears, something is wrong and you can see it in one command instead of finding out from a complaint three weeks later.

The three templates

Pick one in the LAYOUT room and the entire pass is rebuilt. These are not colour schemes — the header, the tier rail, the reward cards, the progress display and the whole layout are different.

Template What it is
The Runway Deep blue and cyan. Tiers run horizontally as a departure board, the current tier lit and centred, the track scrolling behind it. Reads like an airport display.
The Field Manual Cream paper, black ink, red stamps. Tiers laid out as numbered entries in a printed military manual, claimed ones stamped through. No glow anywhere.
The Ascent Near black with a single green line. Tiers stack vertically and you climb them, the completed run falling away below. The most game-like of the three.

Every template is fully skinned — free and premium tracks, locked and claimable states, milestone tiers, challenges, the estimate line and the premium offer all have their own treatment in each one.

XP sources

Twenty sources ship enabled with sane values. Every one has its own XP amount, an on/off switch, and an optional daily cap.

Group Sources
Combat Player kill, headshot bonus, scientist, animal
Raiding Door destroyed, wall destroyed
Looting Barrel, crate, elite crate, hackable crate
Gathering Wood, stone, metal, sulfur, cloth
Building Block placed, block upgraded
Other Item crafted, item recycled, per minute played

Anti-farm is on by default and you should leave it on. Without per-source daily caps and a global hourly cap, sulfur XP turns the entire pass into a quarry simulator by day two. The defaults are a 4,000 XP hourly ceiling plus individual caps on every gathering source.

Any other plugin can feed the pass with one call, so an event, an arena or a custom minigame can grant XP without SeasonPass needing to know it exists.

Challenges

Three pools, each with its own reset. Challenges are drawn at random from the pool you write, so no two players get the same list.

Pool Resets Default handed out
Daily At an hour you pick 3
Weekly On a day you pick 2
Season Never All of them

Each challenge has its own text, target, XP reward and difficulty. Because challenges are built on the same source list as XP, anything that can grant XP can also be a challenge — kill 20 scientists, gather 5,000 sulfur, upgrade 40 blocks to stone.

Premium accounts can be given extra daily challenges on top.

Rewards

Every reward on every tier switches between three kinds with one button.

Kind What it does
Item Any shortname, any amount, with skin, custom name and a blueprint toggle. Pick from a searchable list or from the item in your hand.
Command Any server command, with {steamid}{player} and {amount} substituted. Run as the server or as the player.
Currency Pays Economics coins, ServerRewards RP, or your own currency plugin.

Currency payouts are configured separately from the premium price, so premium can cost scrap while a tier pays out coins. The editor shows a live tick next to each currency confirming that plugin is actually loaded, so a typo is visible immediately rather than at claim time.

If a reward will not fit — a full inventory, or a currency plugin that is temporarily unloaded — it goes to a holding area and the player collects it later. Nothing is ever destroyed.

Premium

Premium can be granted by permission, bought in game, or both.

  • Price in scrap, any item, Economics, ServerRewards, or your own plugin
  • Retroactive unlock, on by default — buying at tier 40 grants every premium reward from the first 39
  • Premium XP multiplier, default 1.25×
  • Extra daily challenges for premium accounts
  • Premium resets each season, or carries, your choice
  • Admin command to grant it to anyone

Leave retroactive unlock on. Buying premium at tier 40 and receiving nothing for the forty tiers already climbed is the single most complained-about mechanic in every battle pass ever shipped, in Rust and outside it. The setting exists because some owners want it. It defaults to on because they are wrong.

The editor

Type /pass, press EDIT, and everything is in there. Eight rooms:

Room What is in it
SEASON Name, subtitle, length, wipe behaviour, end action, carry-over, end and restart buttons
TIERS Add tiers, generate an XP curve, reorder, and open any tier to edit both tracks
XP SOURCES All twenty, with value, switch and daily cap, plus the global caps
CHALLENGES Write the pool, set targets and rewards, choose the band
PREMIUM Price, currency, multiplier, extra challenges, and the currency reward plugins
PACING The estimate, catch-up settings, and the health readout
LAYOUT Template picker, panel size, blur, darkness, text scale, what to show
WORDS Every string in the plugin, per language

Nothing in the editor requires a config file, a server restart or a plugin reload. Changes apply on the spot.

Text and languages

Every visible string is editable in game and stored per language. Add as many languages as you like, and let players switch with a button in the header if you want them to.

Nothing is hardcoded — tier labels, button text, the estimate line, chat messages, the premium offer, all of it.

Commands and permissions

Command What it does
/pass Open the pass. Also /bp and /season, and you can add your own
/pass tune Open the editor
/pass notify Turn the XP popups on or off, per player
pass.give <steamid> <xp> Grant XP
pass.tier <steamid> <n> Set a player's tier
pass.premium <steamid> Toggle premium for a player
pass.health The pacing and diagnostics readout
Permission What it grants
seasonpass.use Open the pass, if you have turned the gate on
seasonpass.admin The editor and the admin commands
seasonpass.premium Premium track, as an alternative to buying it

Setup

  1. Drop SeasonPass.cs into oxide/plugins/
  2. Grant yourself the editor with oxide.grant group admin seasonpass.admin
  3. Type /pass and press EDIT

A thirty tier season is generated on first load with rewards on both tracks, so there is a working pass to look at immediately. Tiers, players and translations live in oxide/data/SeasonPass/, everything else in the config file, and all of it is editable from the panel.

The generated season is a starting point, not a recommendation. Before you open it to players, set your season length, run pass.health after a few days, and adjust. The whole point of this plugin is that you can see whether your numbers work.

Developer API

[PluginReference] private Plugin SeasonPass;

SeasonPass?.Call("OpenPass", player);
SeasonPass?.Call("ClosePass", player);
SeasonPass?.Call("GetTier", player);        // int
SeasonPass?.Call("GetXp", player);          // int
SeasonPass?.Call("IsPremium", player);      // bool
SeasonPass?.Call("GetTierCount");           // int
SeasonPass?.Call("GetSeasonName");          // string

SeasonPass?.Call("AwardXp", player, 250, "my-event");

AwardXp is the important one. Any plugin can feed the pass with a flat XP amount and a source tag, so an event, an arena or a minigame can grant progress without SeasonPass knowing it exists. There is also SeasonPassAward, which takes a source key and a unit count and applies that source's configured value and caps.

Four hooks fire:

void OnSeasonPassTierUp(BasePlayer player, int tier) { }
void OnSeasonPassClaim(BasePlayer player, int tier, bool premium) { }
void OnSeasonPassPremium(BasePlayer player) { }
void OnSeasonPassEnd(int finished) { }

Compatibility

Oxide and Carbon. No dependencies. Economics, ServerRewards and Notify are optional and detected automatically.

The class is named SeasonPass specifically so it can sit alongside the paid BattlePass plugin without colliding, if you want to run them side by side while you switch over.

Every visual effect is a setting, so if anything renders oddly on an unusual build you can switch it off. The symbols used in the interface are configurable characters, so if your server's font renders one as a box you can replace it with anything you like.

Requirements & compatibility

Oxide and Carbon. No dependencies. Economics, ServerRewards and Notify are optional and detected automatically. The class is named SeasonPass specifically so it can sit alongside the paid BattlePass plugin without colliding, if you want to run them side by side while you switch over. Every visual effect is a setting, so if anything renders oddly on an unusual build you can switch it off. The symbols used in the interface are configurable characters, so if your server's font renders one as a box you can replace it with anything you like.

No updates yet.

No reviews yet.

Log in to write a review (buyers only).