Skill Leveling System Improved Mod
Posted: Tue Jun 16, 2020 6:02 pm
Since I finished working on my previous "Limited Gold Shops" mod for the time being until it can be officially released. I have been working on my next mod that is intended to be somewhat of an overhaul, but is really just an improved version of the vanilla skill system, at least the leveling side of it.
The first thing that I wanted to get most of all was to reduce the unnecessary tedium for many of the skills that are generally trained in uninteresting and grindy ways. The main examples being Mercantile and the schools of Magic, also ones that take no active effort or thought to level and are nearly impossible to train due to this, such as Medical past a point.
Skill Advancement Changes
So with this mod, you no longer have to individually sell each item in a separate transaction to maximize your mercantile skill gains, instead it counts the "xp" you get for this skill based on the amount of items in the "basket" when you finalize a transaction, or by how much the transaction was valued at in total, whichever one is higher in the final transaction. You also gain mercantile skill when paying for training services.
For the Medical skill, now the amount of "xp" you get is not just a flat 1 per hour of rest, but is increased the less your total health % is currently at. So the more hurt you are while resting, the more xp you will get per hour of rest. So at say 10% health, you will get 5-6 points of xp per hour, until you hit the next threshold of 15% increments. So you learn more from treating your wounds in essence.
Now this is one of the bigger changes I felt was necessary, and that's in how the magic schools are trained. Now your will get "xp" depending on the cost of the individual spell you cast, instead of being rewarded for casting dozens of super low cost can-trip spells, you will now get points proportional to this. So if a spell of 5 mana cost would give 1 xp, a spell of 10 mana will give 2 and it all goes up in increments of 5, so neither training style is "punished", but tedium is no longer required for effective training. If a spell goes over the 300 mana cost threshold for one cast, these increments will go by 3s instead, so you would be rewarded for casting crazy expensive spells slightly, but that requires some preparation. So cast those big mana cost spells while dungeon crawling without worry of being training inefficient, just play and enjoy instead of be forced to grind in an inn.
I also decided to improve how some of the other skills advance as well to make more sense and not just require grindy methods. Lock-picking now gets more "xp" from successfully picking a lock, and the amount is increased based on the difficulty level of the lock. Pick-pocketing also had successful attempts give more "xp", as well as move "xp" from shop-lifting multiple items, similar to the basket idea from the Mercantile changes. When an enemy that is pacified with their respective language skill, there is also an increased "xp" amount from a successful attempt. Those were all the currently "interesting" changes to the skill leveling, many of the other skills were also increased slightly to reduce grindiness at higher skill levels, only slightly though.
"Governing Attribute" Implementation
viewtopic.php?f=4&t=3812
So I realized while making this mod, that something I had thought had an effect on gameplay actually did nothing like I had expected. That being the "Governing Attributes" that all skills have attached to them. I was under the fall assumption that these attributes made leveling easier or harder depending on the attributes of the player, but they actually did nothing in practice. So I decided to change this.
Now the governing attribute does what I had initially thought they did, for example. The Restoration magic school has willpower as a GA, so now if your permanent willpower score (unbuffed) is below 50, it will take longer for the restoration skill to level, and vise-versa when it is above 50. Luck also has an effect in the same way, but it effects ALL skills, not just ones with it as their GA (which there are none). So if you dump a stat at character creation, expect skills with that GA to level by a fair amount, and obviously vise-versa as well.
Trainers Reworked
I had always thought the trainers in the game were a little bit gimped for no reason and not extremely logical in how the costs for training worked. So I essentially reworked the trainer system as much as I felt was necessary without making it completely different by all regards.
First off, the price of training is now NO LONGER based on the level of the player, but instead on a simple formula that increases the cost of training based on the current level of the skill being trained, the quality score of the guildhall the trainer is located in, and even gets haggled down based on the players mercantile skill, just like a normal trade transaction, also 4x more or less based on if you are a member or not of said faction, like usual. So now instead of being level 20 and paying 2000 gold to train your orcish skill to level 5, it will now maybe cost 120 gold to train that skill to that level no matter what your character level is, all depending on those previously mentioned variables.
With the theme of guildhall quality having some effect on price and such, I also made it so training at different quality halls will also increase or decrease the effectiveness of each session. So a high quality trainer will give more effective training sessions than a low quality one. Also, luck has both a positive or negative effect on the amount trained as well, with the base-line luck of 50 having 0 effect on this.
Another big aspect that was changed was the horribly low hard-limit that the player was allowed to use a trainer for a specific skill, this in vanilla being only 50 maximum. Now this has been reworked to instead be based on the quality of the guildhall in question. The lowest quality guildhalls only giving up to level 35 training (less skilled trainers and such), and the highest quality guildhalls giving up to a "hard-cap" of 85 (masters are not really only bookworms after all.)
The final change being that the skill you train now actually effects your condition after the lesson. In vanilla your fatigue is just reduced by the equivalent to 3 hours of standing still. I decided to make this have a bit more variety and logic, in my opinion. Now whatever gets reduced is based on the skill trained. Purely academic skills will only reduce fatigue, but not by a large amount, magical skill will reduce fatigue slightly more and also drain some of your current magic pool (how else you going to practice?) Taxing physical skills such as running, jumping, swimming, and such will drain your fatigue significantly, and combat related skills that you would likely be doing some sort of potentially dangerous sparring will drain both fatigue AND health (but don't worry, your teacher will never kill you, on purpose.)
Also one other minor change, decided to take the "training cooldown" down from 9 hours to instead 6, which I think is fair enough.
Skill Current XP Tracking
So I got this request from somebody on the Discord channel and decided to throw it in here as well, since it made sense. I think it's fairly self explanatory with pictures, but it just adds a "Current XP / Required XP" ticker onto the character sheet screen:
WIP Live Skill Advancement
This was more of an experimental thing to see what it would be like if skills leveled like they did in later Elder Scrolls games, where as soon as you go over the threshold for a particular skill it would increase, no rest required. Well I did this, and found it is massively OP, lol. So until I make some big number changes to this, I currently have it commented out, but it is there and I might make it a potential option in the final release.
With this in mind I decided to reduce the required time between rest to check for skill advancements, so now instead of having to rest at least 6 hours to have your skills checked, it will only take 4.
Other Info
So while all of these features are currently functional in a "none modded" environment, I still need to actually do all of the "Back-end" work to get this into a properly .dfmod state that can work with the live-build and be shared as a normal mod. For now I currently don't know how to do this for most of the sections of code that I need, so i'm leaving this on the back-burner for when I do figure it out, or somebody with more experience on the back-end modding part knows how I could do this, or some other form of mod support is released in a live build that would facilitate for these alterations to work as a mod.
So until that time, i'm going to start working on my next mod, but I will make the Github repo avaliable for those that want to play with this in a Unity environment, make alterations themselves, or just look at the code, it's not very complex in its current form.
Here are the repos:
https://github.com/magicono43/DFU-Mod_S ... g-Improved
https://github.com/magicono43/DFU-Unity ... xperiments
Obviously I hope to eventually release this as a full mod, but don't currently have the knowledge base to do it properly, but that time will come eventually! Thanks for reading.
The first thing that I wanted to get most of all was to reduce the unnecessary tedium for many of the skills that are generally trained in uninteresting and grindy ways. The main examples being Mercantile and the schools of Magic, also ones that take no active effort or thought to level and are nearly impossible to train due to this, such as Medical past a point.
Skill Advancement Changes
So with this mod, you no longer have to individually sell each item in a separate transaction to maximize your mercantile skill gains, instead it counts the "xp" you get for this skill based on the amount of items in the "basket" when you finalize a transaction, or by how much the transaction was valued at in total, whichever one is higher in the final transaction. You also gain mercantile skill when paying for training services.
For the Medical skill, now the amount of "xp" you get is not just a flat 1 per hour of rest, but is increased the less your total health % is currently at. So the more hurt you are while resting, the more xp you will get per hour of rest. So at say 10% health, you will get 5-6 points of xp per hour, until you hit the next threshold of 15% increments. So you learn more from treating your wounds in essence.
Now this is one of the bigger changes I felt was necessary, and that's in how the magic schools are trained. Now your will get "xp" depending on the cost of the individual spell you cast, instead of being rewarded for casting dozens of super low cost can-trip spells, you will now get points proportional to this. So if a spell of 5 mana cost would give 1 xp, a spell of 10 mana will give 2 and it all goes up in increments of 5, so neither training style is "punished", but tedium is no longer required for effective training. If a spell goes over the 300 mana cost threshold for one cast, these increments will go by 3s instead, so you would be rewarded for casting crazy expensive spells slightly, but that requires some preparation. So cast those big mana cost spells while dungeon crawling without worry of being training inefficient, just play and enjoy instead of be forced to grind in an inn.
I also decided to improve how some of the other skills advance as well to make more sense and not just require grindy methods. Lock-picking now gets more "xp" from successfully picking a lock, and the amount is increased based on the difficulty level of the lock. Pick-pocketing also had successful attempts give more "xp", as well as move "xp" from shop-lifting multiple items, similar to the basket idea from the Mercantile changes. When an enemy that is pacified with their respective language skill, there is also an increased "xp" amount from a successful attempt. Those were all the currently "interesting" changes to the skill leveling, many of the other skills were also increased slightly to reduce grindiness at higher skill levels, only slightly though.
"Governing Attribute" Implementation
viewtopic.php?f=4&t=3812
So I realized while making this mod, that something I had thought had an effect on gameplay actually did nothing like I had expected. That being the "Governing Attributes" that all skills have attached to them. I was under the fall assumption that these attributes made leveling easier or harder depending on the attributes of the player, but they actually did nothing in practice. So I decided to change this.
Now the governing attribute does what I had initially thought they did, for example. The Restoration magic school has willpower as a GA, so now if your permanent willpower score (unbuffed) is below 50, it will take longer for the restoration skill to level, and vise-versa when it is above 50. Luck also has an effect in the same way, but it effects ALL skills, not just ones with it as their GA (which there are none). So if you dump a stat at character creation, expect skills with that GA to level by a fair amount, and obviously vise-versa as well.
Trainers Reworked
I had always thought the trainers in the game were a little bit gimped for no reason and not extremely logical in how the costs for training worked. So I essentially reworked the trainer system as much as I felt was necessary without making it completely different by all regards.
First off, the price of training is now NO LONGER based on the level of the player, but instead on a simple formula that increases the cost of training based on the current level of the skill being trained, the quality score of the guildhall the trainer is located in, and even gets haggled down based on the players mercantile skill, just like a normal trade transaction, also 4x more or less based on if you are a member or not of said faction, like usual. So now instead of being level 20 and paying 2000 gold to train your orcish skill to level 5, it will now maybe cost 120 gold to train that skill to that level no matter what your character level is, all depending on those previously mentioned variables.
With the theme of guildhall quality having some effect on price and such, I also made it so training at different quality halls will also increase or decrease the effectiveness of each session. So a high quality trainer will give more effective training sessions than a low quality one. Also, luck has both a positive or negative effect on the amount trained as well, with the base-line luck of 50 having 0 effect on this.
Another big aspect that was changed was the horribly low hard-limit that the player was allowed to use a trainer for a specific skill, this in vanilla being only 50 maximum. Now this has been reworked to instead be based on the quality of the guildhall in question. The lowest quality guildhalls only giving up to level 35 training (less skilled trainers and such), and the highest quality guildhalls giving up to a "hard-cap" of 85 (masters are not really only bookworms after all.)
The final change being that the skill you train now actually effects your condition after the lesson. In vanilla your fatigue is just reduced by the equivalent to 3 hours of standing still. I decided to make this have a bit more variety and logic, in my opinion. Now whatever gets reduced is based on the skill trained. Purely academic skills will only reduce fatigue, but not by a large amount, magical skill will reduce fatigue slightly more and also drain some of your current magic pool (how else you going to practice?) Taxing physical skills such as running, jumping, swimming, and such will drain your fatigue significantly, and combat related skills that you would likely be doing some sort of potentially dangerous sparring will drain both fatigue AND health (but don't worry, your teacher will never kill you, on purpose.)
Also one other minor change, decided to take the "training cooldown" down from 9 hours to instead 6, which I think is fair enough.
Skill Current XP Tracking
So I got this request from somebody on the Discord channel and decided to throw it in here as well, since it made sense. I think it's fairly self explanatory with pictures, but it just adds a "Current XP / Required XP" ticker onto the character sheet screen:
WIP Live Skill Advancement
This was more of an experimental thing to see what it would be like if skills leveled like they did in later Elder Scrolls games, where as soon as you go over the threshold for a particular skill it would increase, no rest required. Well I did this, and found it is massively OP, lol. So until I make some big number changes to this, I currently have it commented out, but it is there and I might make it a potential option in the final release.
With this in mind I decided to reduce the required time between rest to check for skill advancements, so now instead of having to rest at least 6 hours to have your skills checked, it will only take 4.
Other Info
So while all of these features are currently functional in a "none modded" environment, I still need to actually do all of the "Back-end" work to get this into a properly .dfmod state that can work with the live-build and be shared as a normal mod. For now I currently don't know how to do this for most of the sections of code that I need, so i'm leaving this on the back-burner for when I do figure it out, or somebody with more experience on the back-end modding part knows how I could do this, or some other form of mod support is released in a live build that would facilitate for these alterations to work as a mod.
So until that time, i'm going to start working on my next mod, but I will make the Github repo avaliable for those that want to play with this in a Unity environment, make alterations themselves, or just look at the code, it's not very complex in its current form.
Here are the repos:
https://github.com/magicono43/DFU-Mod_S ... g-Improved
https://github.com/magicono43/DFU-Unity ... xperiments
Obviously I hope to eventually release this as a full mod, but don't currently have the knowledge base to do it properly, but that time will come eventually! Thanks for reading.