PerkShop
Server-side V Rising perk shop with persistent stat perks, renewable timed buffs, blood-buff slots, admin tools, and Bloodcraft-compatible defaults.
| Last updated | a day ago |
| Total downloads | 36 |
| Total rating | 0 |
| Categories | Server Mods Oakveil Update |
| Dependency string | Perkshop-PerkShop-0.1.7 |
| Dependants | 0 other packages depend on this package |
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. Stats acquired via PerkShop may not all appear in the player's UI, but they still have gameplay effects.
Command prefix:
.perk
Credits
PerkShop was inspired by and built with reference to the V Rising modding community's work:
- Bloodcraft by zfolmt — inspiration/reference for the buff and stat systems.
- PrisonerBlood by GGs — inspiration/reference for the command-based shop flow.
Transparency
The original working code for the mod is human made, but it has been greatly tinkered with AI for debuging and optimization.
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.
Dependencies
Install these before PerkShop:
- BepInExPack for V Rising
- VampireCommandFramework
This repository does not include game, BepInEx, VCF, or interop DLLs.
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
Commands
Player commands
.perk menu
.perk status [page]
.perk search <text>
.perk sync
.perk bufflist [page]
.perk buffdet <buffKey>
.perk buffbuy <buffKey>
.perk buffremove <buffKey>
.perk statlist [page]
.perk statdet <statKey>
.perk statbuy <statKey>
.perk statremove <statKey>
Admin commands
.perk admin
.perk info <player>
.perk reload
.perk validate
.perk diag
.perk syncall
.perk giftbuff <player> <buffKey>
.perk revokebuff <player> <buffKey>
.perk addbuff <player> <buffKey>
.perk clearbuff <player> <buffKey>
.perk giftstat <player> <statKey> <ranks>
.perk revokestat <player> <statKey> <ranks>
.perk addflat <player> <UnitStat|statKey> <amount>
.perk clearflat <player> <UnitStat|statKey>
Whitelist commands
.perk wlstatus
.perk wlcheckbuff
.perk wlcheckstat
.perk wlcheckall
.perk wlplayer <player>
.perk wladdbuff <player>
.perk wlremovebuff <player>
.perk wladdstat <player>
.perk wlremovestat <player>
Whitelist management
PerkShop has optional whitelist controls for limiting who can use the buff shop, stat shop, or both.
Whitelist behavior is controlled in BepInEx/config/PerkShop/perkconfig.json.
Typical whitelist fields are:
{
"EnableBuffWhitelist": false,
"EnableStatWhitelist": false,
"BuffWhitelist": [],
"StatWhitelist": []
}
When a whitelist is disabled, everyone can use that shop if the shop itself is enabled.
When a whitelist is enabled, only players in that whitelist can buy/use that shop.
Check whitelist state
.perk wlstatus
Shows whether buff/stat whitelists are enabled and how many players are listed.
.perk wlcheckbuff
.perk wlcheckstat
.perk wlcheckall
Checks whether your current character is allowed to use the buff shop, stat shop, or both.
Check a specific player
.perk wlplayer <player>
Shows whether a player is currently allowed to use PerkShop features.
Add or remove a player
Allow a player to use the buff shop:
.perk wladdbuff <player>
Remove a player from the buff shop whitelist:
.perk wlremovebuff <player>
Allow a player to use the stat shop:
.perk wladdstat <player>
Remove a player from the stat shop whitelist:
.perk wlremovestat <player>
Recommended whitelist setup
For a public server, a common setup is:
{
"EnableBuffWhitelist": false,
"EnableStatWhitelist": false
}
For a donor/event/admin-only perk shop, enable one or both whitelists and add players with the commands above.
Whitelist data is saved in PerkShop's config/data files and persists across restarts.
Configuration
Main config file:
BepInEx/config/PerkShop/perkconfig.json
Recommended live-server defaults:
{
"EnableDebugLogging": false,
"AutoDetectConfigChanges": false,
"ReapplyOwnedBuffsWhenMissing": true,
"ReapplyCheckIntervalSeconds": 60,
"ReapplyMaxUsersPerCycle": 5,
"OwnershipSaveDebounceSeconds": 2,
"PlayerCacheSaveDebounceSeconds": 30,
"RenewableTimedBuffDurationSeconds": 7200
}
After editing the config, reload and validate:
.perk reload
.perk validate
.perk diag
Adding buffs to the shop
PerkShop buffs are configured 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.
Keys
Stat keys
Players use these keys with:
.perk statbuy <key>
.perk statdet <key>
.perk statremove <key>
Common stat keys:
| Key | Stat |
|---|---|
HP |
Max Health |
PP |
Physical Power |
SP |
Spell Power |
MS |
Movement Speed |
AS |
Primary Attack Speed |
PR |
Physical Resistance |
SR |
Spell Resistance |
phll |
Physical Life Leech |
sll |
Spell Life Leech |
prll |
Primary Life Leech |
PCC |
Physical Critical Strike Chance |
PCD |
Physical Critical Strike Damage |
SCC |
Spell Critical Strike Chance |
SCD |
Spell Critical Strike Damage |
HR |
Healing Received |
DR |
Damage Reduction |
RY |
Resource Yield |
RBD |
Reduced Blood Drain |
SCR |
Spell Cooldown Recovery Rate |
WCR |
Weapon Cooldown Recovery Rate |
UCR |
Ultimate Cooldown Recovery Rate |
MD |
Minion Damage |
AAS |
Ability Attack Speed |
CDR |
Corruption Damage Reduction |
Some stats are gameplay-active but may not appear in TAB/Eclipse if the client UI does not render that stat type.
Blood-buff keys
Players use these keys with:
.perk buffbuy <key>
.perk buffdet <key>
.perk buffremove <key>
Examples:
warriorT1
warriorT2
warriorT3
warriorT4
rogueT1
rogueT2
rogueT3
rogueT4
bruteT1
bruteT2
bruteT3
bruteT4
Default blood families:
bruteT1-T4
corruptionT1-T4
creatureT1-T4
draculinT1-T4
mutantT1-T4
rogueT1-T4
scholarT1-T4
warriorT1-T4
workerT1-T4
Disabled by default:
draculaT1-T5
generalT5
For the complete key list, see docs/KEYS.md.
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.