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
BepInEx pack for V Rising. Preconfigured and includes Unity Base DLLs.
Preferred version: 1.733.2deca-VampireCommandFramework
Command framework for developers to easily create universal commands for their plugins.
Preferred version: 0.11.0README
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 syncallfor 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:
- Pick a short, clear key such as
ragePotion,sunImmune, orwarriorT1. - Set
BuffPrefabto the V RisingPrefabGUIDfor the buff. - Choose an existing category such as
potion,elixir,blood_buff, ormisc. - Set
CostandEnabled. - Run
.perk reload, then.perk validate. - 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, andrelicPaladin. -
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
reliccategory:relicBehemothrelicManticorerelicMonsterrelicPaladin
-
Added the default
relicbuff 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.