



This is the repository for CustomAbilities, coded by Fryke (fryke) on Discord.
CustomAbilities is a V Rising dedicated server mod that allows server admins to assign custom abilities to players and items. Override any ability slot on any weapon category, apply abilities directly to specific items, and provide a public API for other mods to integrate with.
All commands use the .abilities prefix (shorthand: .ab).
| Command | Shorthand | Description | Admin Only |
|---|---|---|---|
.abilities set primary |
.ab set q |
Set your currently selected R spell to Q | No |
.abilities set secondary |
.ab set e |
Set your currently selected C spell to E | No |
.abilities clear primary |
.ab clear q |
Clear your Q ability slot | No |
.abilities clear secondary |
.ab clear e |
Clear your E ability slot | No |
.abilities spell list [player] |
.ab spl |
List available spells from your pool (optionally view another player's pool as admin) | No* |
.abilities spell assign <slot> <guid> |
.ab spa |
Assign a spell from your pool to a slot | No |
.abilities spell unassign <slot> |
.ab spu |
Clear a spell from a slot | No |
* Viewing another player's spell pool requires admin.
| Command | Shorthand | Description |
|---|---|---|
.abilities set <slot> <guid> [player] [category] |
.ab as |
Set an ability on a slot for a player/weapon category |
.abilities clear <slot> [player] [category] |
.ab ac |
Clear an ability slot for a player/weapon category |
.abilities clearall [player] [category] |
.ab aca |
Clear all ability slots for a player/weapon category |
.abilities cast <guid> |
.ab cast |
Cast an ability by prefab GUID |
.abilities item set <slot> <guid> |
.ab ias |
Set an ability on the held item |
.abilities item clear <slot> |
.ab iac |
Clear an ability slot on the held item |
.abilities item clearall |
.ab iaca |
Clear all abilities on the held item |
Slot IDs: 0 = Attack, 1 = Q, 2 = E, 3 = Dash, 4 = Spell 1, 5 = Spell 2, 6 = Ultimate
Weapon categories: All, Unarmed, Axe, Claws, Crossbow, Daggers, FishingPole, GreatSword, Longbow, Mace, Pistols, Reaper, Slashers, Spear, Sword, TwinBlades, Whip. Passing All as the weapon category applies the change across all categories.
Config is stored in BepInEx/config/io.vrising.CustomAbilities.cfg.
| Key | Default | Description |
|---|---|---|
BlockJewelableAbilitiesOnItems |
true |
Prevent jewelable abilities (spell school abilities) from being set on items/weapons |
DevMode |
false |
Enable development mode with additional logging/debugging features |
| File | Path |
|---|---|
| BepInEx config | BepInEx/config/io.vrising.CustomAbilities.cfg |
| Player data | BepInEx/config/CustomAbilities/customabilities_player_data.json |
| Item data | BepInEx/config/CustomAbilities/customabilities_item_data.json |
Data persists through server restarts and is saved automatically every 30 seconds.
CustomAbilities.dll in your BepInEx/plugins/ directory.BepInEx/config/io.vrising.CustomAbilities.cfg.CustomAbilities provides a public API for other mods. Reference CustomAbilities.dll and add [BepInDependency("io.vrising.CustomAbilities")] to your Plugin class.
Supply custom ability arrays for shapeshift forms. First non-null result wins.
CustomAbilities.AbilityAPI.RegisterFormAbilityOverride((playerEntity, formBuffGuid) =>
{
if (formBuffGuid.Equals(MyFormBuff))
return new int[8] { 0, 0, 0, 0, myAbility, 0, 0, 0 };
return null;
});
Modify ability slots at runtime (e.g., based on tags or buffs).
CustomAbilities.AbilityAPI.RegisterSpecialCaseHandler((playerEntity, weaponEquipBuff, slots) =>
{
if (MyTagSystem.HasTag(playerEntity, "empowered"))
slots[4] = myEmpoweredAbility;
return slots;
});
Force an ability refresh after external changes.
CustomAbilities.AbilityAPI.RefreshEquipBuff(playerEntity);
Contribute spells to a player's available spell pool. The spell pool gates which spells players can self-assign via .abilities spell assign. Multiple providers are aggregated and deduplicated.
CustomAbilities.AbilityAPI.RegisterSpellPoolProvider(playerEntity =>
{
return new List<int> { mySpellGuid1, mySpellGuid2 };
});
Querying the pool:
// Get all available spells for a player
List<int> spells = CustomAbilities.AbilityAPI.GetAvailableSpells(playerEntity);
// Check if a specific spell is available
bool hasSpell = CustomAbilities.AbilityAPI.HasAvailableSpell(playerEntity, spellPrefabGuid);
Bloodcraft is another V Rising server mod that provides limited ability slot customization. Both mods patch the same ReplaceAbilityOnSlotSystem to apply ability changes.
How they interact:
Recommendation: If you use both mods, assign abilities through CustomAbilities for full control. Bloodcraft's limited unarmed slot assignments will be automatically superseded where CustomAbilities has a slot configured.
This project is licensed under AGPL-3.0.
Portions of code and design patterns in this project were inspired by or adapted from the following projects:
This is an independent project with its own purpose and functionality. It is not a fork, modification, or derivative of any of the above projects. Some utility code and patterns were referenced during development.