Crossfire Skills Guide
A HOWTO for using the Crossfire skill system
Description:
The Crossfire skill system changed immensely with v1.6.0 and now has specific skill categories ranging from alchemy to one handed weapons to use magic item.
Under this system the flow of play changes dramatically. 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 (cf. melee weapons skill, missile weapon skill) while others add new functionality (cf stealing, hiding, etc).
One important aspect of this new system is the way in which experience is gained -- basically it is the philosophy that "you are what you do". A player who kills monsters with spells gains experience in casting destructive spells. A player who steals from creatures often will get better at stealing, and so on. The player's aptitude (eg stats) will influence the amount of experience gained.
Using the Skill System:
New player commands
Two new commands now exist in CF through which skills are utilized:
'skills' -- this command lists all the player's current known skills, their level of use and the associated experience category of each skill.
'use_skill <skillname>' -- this command changes the player's current readied skill.
Generally, a player will use a skill by first readying the right one, with the 'use_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 can be used just by having it "readied". An example of this is the "bargaining" skill.
To change to a new skill, a player will have to using the 'use_skill' command,
but not always. The use of several common items will automatically change the
player's current skill. Examples of this include readying a bow (which will cause
the code to make the player's current skill "missile_weapons") or readying
a melee weapon (current skill automatically becomes "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 "melee weapons". Casting a spell
will cause the code to switch the current skill to "spellcasting" or
"praying" (as appropriate to the spell type).
It is not possible to use more than one skill at a time.
Acquiring skills
Skills may be gained in 2 ways. In the first, new skills may "learned". This is done by reading a "skill scroll" and the process is very similar to learning a spell. There is one big difference - all attempts to learn skills are successful. Note that skill scrolls are rarely named exactly for the skill they grant (ex "scroll of piety" is the skillscroll that grants the skill "praying" to the reader).
The acquisition of a "skill tool" will also allow the player to use a new skill. An example of a skill tool is "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.
== AVAILABLE SKILL TOOLS ==
Skill tool Skill gained
---------- ------------
Lockpicks Lockpicking
Holy Symbol Praying
Talisman Spellcasting
Writing Pen Inscription
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 related to a particular kind of experience, it will automatically be gained at the player's current level of experience in the appropriate category.
About experience and skills
Successful use of many skills will result in the player gaining experience. No special commands from the player are needed for this to occur. All gained experience is modified by the relevant stats for that skill and then the appropriate experience category automatically updated as needed.
All players may gain experience in any of the experience categories irrespective of player class or stats. All new players start with zero experience in all experience categories.
There are no inherent restrictions on player skill use--any player may use any acquired skill. How well a player uses a skill is related to their stats and their appropriate level of experience.
For most skills both the chance of success and effect of the skill are tied to the player level of experience (eg 'melee weapons', 'stealing', 'writing', 'hiding', etc).
But there are a smaller number of skills whose use will automatically be 'successful' with every attempt: (eg 'use magic item', 'bargaining', all miscellaneous skills and the 'identification skills': smithery, woodsman, alchemy, etc.),
The default array of stats for associated skills is in Appendix B.
starting skills by player profession
All players start with the skills "melee weapons", "find traps", "use magic item" and "disarm traps". Under the current release of the skills system, further skills are parceled out as follows:
| Race | Skills |
| Dwarf | Smithery |
| Elf | Bow, Bowyer, Woodsman |
| Fire Hatchling | |
| Fireborn | Levitate, Flame Touch, Magic, Praying |
| Gnome | Praying |
| Half-Orc | Stealing |
| Halfling | Stealing, Hiding |
| Human | Random! |
| Northman | |
| Quetzalcoatl | Levitate, Clawing, Magic |
| Serpentman | |
| Troll | |
| Wraith | Poison, Ghosthit, Drain, Disease* |
Skills Descriptions
The following is the roster of skills and the description for each. Use the
command 'crossfire -m5' to see the array of skills and experience in your version
of crossfire. (Note: you need to have compiled with the DUMP_SWITCHES and
ALLOW_SKILLS flags for this to work!)
Skill description
- alchemy
User can identify potions, containers, and amulets. (One day I would like to see this skill allow mixing of potions -b.t.). - bargaining
While this skill is readied the user has added Cha for purposes of purchase and selling of items only. Cha is never allowed to exceed 30. - bowyer
User can identify missile weapons and missiles. - + clawing
User can make a "bare-handed attack". Damage is based on the user's Str and level. - find traps
User can search (more effectively) for traps. Not a 'passive' skill, it is applied in order to gain the advantage in discovering traps. - + flame touch
User can make a "bare-handed attack". Damage is based on the user's Str and level. This is the default hand-to-hand fighting skill for the fireborn character class. - + hide
User enjoys limited form of invisibility. If they attack or move too much they become visible. Right now it is possible to hidden while next to hostile monsters. Not a reasonable feature! - jeweler
User can indentify gems and rings that they hold. - + jumping
User can 'skip' over 1-2 spaces in a selected direction. Distance depends on weight carried, Str and Dex of the user. This skill may also be used as an attack. - + karate
User can make a "bare-handed attack". Damage is based on the user's Str and level. This attack
is the fastest and (at higher levels) most deadly of the "hand to hand" attacks available. - literacy
User can indentify books and scrolls that they hold. Since scrolls are currently always identified, this is not the greatest of skills. - + lockpicking
User may 'pick locks' (open doors). User needs to have readied some 'lockpicks' to use this
skill. - meditation
Player can regain mana/hp at an accelerated rate. Player must first strip off encumbering armour however. This skill is only available to the 'monk' character class. - melee weapons
User may use hand-held weapons (eg swords, spears, mace, etc). One day this skill could be made to allow the player to make special attacks with various weapons. (For example, a disarming attack with Sai). - missile weapons
The user is allowed to make attacks with ranged weapons (eg bow, crossbow). - mountaineer
While the skill is readied, the possessor will move faster through "hilly" terrain (hills, mountains, etc.) - oratory
User may 'recruit' followers. Recruitees must be of lower level, and un aggressive to start. Use of this skill may anger the audience. Also, 'special' monsters are immune to recruitment. Success depends on User Cha and level. - praying
User is allowed to cast "cleric" spells. In addition, this skill may be used to accelerate the accumulation of grace. This skill may be either 'learned' or acquired through the use of a "holy symbol". - + punching
User can make a "bare-handed attack". Damage is based on the user's Str and level. This is the most feeble of the hth attacks. - remove_traps
User may remove previously discovered traps. - sense curse
User may discover whether items that he holds are 'cursed'. Controversial skill, may go away in later versions. - sense magic
User may discover whether items that he holds are 'magic'. Controversial skill, may go away in later versions. - set traps
Unimplemented. - singing
User may pacify hostile monsters with this skill. Certain kinds of monsters are immune. Success depends on user level and Cha. - smithery
User may indentify arms and armour that they hold. Right now this is a powerful skill, and I am considering breaking it up into 2 indentify skills in the future. - spellcasting
User is allowed to cast "wizard" spells. This skill may be acquired either through the use of a talisman or learned via a skill scroll. - + stealing
User can take items from the inventory of other monsters. - thaumagragist
User can indentify rods, wands and horns that they are holding. - throwing
Unimplemented. - use magic item
User can use magic items like rods/wands/horns. Note that by default, you do not gain experience with this skill, and thus, you don't get experience for using rods/wands/horns to kill monsters. - woodsman
While the skill is readied, the possessor will move faster through "wooded" terrain (forest, grasslands, brush, jungle, etc.) - writing
User may rewrite spell scrolls with a previously known spell. Sp, time and an old scroll are needed. Backfire effects are possible. Only available as a 'writing pen'.
+ -denotes a skill which monsters/NPC's may also use.
how stats are related to skills/experience
Table of how experience is modified by the the stats associated with a skill. Each skill which may 'generate' experience (the "associated skills") have a number of stats which are associated with them. Each time experience is gained by the player, the base value is modified according to the value of the player's stats associated with the skill in use. The effect of the modification is shown below (wherein all the associated stats have been taken as an average).
Default parameters for skills
Table of stats associated w/ each skill. Miscellaneous skills never have any stats related to them. This is the default table. Your release of CF may have difference bindings between experience categories (ExpCat) and relevant stats may differ. Use the -m5 flag to investigate this for your version of CF.
In the above table, "skill name" refers to the name of the skill as used by the player, "expcat" refers to the name of the associated experience category, "time" is the number of 'ticks' required to perform the skill, "base" is the base amount of exp given for successful use of the skill, "xlvl" is the level multiplier to the amount of experience gained, and "stat1, stat2, stat3" are the associated stats for the skill. The values of these stats will be used to reference a multiplier (see preceding table) to the amount of gained experience.
Theory of Experience Gain
[excerpted from the code in skill_util.c, as if you can't tell :) ]
/* calc_skill_exp() - calculates amount of experience can be gained for
* successful use of a skill and returns value of the experience gain.
* Here we take the view that a player must 'overcome an opponent'
* in order to gain experience. Examples include foes killed combat,
* finding/disarming a trap, stealing from some being, etc.
* The gained experience is based primarily on the difference in levels,
* exp point value of vanquished foe, the relevant stats of the skill being
* used and modifications in the skills[] table.
*
* For now, monsters and players will be treated differently. Below I give
* the algorithm for *PLAYER* experience gain. Monster exp gain is simpler.
* Monsters just get 10% of the exp of the opponent.
*
* Example: the basic exp gain for player 'who' how "vanquished" opponent
* 'op' using skill 'sk' is:
*
* EXP GAIN = (op->exp + skills[sk].bexp) * (1 + lvl_mult) * stat_mult
*
* where lvl_mult is
*
* for(pl->level <= op->level)::
* lvl_mult = skills[sk].lexp * (op->level - pl->level)
* for(pl->level > op->level)::
* lvl_mult = (op_lvl/pl_lvl) - 1;
*
* and stat_mult is taken from stat_exp_mult[] table above.
*
* Coded by b.t. thomas@astro.psu.edu
*/