\chapter{Skills System}\index{skills}\index{experience}\label{chap:skills} \section{Description}\index{skills, description} Under the skills system the flow of play changes dramatically\footnote{The skills system is enabled as the default option as of version 0.92.0}$^{, }$\footnote{The new skills/experience system is compatible with character files from at least version 0.91.1 onward.}. Instead of gaining experience for basically just killing monsters (and disarming traps) players will now gain a variety of experience through the use of skills. Some skills replicate old functions in the game (e.g. melee weapons skill, missile weapon skill) while others add new functionality (e.g. stealing, hiding, writing, etc). A complete list of the available skills can be found in table \ref{tab:skill_stats}. Appendix \ref{app:skills} contains descriptions for many of the skills. \begin{table} \begin{center} \caption{Skills \label{tab:skill_stats}}\index{skills, list}\index{skills, associated} \index{experience, categories} \index{skills, miscellaneous} \small \vskip 12pt \begin{tabular}{|clccccc|} \hline & Skill & Experience Category & \multicolumn{3}{c}{Associated Stats} & \\ & & & (Stat 1) & (Stat 2) & (Stat 3) & \\ \hline\hline & & & & & & \\ \input{skill_stat} & & & & & & \\ \hline \end{tabular} \end{center} \end{table} \section{About experience and skills}\index{skills, gaining experience}\index{experience} \subsection{Associated and miscellaneous skills} \index{skills, associated}\index{skills, miscellaneous} In \cf\ two types of skills exist; The first kind, ``associated'' skills, are those skills which are {\em associated with a category of experience}. The other kind of skill, ``miscellaneous'' skills, are {\em not} related to any experience category. The main difference between these two kinds of skills is in the result of their use. When associated skills are used {\em successfully} experience is accrued in the experience category {\em associated with that skill}. In contrast, the use of miscellaneous skills {\em never} gains the player any experience regardless of the success in using it. {\em Both} miscellaneous and associated skills can {\em fail}. This means that the attempt to use the skill was unsuccessful. {\em Both} miscellaneous and associated skills {\em can} have certain primary stats {\em associated} with them. These associated stats can help to determine if the use of a skill is successful and to what {\em degree} it is successful. All gained experience is modified by the associated stats for that skill (table \ref{tab:skill_stats}) and then the appropriate experience category automatically updated as needed. \subsection{Restrictions on skills use and gaining experience} \index{skills, restrictions} Neither a character's stats nor the character class restricts the player from gaining experience in any of the experience categories. Also, there are no inherent restrictions on character skill use$-$any player may use any {\em acquired} skill. \subsection{Algorithm for Experience Gain under the skills system} Here we take the view that a player must 'overcome an opponent' in order to gain experience. Examples include foes killed in combat, finding/disarming a trap, stealing from some being, identifying an object, etc. Gained experience is based primarily on the difference in levels between 'opponents', experience point value of a ``vanquished foe'', the values of the associated stats of the skill being used and two factors that are set internally\footnote{If you want to know more about this, check out the skills\_developers.doc}. Below the algorithm for experience gain is given where player ``pl'' that has ``vanquished'' opponent ``op'' using skill ``sk'': \begin{quote} EXP GAIN = (EXP$_{op}$ + EXP$_{sk}$) * lvl\_mul \end{quote} where EXP$_{sk}$ is a constant award based on the skill used, EXP$_{op}$ is the base experience award for `op' which depends on what op is (see below), \noindent{For} level$_{pl}$ $<$ level$_{op}$:: \begin{quote} lvl\_mult = FACTOR$_{sk}$ * (level$_{op}$ - level$_{pl}$) \end{quote} \noindent{For} level$_{pl}$ $=$ level$_{op}$:: \begin{quote} lvl\_mult = FACTOR$_{sk}$ \end{quote} \noindent{For} level$_{pl}$ $>$ level$_{op}$:: \begin{quote} lvl\_mult = (level$_{op}/$level$_{pl}$); \end{quote} where level$_{op}$ is the level of `op', level$_{pl}$ is the level of the player, and FACTOR$_{sk}$ is an internal factor based on the skill used by pl. There are three different cases for how EXP$_{op}$ can be computed: \begin{quote} 1) {\bf op is a living creature}: EXP$_{op}$ is just the base experience award given in the \spoiler . \\ 2) {\bf op is a trap}: EXP$_{op} \propto$ 1/(the time for which the trap is visible). Thus, traps which are highly {\em visible} get {\em lower} values. \\ 3) {\bf op is not a trap but is non-living}: EXP$_{op}$ = internal experience award of the item. Also, the lvl\_mult is multiplied by any {\tt magic} enchantment on the item. \end{quote} \section{How skills are used}\index{skills, how to use} \begin{table} \small \caption{Skills commands}\label{tab:skill_cmd} \vskip 12pt \begin{center} \begin{tabular}{|cllc|} \hline & & & \\ & {\tt skills} & This command lists all the player's & \\ & & current known skills, their level & \\ & & of use and the associated experience & \\ & & category of each skill. & \\ & & & \\ & {\tt ready\_skill $<$skill$>$} & This command changes the player's & \\ & & current readied skill to {\tt $<$skill$>$}. & \\ & & & \\ & {\tt use\_skill $<$skill$>$ $<$string$>$} & This command changes the player's & \\ & & current readied skill {\em and} then & \\ & & executes it in the facing direction & \\ & & of the player. Similar in action to & \\ & & the {\tt invoke} command. & \\ & & & \\ \hline \end{tabular} \end{center} \end{table} Three player commands are related to skills use: {\tt ready\_skill}, {\tt use\_skill}, and {\tt skills} (see table \ref{tab:skill_cmd}). Generally, a player will use a skill by first readying the right one, with the {\tt ready\_skill} command and then making a ranged ``attack'' to activate the skill; using most skills is just like firing a wand or a bow. In a few cases however, a skill is be used just by having it {\em readied}. For example, the {\tt mountaineer} skill allows favorable movement though hilly terrain while it is readied. To change to a new skill, a player can use either the {\tt use\_skill} or {\tt ready\_skill} commands, but note that the use of several common items can automatically change the player's current skill too. Examples of this include readying a bow (which will cause the code to make the player's current skill {\tt missile\_weapons}) or readying a melee weapon (current skill auto-matically becomes {\tt melee weapons}). Also, some player actions can cause a change in the current skill. Running into a monster while you have a readied weapon in your inventory causes the code to automatically make our current skill {\tt melee weapons}. As another example of this$-$casting a spell will cause the code to switch the current skill to {\tt \spellcasting} or {\tt praying} (as appropriate to the spell type). It is not possible to use more than one skill at a time. \section{Acquiring skills}\index{skills, learning}\index{skills, tools} Skills may be gained in two ways. In the first, new skills may {\em learned}. This is done by reading a ``skill scroll'' and the process is very similar to learning a spell. Just as in attempts to learn \incantation s, success in learning skills is dependent on a random test based on the learner's INT. Using your INT stat, look in the learn\% column in table \ref{tab:pri_eff} to find your \% chance of learning a skill. Once you hit 100\% you will always be successfull in learning new skills. The acquisition of a {\em skill tool} will also allow the player to use a new skill. An example of a skill tool is ``lockpicks''\inputimage{lockpicks} (which allow the player to pick door locks). The player merely applies the skill tool in order to gain use of the new skill. If the tool is unapplied, the player looses the use of the skill associated with the tool. After a new skill is gained (either learned or if player has an applied skill tool) it will appear on the player's skill roster (use the 'skills' command to view its status). If the new skill is an associated skill, then it will automatically be gained at the player's current level in the appropriate experience category. For example, Stilco the Wraith, who is 5th level in {\tt agility}, buys a set of lockpicks and applies them. He may now use the skill lockpicking at 5th level of ability since that is an {\tt agility} associated skill.