

Server only mod for RPG systems, which also includes ChatCommands with bug fixes. Read the changelog for extra details. My Fork adds a number of config options to mastery and allows you to invert the dynamic faction system, making them stronger when killed.
If you are updating from before 1.7.0 and you had custom rates for bloodlines or mastery, you will need to manually move them to their new names of Rates, Bloodline and Rates, Mastery which will be created when you next launch, this was done to make the config more readable in the future.
To get out for gloomrot through all the issues on my end, several systems are temporarily not active, and there is a workaround for buffing.
Currently you NEED to reequip boots to calculate mastery and bloodlines, they will take a snapshot of your current. This is because the previous method no longer works
Backup saves are added in case of a crash, you might need to make the folders yourself however.
Experience, Mastery, and Bloodlines are all that really work right now, and only some of the commands.
PvP Content will be rebuilt later, and likely pulled out into a seperate mod.
Many commands are now in community commands, Use that!
1.6.3 has several bug fixes, some formatting updates and bug fixes from Aontas, and a compatability fix for serverlaunchfix by Deca It also has new debug log config options, turn them on if you need to give me the logs
1.7.0 has a bevy of new configuration options for how to handle XP loss under the new Rates, Experience section, and merged in an XP sharing rework from aontas. It also includes config options for what buff to hijack, and what buff to apply when your mastery or bloodline changes, found in the Buff System section. It also changes the names of Mastery rates and Bloodline Rates config options to Rates, Mastery and Rates, Bloodline respectively
Killing with other vampires can provide group XP. This is governed by Group Modifier, Group Level Scheme and Ally Max Distance.
A vampire is considered to be in your group if they are in the same clan and within the distance specified by Ally Max Distance.
Group XP is modified by the Group Modifier and Group Level Scheme.
Given a scenario of 2 allied vampires close together, PC 1 (lvl 10), PC 2 (lvl 20), where PC 1 kills the mob, the following table shows the level used to calculate each players XP:
| Scheme | Name | PC 1 | PC 2 |
|---|---|---|---|
| 0 | None | 10 | N/A |
| 1 | Average | 15 | 15 |
| 2 | Max | 20 | 20 |
| 3 | Each player | 10 | 20 |
| 4 | Killer | 10 | 10 |
Notes:
0: Effectively disables group XP. Each vampire only gets XP for mobs that they get the killing blow on1: Higher level vampires get more XP when grouped with lower level vampires2: Lower level players are penalised when playing with higher level players3: Each player gets XP based on their own level (Default behaviour)4: Each player gets XP based on who killed the mob (Previous version behaviour)Mastery Decay
When the vampire goes to sleep (offline), all their mastery will continuously decay per minute passed while offline.
This decay will keep on counting even while the server is offline.
Efficency System
Off by default, when a vampire feels ready, they can type .mastery reset all, or .mastery reset sword or any other weapon type, to reset their mastery values to 0, but make their mastery that much more effective in the future. Thus a vampire who reaches 100% mastery in sword, then types .mastery reset sword will be reset back to 0% mastery, but when calculating the bonus from mastery, will now be considered to have twice as much mastery as they currently do, so if they reach 100% mastery, they will get a bonus like they have 200%, if they reset again at this point, it will go up to 300% efficency, thus a mastery of 50% would now be like 150% and 10% would be 30% and so on. The Efficency is specifc to each weapon type, so you could have 1000% efficency with swords, 250% with unarmed and 100% with axes.
Growth System
Off by default, and only works if efficency is also on, but when you reset, the Growth system will change how fast you get mastery in the future based on what you reset at, so if the growth is set to 1, and you reset with 50% mastery, you will now gain new mastery 50% faster, if you were instead to then reset with another 50% mastery, you would now gain mastery twice as fast. The growth is specific for each weapon, same as with efficency. If the config for growth is set to -1, then it will act as a divisior on the amount gained, so if you reset with 100% mastery and growth config at -1, you would gain half as much mastery, if you reset again at 100% mastery, it would be a third, and so on.
Bloodline Decay
Though the option is currently present, decay is not yet implemented for bloodlines.
Efficency System
On by default, when a vampire feels ready, they can type .bloodline reset <bloodline name>, The bloodline name can be the current names, the default names, or the blood type names, to reset their bloodline strength to 0, but make their bloodline that much more effective in the future. Thus a vampire who reaches 100% Dracula bloodline, then types .bl reset dracula will be reset back to 0% strength, but when calculating the bonus from the bloodline, will now be considered to have twice as much strength as they currently do, for the purposes of the power of the effect only so if they reach 25% strength, they will get a bonus like they have 50%, but not get the bonus unlocked when they hit 50%. if they reset again at this point, it will go up to 250% efficency, thus a bloodline of 50% would now be like 125% and 10% would be 25% and so on. The Efficency is specifc to each bloodline, so you could have 500% efficency with Hadubert's bloodline, 250% with Dracula's and 100% with Ilvris' bloodline.
Growth System
On by default, and only works if efficency is also on, but when you reset, the Growth system will change how fast you get bloodline strength in the future based on what you reset at, so if the growth is set to 1, and you reset with 50% strength, you will now gain new strength 50% faster, if you were instead to then reset with another 50% strength, you would now gain strength twice as fast. The growth is specific for each bloodline, same as with efficency. If the config for growth is set to -1, then it will act as a divisior on the amount gained, so if you reset with 100% strength and growth config at -1, you would gain half as much strength, if you reset again at 100% strength, it would be a third, and so on.
The higher your heat level is, a more difficult squad of ambushers will be sent by that faction to kill you.
Heat level will eventually cooldown the longer you go without killing NPCs from that faction,
space your kills so you don't get hunted by an extremely elite group of assassins.\
Otherwise, if you are dead for any reason at all, your heat/wanted level will reset back to anonymous.\
Note:
- Ambush may only occur when the player is in combat.
- All mobs spawned by this system is assigned to Faction_VampireHunters
PvP toggle will be overridden by Hostility Mode if the honor system is active.
Punishment System
Additionally, there's a punishment system which can be used to punish players who kill lower level players,
which is configurable in the config.
The punishment system also has an anti-cheese built-in in case the server is not using the EXP system.
Purposefully unequiping gear to appear as lower level to cheese the punishment system will not work.
Punishment will apply a debuff that reduces player combat efficiency.
The honor title is added as a prefix to the player's name.
All chat commands which are included within RPGMods should still be used without the
honor title prefix if a player name is required.
Other stuff like whispering to other players does require the title prefix to be used.
Honor title prefix is not automatically updated for chat messages,
everything else like building ownership and hovering player names are automatically updated.
For all the mechanics to work correctly, please set your server settings to:
Game Mode: PvPCastle Damage Mode: AlwaysPlayer Damage Mode: Always[ON] Aggressive
Can damage any player.
No reputation loss will be given to the aggressor when killed.
[OFF] Passive
Cannot damage other players with a positive reputation.
[ON] Sieging
Player castle(s) are now vulnerable, and can damage other sieging player castle(s).
Aggressive state is enforced during siege time.
Siege mode cannot be exited until a 3 hour window has passed since activation.
Activating siege mode will also affect your allies.
[OFF] Defensive
Exit castle siege mode.
Castle(s) are now invulnerable.
Player is able to enter passive state again.
Global Siege
In global siege mode, all castles are vulnerable unless the player's honor bonus says otherwise.
Player aggressive state is not enforced during global siege.
| Title | Requirement | Reward/Kill | Bonus |
|---|---|---|---|
| Glorious | 10000 | -1000 | Castle(s) is permanently invulnerable. Bonus is negated if allied with Dreaded players. |
| Noble | 5000 | -500 | Castle(s) receive -50% reduced damage. Bonus is negated if allied with Dreaded players. |
| Virtuous | 1500 | -100 | +15% resource gathering. |
| Reputable | 500 | -50 | -25% durability loss. (Does not affect durability loss from combat.) |
| Neutral | 0 | -25 | No additional stats. |
| Suspicious | -1 | 0 | No additional stats. |
| Infamous | -1000 | 10 | Enforced aggressive state. |
| Villainous | -3000 | 50 | -20% damage taken from positive rep vampires. |
| Nefarious | -10000 | 100 | +20% damage dealt to positive rep vampires. |
| Dreaded | -20000 | 150 | Enforced castle siege participation |
Each factions in the world will continously gain strength for every in-game day cycle.
Vampires will need to regularly cull these factions mobs to prevent or weaken the faction.
For each mobs killed, the faction growth will be hampered, if enough are killed, the faction may even weaken.
Every faction strength gain and stat buff can be manually configured, by the server admin via config & json file.
Use Gaming.Tools to look up NPCs faction.
//-- DO NOT COPY PASTE - JUST EDIT THE FILE BUILD BY THE AUTOMATICALLY
//-- INFO:
//-- - Dynamic value: can and will change during gameplay.
//-- - Static value: will not change during game play.
//-- - FactionBonus: this section is all static.
"-413163549": {
"Name": "Faction_Bandits",
"Active": false, //-- Set to true to activate this faction
"Level": 0, //-- Dynamic value.
"MaxLevel": 0, //-- Static value. Faction will never go above this level.
"MinLevel": 0, //-- Static value. Faction will never go below this level.
"ActivePower": 0, //-- Dynamic value. Current active power that will get exported to stored power.
"StoredPower": 0, //-- Dynamic value. Once it reach required power, faction level up. If it reach < 0, faction level down.
"DailyPower": 0, //-- Static value. Active power will be set to this for every in-game day cycle.
"RequiredPower": 0, //-- Static value. Stored power need to reach this value for faction to level up.
"FactionBonus": {
"Level_Int": 0, //-- Stats bonus that will be given to the faction mobs. Formula: OriginalValue + (Value * Level)
"HP_Float": 0, //-- Leave at 0 to not give bonus. Negative to debuff when level up, buff when level down. Postitive to buff when level up, debuff when level down.
"PhysicalPower_Float": 0,
"PhysicalResistance_Float": 0, //-- Unit will be invulnerable to physical damage if this reach 1
"PhysicalCriticalStrikeChance_Float": 0,
"PhysicalCriticalStrikeDamage_Float": 0,
"SpellPower_Float": 0,
"SpellResistance_Float": 0, //-- Unit will be invulnerable to spell damage if this reach 1
"SpellCriticalStrikeChance_Float": 0,
"SpellCriticalStrikeDamage_Float": 0,
"DamageVsPlayerVampires_Float": 0,
"ResistVsPlayerVampires_Float": 0, //-- Unit will be invulnerable to player if this reach 1
"FireResistance_Int": 0
}
}
Use Gaming.Tools to look up NPCs GUID. You can add some monster to the ignored list with their Prefab Name.
[
"CHAR_Undead_Banshee",
"CHAR_Cultist_Pyromancer"
]
Commands are configured to require a minimum level of permission for the user to be able to use them.
When there's no minimum permission set in the command_permission.json, it will default to a minimum requirement of permission lv. 100.
VIP System, when enabled, will enable the user with permission level higher or equal to the minimum requirement set in the config,
to be able to bypass server capacity.
Permission levels range from 0 to 100.
With 0 as the default permission for users (lowest),
and 100 as the highest permission (admin).
You can now ban a player for the specified duration in days using the .ban/.unban command.
WARNING If you remove RPGMods, all the banned users via the command will no longer be banned!
Removed as it was causing issues in some other localities... Isn't programming for a global audience fun?
Prefix [default .]Command Delay [default 5]DisabledCommands [default empty]WayPoint Limits [default 3]Enable VIP System [default false]Enable VIP Whitelist [default false]Minimum VIP Permission [default 10]Durability Loss Multiplier [default 0.5]Garlic Resistance Multiplier [default -1.0]Silver Resistance Multiplier [default -1.0]Move Speed Multiplier [default -1.0]Resource Yield Multiplier [default 2.0]Durability Loss Multiplier [default 0.5]Garlic Resistance Multiplier [default 2.0]Silver Resistance Multiplier [default 2.0]Move Speed Multiplier [default 1.25]Resource Yield Multiplier [default 2.0]Announce PvP Kills [default true]Enable Honor System [default false]Enable Honor Title [default true]Max Honor Gain/Hour [default 250]Enable Honor Benefit & Penalties [default true]Custom Siege Duration [default 180]Enable Hostile Glow [default true]Enable Proximity Hostile Glow [default true]Enable the PvP Ladder [default true]Sort PvP Ladder by Honor [default true]Enable PvP Toggle [default true]Enable PvP Punishment [default true]Punish Level Difference [default -10]Offense Limit [default 3]Offense Cooldown [default 300]Debuff Duration [default 1800]Buff Siege Golem [default false]Physical Damage Reduction [default 0.5]Spell Damage Reduction [default 0.5]Enable [default true]Heat Cooldown Value [default 35]Bandit Heat Cooldown Value [default 35]Cooldown Interval [default 60]Ambush Interval [default 300]Ambush Chance [default 50]Ambush Despawn Timer [default 300]Enable [default true]Max Level [default 80]Multiplier [default 1]VBlood Multiplier [default 15]EXP Lost / Death [default 0.10]Constant [default 0.2]Group Modifier [default 0.75]Ally Max Distance [default 50]Group Level Scheme [default 3]Enable Weapon Mastery [default true]Enable Mastery Decay [default true]Max Mastery Value [default 100000]Mastery Value/Combat Ticks [default 5]Max Combat Ticks [default 12]Mastery Multiplier [default 1]VBlood Mastery Multiplier [default 15]Decay Interval [default 60]Decay Value [default 1]X Stats
The stat IDs that the mastery of a given weapon should boost, as shown on the table below. the amount of entries here MUST match the amount in the paired X RatesX Rates
The amount of a stat per mastery percentage, except in the case of CDR where it is the amount of mastery percentage to be 50% cdrStat IDs copied from the code. PhysicalPower = 0, ResourcePower = 1, SiegePower = 2, ResourceYield = 3, MaxHealth = 4, MovementSpeed = 5, CooldownModifier = 7, PhysicalResistance = 8, FireResistance = 9, HolyResistance = 10, SilverResistance = 11, SunChargeTime = 12, EnergyGain = 17, MaxEnergy = 18, SunResistance = 19, GarlicResistance = 20, Vision = 22, SpellResistance = 23, Radial_SpellResistance = 24, SpellPower = 25, PassiveHealthRegen = 26, PhysicalLifeLeech = 27, SpellLifeLeech = 28, PhysicalCriticalStrikeChance = 29, PhysicalCriticalStrikeDamage = 30, SpellCriticalStrikeChance = 31, SpellCriticalStrikeDamage = 32, AttackSpeed = 33, DamageVsUndeads = 38, DamageVsHumans = 39, DamageVsDemons = 40, DamageVsMechanical = 41, DamageVsBeasts = 42, DamageVsCastleObjects = 43, DamageVsPlayerVampires = 44, ResistVsUndeads = 45, ResistVsHumans = 46, ResistVsDemons = 47, ResistVsMechanical = 48, ResistVsBeasts = 49, ResistVsCastleObjects = 50, ResistVsPlayerVampires = 51, DamageVsWood = 52, DamageVsMineral = 53, DamageVsVegetation = 54, DamageVsLightArmor = 55, DamageVsHeavyArmor = 56, DamageVsMagic = 57, ReducedResourceDurabilityLoss = 58, PrimaryAttackSpeed = 59, ImmuneToHazards = 60, PrimaryLifeLeech = 61, HealthRecovery = 62
Commands permission uses permission level which start from 0 to 100.
Permission level 0 means that it can be used by everyone.
User designated as SuperAdmin in your server admin list will always bypass the permission requirement.
Special commands params that require admin permission can also be adjusted here.
All abbreviation of the command are automatically included, you need only to put the primary command string.
The permissions are saved in BepInEx/config/RPGMods/command_permission.json
{
"help": 0,
"ping": 0,
"myinfo": 0,
"pvp": 0,
"pvp_args": 100,
"siege": 0,
"siege_args": 100,
"heat": 0,
"heat_args": 100,
"experience": 0,
"experience_args": 100,
"mastery": 0,
"mastery_args": 100,
"autorespawn": 100,
"autorespawn_args": 100,
"waypoint": 100,
"waypoint_args": 100,
"ban": 100,
"bloodpotion": 100,
"blood": 100,
"customspawn": 100,
"give": 100,
"godmode": 100,
"health": 100,
"kick": 100,
"kit": 100,
"nocooldown": 100,
"permission": 100,
"playerinfo": 100,
"punish": 100,
"rename": 100,
"adminrename": 100,
"resetcooldown": 100,
"save": 100,
"shutdown": 100,
"spawnnpc": 100,
"speed": 100,
"sunimmunity": 100,
"teleport": 100
}
Removing a command from the list will automatically set it's permission requirement value to 100.
help [<command>]
Shows a list of all commands.
Example: help experience
kit <name>
Gives you a previously specified set of items.
Example: kit starterset
You will get a new config file located in BepInEx/config/RPGMods/kits.json
[
{
"Name": "Kit1",
"PrefabGUIDs": {
"820932258": 50,
"2106123809": 20
}
},
{
"Name": "Kit2",
"PrefabGUIDs": {
"820932258": 50,
"2106123809": 20
}
}
]
blood <bloodtype> [<quality>] [<value>]
Sets your Blood type to the specified Type, Quality and Value.
Example: blood Scholar 100 100
bloodpotion <bloodtype> [<quality>]
Creates a Potion with specified Blood Type, Quality and Value.
Example: bloodpotion Scholar 100
waypoint <name|set|remove|list> [<name>]
Teleports you to previously created waypoints.
Example: waypoint set home <-- Creates a local waypoint just for you.
Example: waypoint home <-- Teleport you to your local waypoint.
Example: waypoint remove home <-- Remove your local waypoint.
Example: waypoint list <-- Shows a list of all to you accessible waypoints.
Special Params -> <name|set|remove|list> [<name>] [global] Creates a global waypoint usable by everyone.
Example: waypoint set arena global <-- Creates a global waypoint for everyone (Special Params).
Example: waypoint remove arena global <-- Remove a global waypoint for everyone (Special Params).
give <itemname> [<amount>]
Adds the specified Item to your Inventory.
Example: give Stone Brick 17
spawnnpc <prefabname> [<amount>] [<waypoint>]
Spawns a NPC. Optional: To a previously created waypoint.
Example: spawnnpc CHAR_Cursed_MountainBeast_VBlood 1 arena
customspawn <Prefab Name> [<BloodType> <BloodQuality> <BloodConsumeable("true/false")> <Duration>]
Spawns a modified NPC at your current position.
Example: customspawn CHAR_Bandit_Thug creature 100 true -1 -> Spawn Bandit Thug with unlimited lifespan.
Example: customspawn CHAR_Bandit_Thug creature 100 true 5 -> Spawn Bandit Thug with a lifespan of 5 seconds.
health <percentage> [<playername>]
Sets your health to the specified percentage (0 will kill the player).
Example: health 100
Example: health 0 LegendaryVampire
speed
Toggles speed buff.
sunimmunity
Toggles sun immunity.
nocooldown
Toggles all skills & abilities to have no cooldown.
resetcooldown [<playername>]
Reset all skills & abilities cooldown for you or the specified player.
Example: resetcooldown
Example: resetcooldown LegendaryVampire
teleport <playername>
Teleport to another online player within your clan.
Example: teleport LegendaryVampire
godmode
Toggles god mode for you.
autorespawn
Toggles auto respawn on same position on death.
Special Params -> [<all>|<playername>] Toggle the auto respawn for specified player or server wide.
Example: autorespawn all
Example: autorespawn LegendaryVampire
heat
Checks your heat/wanted level by the factions.
Special Params -> [<debug>|<value> <value> [<PlayerName>]] Display numeric heat or set your or the specified player heat.
Example: heat 500 500
Example: heat 500 500 LegendaryVampire
ping
Show you your latency to the server.
pvp [<on>|<off>|<top>]
Display your PvP statistics or toggle PvP state.
Example: pvp
Example: pvp top
Example: pvp on
Example: pvp off
Special Params -> <on>|<off> <playername> Toggles PvP state for the specified player.
Special Params -> <rep> <ammount> <playername> Set the specified player reputation points.
Example: pvp on LegendaryVampire
Example: pvp off LegendaryVampire
Example: pvp rep 1000 LegendaryVampire
siege [<on>|<off>]
Display all players currently in siege mode, or engage siege mode.
Example: siege
Example: siege on
Example: siege off
Special Params -> <global> Toggles server-wide siege mode on or off).
experience [<log> <on>|<off>]
Diplays your current exp and progression to the next level, or toggle the exp gain notification.
Example: experience
Example: experience log off
Special Params -> [<set> <value> [<PlayerName>]] Set your or the specified player experience value.
Example: experience set 1000
Example: experience set 2000 LegendaryVampire
mastery [<log> <on>|<off>]
Display your current mastery progression, or toggle the mastery gain notification.
Use .mastery reset all, or .mastery reset [weapon type] to reset it to 0 adding that amount to your efficency, and a configurable % of that to your mastery growth rate for that weapon. A negative number in growth means that it will decrease multiplicitavely based on that, formula of mastery/(mastery + negative growth rate) is multiplied in.
Example: mastery
Example: mastery log off
Special Params -> [<set> <type> <value> [<PlayerName>]] Set your or the specified player mastery value.
Example: mastery set sword 100000
Example: mastery set spear 2000 LegendaryVampire
save
Trigger the database saving manually.
punish <playername> [<remove>]
Manually punish someone or lift their debuff.
This command may still be used even when punishment system is disabled.
Example: punish LegendaryVampire
Example: punish LegendaryVampire remove
permission <list>|<save>|<reload>|<set> <0-100> <playername>|<steamid>
Manage commands and user permissions level.
Example: permission list -> List all users with special permission.
Example: permission save -> Save the most recent user permission list.
Example: permission reload -> Directly reload user permission and command permission from the JSON file.
Example: permission set 100 LegendaryVampire
Example: permission set 0 LegendaryVampire
ban <playername> [<days> <reason>]
Check the status of specified player, or ban them. 0 days will translate to permanently banned.
unban <playername>
Remove the specified player from the ban list.
kick <playername>
Kick the specified player from the server.
shutdown
Trigger the exit signal & shutdown the server.
rename <player name> <new name>
Rename the specified player.
adminrename <player name> <new name>
Rename the specified player. Careful, the new name isn't verified.
This means it's possible for names to use color tags or symbols.
Adding a color tag to the player name may make it hard for you and other user to /whisper or find the player with commands.
playerinfo <player name>
Display the player information details.
myinfo
Display your user info and location.
worlddynamics [<faction>] [<stats>|<save>|<load>|<ignore>|<unignore>] [<npc prefab name>]
List all faction stats. Save them, or load from the json file.
Example: wd faction stats -> List all active faction stats.
Example: wd faction ignore CHAR_Bandit_Thug -> Ignore bandit thug for faction buffs.
Example: wd faction unignore CHAR_Bandit_Thug -> Stop ignoring bandit thug for faction buffs.
powerup <player_name> <add>|<remove> <max hp> <p.atk> <s.atk> <p.def> <s.def>
Buff specified player with the specified value.
Example: pu LegendaryVampire add 1000 50 125 0.5 0.7 -> Buff the player for specified values.
Example: pu LegendaryVampire remove -> Remove the buff from the specified player.
Notes:
- Buffing PDef & SDef to 1 will make the player immune to those damage.
1.5.0
1.4.2
SALTYFLEA#37721.4.1
1.4.0
1.3.2
1.2.7a
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.2
1.0.1
1.0.0
小爛土#7151 - Also known as Shou (like the english word show), Darkon47 on Github.
If you enjoy the work I have put into this mod, subscribe to my patreon at https://www.patreon.com/user/membership?u=92238426
SALTYFLEA#3772 Added the class system, currently otherwise undocumented.
Kaltharos#0001Dimentox#1154Nopey#1337syllabicat#0692errox#7604