1. Which value is for training needed between ranks (training skills to A or S takes forever)
Assuming you are talking about normal skills such as cooking, maid, nurse, etc; I can answer this one with full detail.
Files that take care of skill training:
- $calcuate_atributes
- #variative
The base for each level upgrade is:
- 5 (F -> D)
- 5 (D -> C)
- 10 (C -> B)
- 20 (B -> A)
- 40 (A -> S)
In #variative, you will find at line 39 the "$dep_atr" array which has the names of all the skills in the game.
In $calculate_atributes you will find at line 149 the start of skill raise calculations
Progress in one skill is based on:
- (Master's tutor skill + any misc bonus) * diligence
- mic bonuses are those from items and other things like this
- diligence is basically her willingness to learn (code below)
The progress for whatever skill gets trained is added to "slave_rate[*skill*]"
Once that's done, it goes to $calculate_atributes. There, it first raises the base nr of points needed for a lvl up based on how many points the slave has overall in all her basic skills, excluding those that she has an affinity for (line 170, value stored in "slave_rm")
Then it goes to check the rates for all skills, checking one skill at a time, in the order they are found in the array from the #variative file.(line 177)
You will see first the vars "srd1, srd2, srd3, srd4" being initialized with 5, 10, 20 and 40, those are the bases.
Then, if the slave DOES NOT have an affinity for the skill, the bases are raised based on "slave_rm", each base at a different rate so the base from A -> S gets higher way faster then the one from F -> D (lines 184 to 189)
Then it checks for the level of the skill and if the progress rate of the skill if higher then the base it raises the skill and sets the progress rate to 0.
Then it goes back to the next skill until it checks everyone of them.
-----------------------------------------------------------------------
Here is an example:
Lets say that the slave has an affinity for Cooking
Lets also say that she already has C+ in Maid, B+ in escort and B+ in cooking (that totals up to 5 points in basic skills (we're not adding cooking because she has an affinity for it))
The total of basic skills points is 5 so "slave_rm" is 5
So, if we train for example the Maid skill, because she doesn't have affinity for the skill, our bases become:
- 5 + slave_rm / 2 = 5 + 5 / 2 = 5 + 2 + 7
- 10 + slave_rm = 10 + 5 = 15
- 20 + slave_rm * 2 = 20 + 5 * 2 = 20 + 10 = 30
- 40 + slave_rm * 3 = 40 + 5 * 3 = 40 + 15 = 55
To go from C to B she would use the second base (srd2) which is now 15. So if the progress rate for the Maid skill becomes higher then 15 as a result of training, the skill would get raised to the next level, and since now there is one more skill point next time any basic skill is trained, "slave_rm" would be 6.
But, if we train Cooking, no matter the amount of skill points, the bases don't get raised so to go from B to A she would only need to have the progress rate for Cooking higher then 20.
-------------------------------------------------------------------
When the master has full tutor skill and the slave is kind of well trained in the aura skills department (taming, awareness, etc), the progress rate increase for a skill about 7 I think. Fitness is an exception; the progress rate is halved for that skill.
So, tl;dr, if you want to speed up the training, change the values that slave_rm gets multiplied by, or erase the whole "IF" block completely.
I personally think it is a pretty good system, the massive slowdown happens when you try to make an all star slave which is normal. But if you like taking every slave to S+ then I can see why such a slowdown is annoying.
If there's anything unclear about this topic, feel free to keep asking. I haven't looked into the other topics so I can't really help with those.
Have fun modding.
PS: Do take a look into interaction_result as well to get a better feeling of how the progress rate is added. Search for "master_teaches_slave" and look there.