You are viewing a potentially older version of this package. View all versions.
Perkshop-PerkShop-0.1.2 icon

PerkShop

Server-side V Rising perk shop with persistent stat perks, renewable timed buffs, blood-buff slots, admin tools, and Bloodcraft-compatible defaults.

Date uploaded 2 months ago
Version 0.1.2
Download link Perkshop-PerkShop-0.1.2.zip
Downloads 17
Dependency string Perkshop-PerkShop-0.1.2

This mod requires the following mods to function

BepInEx-BepInExPack_V_Rising-1.733.2 icon
BepInEx-BepInExPack_V_Rising

BepInEx pack for V Rising. Preconfigured and includes Unity Base DLLs.

Preferred version: 1.733.2
deca-VampireCommandFramework-0.11.0 icon
deca-VampireCommandFramework

Command framework for developers to easily create universal commands for their plugins.

Preferred version: 0.11.0

README

PerkShop

PerkShop is a server-side V Rising mod that adds a configurable perk shop through VampireCommandFramework commands.

Players can buy persistent buffs and stat perks. Admins can grant, revoke, whitelist, inspect, validate, reload, and sync player perks.

Command prefix:

.perk

Current status

Version: 0.1.2

This is the first GitHub-ready release baseline. It is based on the tested v0.1.2 behavior:

  • safe stats that the client UI supports appear in TAB/Eclipse totals;
  • other stats still apply gameplay effects even if the client UI does not show them;
  • blood buffs do not override equipped blood type perks;
  • multiple PerkShop blood buffs can coexist;
  • PerkShop blood buffs are removable and compatible with Bloodcraft in testing;
  • potions, elixirs, and blood buffs use renewable timed mode instead of no-countdown lifetime stripping.

Features

  • Configurable buff shop.
  • Configurable permanent stat shop.
  • Renewable timed buffs for potions, elixirs, and blood buffs.
  • Blood-buff category defaults to five slots.
  • Purchased ownership persists across relogs/restarts.
  • Admin-given buffs and flat stats.
  • Buff/stat whitelist support.
  • .perk validate, .perk diag, .perk reload, and .perk syncall for live-server administration.
  • Debounced JSON persistence and throttled periodic reapply.
  • Bloodcraft-safe default stat carrier.

Thunderstore package

The upload package must contain only runtime files at the root:

PerkShop.dll
manifest.json
README.md
CHANGELOG.md
icon.png

Build the package locally with:

.\pack-release.ps1

or:

./pack-release.sh

See THUNDERSTORE.md for the release checklist.

Dependencies

Install these before PerkShop:

  • BepInExPack for V Rising
  • VampireCommandFramework

This repository does not include game, BepInEx, VCF, or interop DLLs.

Build

See BUILD.md.

Expected local dependency folders:

core/
interop/
libs/

These folders are ignored by git and must be copied from your own server/modding setup.

Build:

dotnet build PerkShop.csproj -c Release

Output:

bin/Release/net6.0/PerkShop.dll

Installation

Copy the compiled DLL to the server:

BepInEx/plugins/PerkShop/PerkShop.dll

Start the server once to generate:

BepInEx/config/PerkShop/perkconfig.json
BepInEx/config/PerkShop/ownedbuffs.json
BepInEx/config/PerkShop/playercache.json

Then edit the config and reload in game:

.perk reload
.perk validate
.perk diag

Adding buffs to the shop

PerkShop buffs are configured in BepInEx/config/PerkShop/perkconfig.json under the Buffs object. Each entry key is the command key players use with .perk buffbuy <key>.

Minimal example:

"myBuffKey": {
  "Enabled": true,
  "DisplayName": "My Custom Buff",
  "Category": "misc",
  "BuffPrefab": 123456789,
  "Cost": 100,
  "PersistentPurchase": true,
  "PreventDuplicate": true,
  "DurationSeconds": 7200,
  "PersistThroughDeath": false,
  "MutateAppliedBuffLifetime": true,
  "Notes": "Short explanation shown in .perk buffdet."
}

Recommended process:

  1. Pick a short, clear key such as ragePotion, sunImmune, or warriorT1.
  2. Set BuffPrefab to the V Rising PrefabGUID for the buff.
  3. Choose an existing category such as potion, elixir, blood_buff, or misc.
  4. Set Cost and Enabled.
  5. Run .perk reload, then .perk validate.
  6. Test with .perk buffdet <key> and .perk buffbuy <key>.

Important fields:

Field Purpose
Enabled Whether players can see/buy the buff.
DisplayName Friendly name shown in commands.
Category Slot group. blood_buff defaults to five slots.
BuffPrefab The V Rising buff PrefabGUID to apply.
Cost Currency cost per purchase.
PersistentPurchase Saves ownership and reapplies the buff when missing.
PreventDuplicate Blocks buying/applying a duplicate active buff.
DurationSeconds Active buff duration. Renewable categories use the configured renewable duration.
PersistThroughDeath Whether the active buff instance should persist through death when not using renewable timed mode.
MutateAppliedBuffLifetime Advanced compatibility setting. Leave true unless testing a special buff.
Notes Description shown by .perk buffdet.

Potions, elixirs, and blood buffs use renewable timed mode by default. They keep a visible countdown and are reapplied by ownership when missing or expired. This is intentional and safer than stripping vanilla lifetime cleanup.

Avoid adding exotic or scripted buffs unless you test them carefully. Good candidates are passive stat buffs, consumable-style buffs, blood-tier buffs, and simple utility buffs. Avoid shapeshift, travel, channel, summon, boss phase, quest, tutorial, or temporary spell-execution buffs.

Documentation

Important compatibility notes

PerkShop is server-side. It can apply stats through gameplay systems, but the client attributes UI only displays stat types it knows how to render. Some perks may therefore be gameplay-active without appearing in TAB/Eclipse.

Blood buffs are intentionally renewable timed buffs. They keep a countdown and are reapplied when missing/expired by PerkShop ownership sync. This avoids the stale UI/cleanup problems caused by force-removing vanilla lifetime behavior.

License

See LICENSE.

Key reference

PerkShop uses short player-facing keys for easier config and commands. See docs/KEYS.md.

Examples:

.perk statbuy PP
.perk statbuy SR
.perk buffbuy warriorT1
.perk buffbuy rogueT2

CHANGELOG

Changelog

0.3.0

  • Added the full default relic perk set to the available buy list: relicBehemoth, relicManticore, relicMonster, and relicPaladin.

  • Added per-entry currency overrides for buff and stat purchases while preserving the global default currency.

  • Added relic tower buffs to the default config under the standardized relic category:

    • relicBehemoth
    • relicManticore
    • relicMonster
    • relicPaladin
  • Added the default relic buff category and placed it on the renewable timed lane.

  • Improved command documentation so each command is described, not just listed.

  • Fused docs markdown content into the README, then trimmed the README so it keeps one clean command/config/key reference.

  • Fixed the relic category key mismatch by standardizing the default category name to relic.

0.2.0

  • Added per-entry currency overrides groundwork and relic shop support in the active source branch.