Skill-training progress
by Cal
28-08-2023

Description: "Skill Training Progress: read up on your points increase and see
what needs training before you level up."


When leveling up in the standard way, bringing up the stats menu and clicking on
the level shows how many points you've gained towards the next level. It doesn't
show how many points you've racked up for each skill, or what raise in attribute
points that translates to. Personally, I like to increase my attributes by the
maximum of five points per level-up, but to get those five points, I have to
carefully keep track of my skill increases. So I made a script to do that.

To run the script without needing the console, I made a new book, the Progress
Notebook; after "reading" it by equipping (activating the book does nothing) and
then closing the book and all menus, the script displays seven messages showing
gained points per skill and potential raise in attribute points, followed by a
summary of all potential attribute gains.

Any Blade, or NPC in a Service/training class, will, if asked about "training
progress", give the player a Progress Notebook, if this book isn't already in
the player's inventory; it is possible to get piles of this book by dropping
each one and asking again, but the book has a worth of zero.

(Adding dialogue to the right classes was a bit hit-and-miss, as some Service
classes don't provide training while individual NPCs in non-Service classes do.)

The plugin comes in two versions: SkillTrainingProgress.esp and
SkillTrainingProgressSS.esp, where SS stands for StartScript, which is only
supported by Tribunal and Bloodmoon. SkillTrainingProgressSS.esp can be used in
vanilla Morrowind, giving a harmless error message about the startscript data
that the engine doesn't recognize; SkillTrainingProgress.esp can be used in
Tribunal or Bloodmoon, but then you don't get the benefit of a startscript that
adds the topic "training progress".

The SS version will pop up a series of messages about what it does after the
character creation when starting a new game, or, if enabled in an existing game,
will do the same but with an added warning that reading the book will not give
reliable results until after the next level-up. The version without startscript
has to be started, and its topic added, by asking Arrille about "little advice",
followed by "practice your skills", and will always display this warning.

The script works by storing the player's skills in variables after a level-up,
and subtracting them from the player's current skills to calculate the increase.
If the player's skills were fortified during level-up, or are fortified when
reading the book, the outcome will, of course, be incorrect.

Sometimes, skill points are given as a quest reward. These skill points don't
count towards leveling up or attribute increase, and will therefore also make
the results incorrect until next level-up.

So as not to lose its data, the script must be started at least once per game,
which in the non-startscript version is done by talking to trainers about
"training progress" or keeping a Progress Notebook in inventory, since the
book's own script constantly checks if the script is running, and starts it if
necessary.


Technical info:

Data Files/SkillTrainingprogress(SS).esp:
  Added global (to kickstart script via dialogue, if startscript not available):
cal_TrainingProgress
  Added scripts:
cal_SkillTrackingScript
cal_ProgressNotebookScript
  Added dialogue topic:
training progress
  Dialogue added to:
Arrille (new version of "practice your skills")
  Factions:
Blades
  Classes:
Acrobat
Agent
Alchemist Service
Apothecary Service
Assassin Service
Drillmaster Service
Enchanter Service
Healer Service
Mage Service
Master-At-Arms
Monk Service
Nightblade Service
Priest Service
Savant Service
Scout
Smith
Sorceror Service
Thief Service
Wise Woman Service
  Added object:
Progress Notebook (bk_cal_progress, uses cal_ProgressNotebookScript)

Data Files/Icons/cal/cal_progress_notebook.tga

Data Files/Meshes/cal/cal_progress_notebook.nif

Data Files/Textures/cal/tx_cal_progress_notebook.dds
(Example: tx_cal_progress_notebook.bmp, exported as DDS from GIMP with five
mipmaps instead of the usual three because I can't find software that will let
me limit the number of mipmaps.)
