Skip to content

Skills Overview

Zachary Adam-MacEwen edited this page Aug 7, 2018 · 3 revisions

This is a quick-and-dirty overview of the skills system to be included in Tarnished Tale (Core) - stripping out the more complicated arrangement for the Magic Module. Skills are not necessarily implemented nor will they necessarily be implemented in exactly this manner, but the objective remains to keep this page current and use the wiki for documentation rather than some random .md file.

All skills are scores from 0-99.

A page to discuss specific skills from Core and their intended implementation method and schedules is being developed.

Example of a skill check

J Random Human is attempting to cross a narrow beam. The narrow beam interactive object has a difficulty factor of 0.5 and is tied to the Agility skill. When J Random Human's player inputs the command cross narrow beam, the specific coding for the narrow beam calls skillCheck("J Random Human", "Agility", 0.5)

The function will then fetch the skills the "Agility" value in the character's skills dictionary, multiply by the difficulty factor to get %success, and fetch a random number between 1-100. If rand < % success, skill check returns a success and whatever consequence of the success is coded for follows.

How Skills are Being Implemented Generally

Individual skills have ideosyncratic checks beyond pass/fail called abilities that need to be coded for individually, but in general, all skills have some commonalities.

All skills for a given module exist in a file $module_skills.dat stored in $ttpath/Configuration which is a configParser-compatibile text block. This file contains each skill as a section [$skillname] with base, desc, hasAbility and up to n ability options.

base is a simple base value which may either be a numerical value from 0 to 99 or a string. In the string case, the string must begin with the three-letter code for one of the aptitudes (see Character Statistics) and, optionally may include a modifier, usually "*$factor" where $factor is a modifying factor. This value is the value at which the skill is set for all characters at generation. At the moment, race-specific modifiers to this value are not intended to be supported.

desc is a string describing, in general terms, the skill and its uses, intended to be fetched by help skill $name. It can be as terse or florid as necessary but should be clear as to the general purpose of a skill to prevent orphan skills.

hasAbility is a boolean indicating whether or not there are player-demand-able abilities associated with this skill. For example the core skill "Locksmithing" has among its many abilities "pick", which demand-attacks a locked door or object. Its value is a descriptive string explaining what the ability is for and should begin with its use syntax.

Options following hasAbility follow the format abilityname:string as above.

Skills from the .dat file are imported into the module itself when the server imports the module.

Handling Abilities

Abilities need to be provided for in the game itself, more than just being general pass-fail checks. In core (TT-CORE.py), these abilities appear as commands to import into Evennia.

Special Case Skills

Combat Skills

A few skills are specifically combat skills - they are actually rolls to hit. They aren't in taskAbility or necessarily called for by skill checks but do need to be called by the combat function - get the appropriate skill from the equipped weapon and apply all necessary modifiers. The current general formula for a combat-to-hit is:

relevantability - target dodge factor - target damage factor > rand100 to hit

Bear in mind the combat system is still under development and this is subject to change. Crit% should somehow be made to scale with weapon% and luck.

Crafting Skills

A few skills are crafting checks requiring access to the relevant crafting "furnature" - a room-feature that should not be player-portable. Crafting is not yet implemented or conceptualised but crafting skills should follow the same 00-99 rule as everyone else.