


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. Stats acquired via Perkshop will not appear in the player's UI, but they will have gameplay effects.
Command prefix:
.perk
.perk validate, .perk diag, .perk reload, and .perk syncall for live-server administration.Install these before PerkShop:
This repository does not include game, BepInEx, VCF, or interop DLLs.
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
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:
ragePotion, sunImmune, or warriorT1.BuffPrefab to the V Rising PrefabGUID for the buff.potion, elixir, blood_buff, or misc.Cost and Enabled..perk reload, then .perk validate..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.
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.
See LICENSE.