From b1ee54b1fe15e89838f70a64bedd9899b8fb3119 Mon Sep 17 00:00:00 2001 From: Darshan Shaligram Date: Mon, 4 Jan 2010 22:08:57 +0530 Subject: Move to a more compile-safe way of defining species skill aptitudes. This also fixes broken aptitudes after Darts skill was removed. --- crawl-ref/source/skills2.cc | 2492 +++++++++++++++++--------------------- crawl-ref/source/util/gen-apt.pl | 21 +- 2 files changed, 1136 insertions(+), 1377 deletions(-) diff --git a/crawl-ref/source/skills2.cc b/crawl-ref/source/skills2.cc index 6d51291ac8..3dd241f9fd 100644 --- a/crawl-ref/source/skills2.cc +++ b/crawl-ref/source/skills2.cc @@ -137,1378 +137,1122 @@ const char *martial_arts_titles[6] = // The Human aptitude set of 100 for all skills allows to define all other // species relative to Humans. -// Traditionally, Spellcasting and In/Evocations formed the exceptions here: -// Spellcasting skill was more expensive with about 130%, the other two got -// a discount with about 75%. -const int spec_skills[NUM_SPECIES][40] = +struct species_skill_aptitude { - { // SP_HUMAN - 100, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 100, // SK_SLINGS - 100, // SK_BOWS - 100, // SK_CROSSBOWS - 100, // unused (was darts) - 100, // SK_THROWING - 100, // SK_ARMOUR - 100, // SK_DODGING - 100, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 100, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_HIGH_ELF - 100, // SK_FIGHTING - 70, // SK_SHORT_BLADES - 70, // SK_LONG_BLADES - 130, // SK_AXES - 150, // SK_MACES_FLAILS - 150, // SK_POLEARMS - 100, // SK_STAVES - 140, // SK_SLINGS - 60, // SK_BOWS - 100, // SK_CROSSBOWS - 90, // unused (was darts) - 80, // SK_THROWING - 110, // SK_ARMOUR - 90, // SK_DODGING - 90, // SK_STEALTH - 110, // SK_STABBING - 110, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 130, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 90, // SK_SPELLCASTING - 90, // SK_CONJURATIONS - 70, // SK_ENCHANTMENTS - 110, // SK_SUMMONINGS - 130, // SK_NECROMANCY - 90, // SK_TRANSLOCATIONS - 90, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 70, // SK_AIR_MAGIC - 130, // SK_EARTH_MAGIC - 130, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_DEEP_ELF - 150, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 110, // SK_LONG_BLADES - 150, // SK_AXES - 170, // SK_MACES_FLAILS - 170, // SK_POLEARMS - 100, // SK_STAVES - 140, // SK_SLINGS - 80, // SK_BOWS - 110, // SK_CROSSBOWS - 80, // unused (was darts) - 80, // SK_THROWING - 140, // SK_ARMOUR - 70, // SK_DODGING - 70, // SK_STEALTH - 80, // SK_STABBING - 140, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 130, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 70, // SK_SPELLCASTING - 80, // SK_CONJURATIONS - 50, // SK_ENCHANTMENTS - 80, // SK_SUMMONINGS - 70, // SK_NECROMANCY - 80, // SK_TRANSLOCATIONS - 80, // SK_TRANSMUTATIONS - 90, // SK_FIRE_MAGIC - 90, // SK_ICE_MAGIC - 80, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 80, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 70, // SK_EVOCATIONS - }, - - { // SP_SLUDGE_ELF - 80, // SK_FIGHTING - 110, // SK_SHORT_BLADES - 110, // SK_LONG_BLADES - 130, // SK_AXES - 140, // SK_MACES_FLAILS - 140, // SK_POLEARMS - 100, // SK_STAVES - 100, // SK_SLINGS - 100, // SK_BOWS - 100, // SK_CROSSBOWS - 100, // unused (was darts) - 70, // SK_THROWING - 140, // SK_ARMOUR - 70, // SK_DODGING - 80, // SK_STEALTH - 100, // SK_STABBING - 130, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 80, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 90, // SK_SPELLCASTING - 130, // SK_CONJURATIONS - 130, // SK_ENCHANTMENTS - 90, // SK_SUMMONINGS - 90, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 60, // SK_TRANSMUTATIONS - 80, // SK_FIRE_MAGIC - 80, // SK_ICE_MAGIC - 80, // SK_AIR_MAGIC - 80, // SK_EARTH_MAGIC - 80, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_MOUNTAIN_DWARF - 70, // SK_FIGHTING - 80, // SK_SHORT_BLADES - 90, // SK_LONG_BLADES - 70, // SK_AXES - 70, // SK_MACES_FLAILS - 110, // SK_POLEARMS - 120, // SK_STAVES - 120, // SK_SLINGS - 150, // SK_BOWS - 90, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 60, // SK_ARMOUR - 110, // SK_DODGING - 150, // SK_STEALTH - 130, // SK_STABBING - 70, // SK_SHIELDS - 80, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 210, // SK_SPELLCASTING - 120, // SK_CONJURATIONS - 150, // SK_ENCHANTMENTS - 150, // SK_SUMMONINGS - 160, // SK_NECROMANCY - 150, // SK_TRANSLOCATIONS - 120, // SK_TRANSMUTATIONS - 70, // SK_FIRE_MAGIC - 130, // SK_ICE_MAGIC - 150, // SK_AIR_MAGIC - 70, // SK_EARTH_MAGIC - 130, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 70, // SK_EVOCATIONS - }, - - { // SP_HALFLING - 120, // SK_FIGHTING - 60, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 120, // SK_AXES - 150, // SK_MACES_FLAILS - 160, // SK_POLEARMS - 130, // SK_STAVES - 50, // SK_SLINGS - 70, // SK_BOWS - 90, // SK_CROSSBOWS - 50, // unused (was darts) - 60, // SK_THROWING - 150, // SK_ARMOUR - 70, // SK_DODGING - 60, // SK_STEALTH - 70, // SK_STABBING - 90, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 140, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 170, // SK_SPELLCASTING - 130, // SK_CONJURATIONS - 100, // SK_ENCHANTMENTS - 120, // SK_SUMMONINGS - 150, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 150, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 90, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 120, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 70, // SK_EVOCATIONS - }, - - { // SP_HILL_ORC - 70, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 80, // SK_LONG_BLADES - 70, // SK_AXES - 80, // SK_MACES_FLAILS - 80, // SK_POLEARMS - 110, // SK_STAVES - 130, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 130, // unused (was darts) - 100, // SK_THROWING - 90, // SK_ARMOUR - 140, // SK_DODGING - 150, // SK_STEALTH - 70, // SK_STABBING - 80, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 90, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 200, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 150, // SK_TRANSLOCATIONS - 160, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 150, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 110, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_KOBOLD - 80, // SK_FIGHTING - 60, // SK_SHORT_BLADES - 140, // SK_LONG_BLADES - 110, // SK_AXES - 100, // SK_MACES_FLAILS - 150, // SK_POLEARMS - 110, // SK_STAVES - 70, // SK_SLINGS - 90, // SK_BOWS - 80, // SK_CROSSBOWS - 50, // unused (was darts) - 60, // SK_THROWING - 140, // SK_ARMOUR - 70, // SK_DODGING - 60, // SK_STEALTH - 70, // SK_STABBING - 130, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 140, // SK_SPELLCASTING - 110, // SK_CONJURATIONS - 110, // SK_ENCHANTMENTS - 110, // SK_SUMMONINGS - 110, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 110, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 60, // SK_EVOCATIONS - }, - - { // SP_MUMMY - 100, // SK_FIGHTING - 140, // SK_SHORT_BLADES - 140, // SK_LONG_BLADES - 140, // SK_AXES - 140, // SK_MACES_FLAILS - 140, // SK_POLEARMS - 140, // SK_STAVES - 140, // SK_SLINGS - 140, // SK_BOWS - 140, // SK_CROSSBOWS - 140, // unused (was darts) - 140, // SK_THROWING - 140, // SK_ARMOUR - 140, // SK_DODGING - 140, // SK_STEALTH - 140, // SK_STABBING - 140, // SK_SHIELDS - 140, // SK_TRAPS_DOORS - 140, // SK_UNARMED_COMBAT - 140, // undefined - 140, // undefined - 140, // undefined - 140, // undefined - 100, // undefined - 140, // undefined - 130, // SK_SPELLCASTING - 140, // SK_CONJURATIONS - 140, // SK_ENCHANTMENTS - 140, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 140, // SK_TRANSLOCATIONS - 140, // SK_TRANSMUTATIONS - 140, // SK_FIRE_MAGIC - 140, // SK_ICE_MAGIC - 140, // SK_AIR_MAGIC - 140, // SK_EARTH_MAGIC - 140, // SK_POISON_MAGIC - 110, // SK_INVOCATIONS - 110, // SK_EVOCATIONS - }, - - { // SP_NAGA - 100, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 120, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 150, // SK_ARMOUR - 150, // SK_DODGING - 40, // SK_STEALTH - 100, // SK_STABBING - 140, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 100, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 60, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_OGRE - 70, // SK_FIGHTING - 200, // SK_SHORT_BLADES - 180, // SK_LONG_BLADES - 180, // SK_AXES - 90, // SK_MACES_FLAILS - 110, // SK_POLEARMS - 120, // SK_STAVES - 180, // SK_SLINGS - 180, // SK_BOWS - 180, // SK_CROSSBOWS - 180, // unused (was darts) - 80, // SK_THROWING - 150, // SK_ARMOUR - 120, // SK_DODGING - 150, // SK_STEALTH - 150, // SK_STABBING - 120, // SK_SHIELDS - 150, // SK_TRAPS_DOORS - 110, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 90, // SK_SPELLCASTING - 160, // SK_CONJURATIONS - 160, // SK_ENCHANTMENTS - 160, // SK_SUMMONINGS - 160, // SK_NECROMANCY - 160, // SK_TRANSLOCATIONS - 160, // SK_TRANSMUTATIONS - 160, // SK_FIRE_MAGIC - 160, // SK_ICE_MAGIC - 160, // SK_AIR_MAGIC - 160, // SK_EARTH_MAGIC - 160, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 120, // SK_EVOCATIONS - }, - - { // SP_TROLL - 140, // SK_FIGHTING - 150, // SK_SHORT_BLADES - 150, // SK_LONG_BLADES - 150, // SK_AXES - 130, // SK_MACES_FLAILS - 150, // SK_POLEARMS - 150, // SK_STAVES - 180, // SK_SLINGS - 180, // SK_BOWS - 180, // SK_CROSSBOWS - 180, // unused (was darts) - 130, // SK_THROWING - 150, // SK_ARMOUR - 130, // SK_DODGING - 250, // SK_STEALTH - 150, // SK_STABBING - 150, // SK_SHIELDS - 200, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 260, // SK_SPELLCASTING - 160, // SK_CONJURATIONS - 200, // SK_ENCHANTMENTS - 160, // SK_SUMMONINGS - 150, // SK_NECROMANCY - 160, // SK_TRANSLOCATIONS - 160, // SK_TRANSMUTATIONS - 160, // SK_FIRE_MAGIC - 160, // SK_ICE_MAGIC - 200, // SK_AIR_MAGIC - 120, // SK_EARTH_MAGIC - 160, // SK_POISON_MAGIC - 110, // SK_INVOCATIONS - 140, // SK_EVOCATIONS - }, - - { // SP_RED_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 70, // SK_FIRE_MAGIC - 140, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_WHITE_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 140, // SK_FIRE_MAGIC - 70, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_GREEN_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 70, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_YELLOW_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_GREY_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_BLACK_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 70, // SK_AIR_MAGIC - 140, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_PURPLE_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 90, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 90, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 70, // SK_EVOCATIONS - }, - - { // SP_MOTTLED_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 80, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_PALE_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 90, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 90, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 70, // SK_EVOCATIONS - }, - - { // SP_BASE_DRACONIAN - 90, // SK_FIGHTING - 100, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 100, // SK_AXES - 100, // SK_MACES_FLAILS - 100, // SK_POLEARMS - 100, // SK_STAVES - 120, // SK_SLINGS - 120, // SK_BOWS - 120, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 200, // SK_ARMOUR - 120, // SK_DODGING - 120, // SK_STEALTH - 100, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 100, // SK_TRANSLOCATIONS - 100, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 100, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_CENTAUR - 100, // SK_FIGHTING - 120, // SK_SHORT_BLADES - 110, // SK_LONG_BLADES - 110, // SK_AXES - 110, // SK_MACES_FLAILS - 110, // SK_POLEARMS - 110, // SK_STAVES - 80, // SK_SLINGS - 60, // SK_BOWS - 90, // SK_CROSSBOWS - 80, // unused (was darts) - 60, // SK_THROWING - 180, // SK_ARMOUR - 170, // SK_DODGING - 200, // SK_STEALTH - 170, // SK_STABBING - 180, // SK_SHIELDS - 150, // SK_TRAPS_DOORS - 100, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 180, // SK_SPELLCASTING - 120, // SK_CONJURATIONS - 110, // SK_ENCHANTMENTS - 120, // SK_SUMMONINGS - 120, // SK_NECROMANCY - 120, // SK_TRANSLOCATIONS - 120, // SK_TRANSMUTATIONS - 120, // SK_FIRE_MAGIC - 120, // SK_ICE_MAGIC - 120, // SK_AIR_MAGIC - 120, // SK_EARTH_MAGIC - 130, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 100, // SK_EVOCATIONS - }, - - { // SP_DEMIGOD - 110, // SK_FIGHTING - 110, // SK_SHORT_BLADES - 110, // SK_LONG_BLADES - 110, // SK_AXES - 110, // SK_MACES_FLAILS - 110, // SK_POLEARMS - 110, // SK_STAVES - 110, // SK_SLINGS - 110, // SK_BOWS - 110, // SK_CROSSBOWS - 110, // unused (was darts) - 110, // SK_THROWING - 110, // SK_ARMOUR - 110, // SK_DODGING - 110, // SK_STEALTH - 110, // SK_STABBING - 110, // SK_SHIELDS - 110, // SK_TRAPS_DOORS - 110, // SK_UNARMED_COMBAT - 110, // undefined - 110, // undefined - 110, // undefined - 100, // undefined - 110, // undefined - 110, // undefined - 140, // SK_SPELLCASTING - 110, // SK_CONJURATIONS - 110, // SK_ENCHANTMENTS - 110, // SK_SUMMONINGS - 110, // SK_NECROMANCY - 110, // SK_TRANSLOCATIONS - 110, // SK_TRANSMUTATIONS - 110, // SK_FIRE_MAGIC - 110, // SK_ICE_MAGIC - 110, // SK_AIR_MAGIC - 110, // SK_EARTH_MAGIC - 110, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_SPRIGGAN - 150, // SK_FIGHTING - 90, // SK_SHORT_BLADES - 140, // SK_LONG_BLADES - 150, // SK_AXES - 160, // SK_MACES_FLAILS - 180, // SK_POLEARMS - 150, // SK_STAVES - 70, // SK_SLINGS - 70, // SK_BOWS - 100, // SK_CROSSBOWS - 70, // unused (was darts) - 90, // SK_THROWING - 170, // SK_ARMOUR - 50, // SK_DODGING - 50, // SK_STEALTH - 50, // SK_STABBING - 180, // SK_SHIELDS - 60, // SK_TRAPS_DOORS - 130, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 80, // SK_SPELLCASTING - 160, // SK_CONJURATIONS - 50, // SK_ENCHANTMENTS - 150, // SK_SUMMONINGS - 120, // SK_NECROMANCY - 50, // SK_TRANSLOCATIONS - 60, // SK_TRANSMUTATIONS - 140, // SK_FIRE_MAGIC - 140, // SK_ICE_MAGIC - 120, // SK_AIR_MAGIC - 120, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 100, // SK_INVOCATIONS - 50, // SK_EVOCATIONS - }, - - { // SP_MINOTAUR - 70, // SK_FIGHTING - 70, // SK_SHORT_BLADES - 70, // SK_LONG_BLADES - 70, // SK_AXES - 70, // SK_MACES_FLAILS - 70, // SK_POLEARMS - 70, // SK_STAVES - 90, // SK_SLINGS - 90, // SK_BOWS - 90, // SK_CROSSBOWS - 90, // unused (was darts) - 90, // SK_THROWING - 80, // SK_ARMOUR - 80, // SK_DODGING - 130, // SK_STEALTH - 100, // SK_STABBING - 80, // SK_SHIELDS - 120, // SK_TRAPS_DOORS - 80, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 230, // SK_SPELLCASTING - 170, // SK_CONJURATIONS - 170, // SK_ENCHANTMENTS - 170, // SK_SUMMONINGS - 170, // SK_NECROMANCY - 170, // SK_TRANSLOCATIONS - 170, // SK_TRANSMUTATIONS - 170, // SK_FIRE_MAGIC - 170, // SK_ICE_MAGIC - 170, // SK_AIR_MAGIC - 170, // SK_EARTH_MAGIC - 170, // SK_POISON_MAGIC - 100, // SK_INVOCATIONS - 130, // SK_EVOCATIONS - }, - - { // SP_DEMONSPAWN - 100, // SK_FIGHTING - 110, // SK_SHORT_BLADES - 110, // SK_LONG_BLADES - 110, // SK_AXES - 110, // SK_MACES_FLAILS - 110, // SK_POLEARMS - 110, // SK_STAVES - 110, // SK_SLINGS - 110, // SK_BOWS - 110, // SK_CROSSBOWS - 110, // unused (was darts) - 110, // SK_THROWING - 110, // SK_ARMOUR - 110, // SK_DODGING - 110, // SK_STEALTH - 110, // SK_STABBING - 110, // SK_SHIELDS - 110, // SK_TRAPS_DOORS - 110, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 100, // SK_CONJURATIONS - 110, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 90, // SK_NECROMANCY - 110, // SK_TRANSLOCATIONS - 110, // SK_TRANSMUTATIONS - 100, // SK_FIRE_MAGIC - 110, // SK_ICE_MAGIC - 110, // SK_AIR_MAGIC - 110, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 60, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_GHOUL - 80, // SK_FIGHTING - 110, // SK_SHORT_BLADES - 110, // SK_LONG_BLADES - 110, // SK_AXES - 110, // SK_MACES_FLAILS - 110, // SK_POLEARMS - 110, // SK_STAVES - 130, // SK_SLINGS - 130, // SK_BOWS - 130, // SK_CROSSBOWS - 130, // unused (was darts) - 130, // SK_THROWING - 110, // SK_ARMOUR - 110, // SK_DODGING - 80, // SK_STEALTH - 100, // SK_STABBING - 110, // SK_SHIELDS - 120, // SK_TRAPS_DOORS - 80, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 160, // SK_SPELLCASTING - 130, // SK_CONJURATIONS - 130, // SK_ENCHANTMENTS - 120, // SK_SUMMONINGS - 100, // SK_NECROMANCY - 120, // SK_TRANSLOCATIONS - 120, // SK_TRANSMUTATIONS - 150, // SK_FIRE_MAGIC - 90, // SK_ICE_MAGIC - 150, // SK_AIR_MAGIC - 90, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 100, // SK_EVOCATIONS - }, - - { // SP_KENKU - 100, // SK_FIGHTING - 80, // SK_SHORT_BLADES - 80, // SK_LONG_BLADES - 80, // SK_AXES - 80, // SK_MACES_FLAILS - 80, // SK_POLEARMS - 80, // SK_STAVES - 100, // SK_SLINGS - 80, // SK_BOWS - 80, // SK_CROSSBOWS - 90, // unused (was darts) - 90, // SK_THROWING - 90, // SK_ARMOUR - 90, // SK_DODGING - 100, // SK_STEALTH - 80, // SK_STABBING - 100, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 80, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 60, // SK_CONJURATIONS - 160, // SK_ENCHANTMENTS - 70, // SK_SUMMONINGS - 80, // SK_NECROMANCY - 150, // SK_TRANSLOCATIONS - 150, // SK_TRANSMUTATIONS - 90, // SK_FIRE_MAGIC - 120, // SK_ICE_MAGIC - 90, // SK_AIR_MAGIC - 120, // SK_EARTH_MAGIC - 100, // SK_POISON_MAGIC - 120, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_MERFOLK - 80, // SK_FIGHTING - 70, // SK_SHORT_BLADES - 90, // SK_LONG_BLADES - 140, // SK_AXES - 150, // SK_MACES_FLAILS - 50, // SK_POLEARMS - 130, // SK_STAVES - 150, // SK_SLINGS - 140, // SK_BOWS - 140, // SK_CROSSBOWS - 100, // unused (was darts) - 100, // SK_THROWING - 160, // SK_ARMOUR - 60, // SK_DODGING - 90, // SK_STEALTH - 70, // SK_STABBING - 100, // SK_SHIELDS - 120, // SK_TRAPS_DOORS - 90, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 130, // SK_SPELLCASTING - 140, // SK_CONJURATIONS - 90, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 150, // SK_NECROMANCY - 140, // SK_TRANSLOCATIONS - 60, // SK_TRANSMUTATIONS - 160, // SK_FIRE_MAGIC - 80, // SK_ICE_MAGIC - 150, // SK_AIR_MAGIC - 150, // SK_EARTH_MAGIC - 80, // SK_POISON_MAGIC - 80, // SK_INVOCATIONS - 80, // SK_EVOCATIONS - }, - - { // SP_VAMPIRE - 110, // SK_FIGHTING - 90, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 110, // SK_AXES - 140, // SK_MACES_FLAILS - 110, // SK_POLEARMS - 140, // SK_STAVES - 140, // SK_SLINGS - 140, // SK_BOWS - 140, // SK_CROSSBOWS - 140, // unused (was darts) - 140, // SK_THROWING - 140, // SK_ARMOUR - 90, // SK_DODGING - 50, // SK_STEALTH - 90, // SK_STABBING - 110, // SK_SHIELDS - 100, // SK_TRAPS_DOORS - 90, // SK_UNARMED_COMBAT - 140, // undefined - 140, // undefined - 140, // undefined - 140, // undefined - 100, // undefined - 140, // undefined - 130, // SK_SPELLCASTING - 160, // SK_CONJURATIONS - 90, // SK_ENCHANTMENTS - 100, // SK_SUMMONINGS - 90, // SK_NECROMANCY - 140, // SK_TRANSLOCATIONS - 90, // SK_TRANSMUTATIONS - 140, // SK_FIRE_MAGIC - 100, // SK_ICE_MAGIC - 100, // SK_AIR_MAGIC - 120, // SK_EARTH_MAGIC - 120, // SK_POISON_MAGIC - 120, // SK_INVOCATIONS - 90, // SK_EVOCATIONS - }, - - { // SP_DEEP_DWARF - 110, // SK_FIGHTING - 120, // SK_SHORT_BLADES - 100, // SK_LONG_BLADES - 90, // SK_AXES - 100, // SK_MACES_FLAILS - 120, // SK_POLEARMS - 110, // SK_STAVES - 90, // SK_SLINGS - 180, // SK_BOWS - 90, // SK_CROSSBOWS - 120, // unused (was darts) - 120, // SK_THROWING - 90, // SK_ARMOUR - 90, // SK_DODGING - 70, // SK_STEALTH - 110, // SK_STABBING - 90, // SK_SHIELDS - 80, // SK_TRAPS_DOORS - 120, // SK_UNARMED_COMBAT - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 100, // undefined - 160, // SK_SPELLCASTING - 120, // SK_CONJURATIONS - 120, // SK_ENCHANTMENTS - 110, // SK_SUMMONINGS - 80, // SK_NECROMANCY - 90, // SK_TRANSLOCATIONS - 120, // SK_TRANSMUTATION - 110, // SK_FIRE_MAGIC - 110, // SK_ICE_MAGIC - 170, // SK_AIR_MAGIC - 60, // SK_EARTH_MAGIC - 130, // SK_POISON_MAGIC - 60, // SK_INVOCATIONS - 50, // SK_EVOCATIONS - }, - - // SP_HILL_DWARF placeholder. - { - }, - - // SP_ELF placeholder. - { - }, - - // SP_OGRE_MAGE placeholder. - { - }, - - // SP_GREY_ELF placeholder. - { - }, - - // SP_GNOME placeholder. + species_type species; + skill_type skill; + int aptitude; + + species_skill_aptitude(species_type _species, + skill_type _skill, + int _aptitude) + : species(_species), skill(_skill), aptitude(_aptitude) { } }; +static inline species_skill_aptitude APT(species_type sp, + skill_type sk, + int aptitude) +{ + return species_skill_aptitude(sp, sk, aptitude); +} +static const species_skill_aptitude species_skill_aptitudes[] = +{ + // SP_HUMAN + APT(SP_HUMAN, SK_FIGHTING, 100), + APT(SP_HUMAN, SK_SHORT_BLADES, 100), + APT(SP_HUMAN, SK_LONG_BLADES, 100), + APT(SP_HUMAN, SK_AXES, 100), + APT(SP_HUMAN, SK_MACES_FLAILS, 100), + APT(SP_HUMAN, SK_POLEARMS, 100), + APT(SP_HUMAN, SK_STAVES, 100), + APT(SP_HUMAN, SK_SLINGS, 100), + APT(SP_HUMAN, SK_BOWS, 100), + APT(SP_HUMAN, SK_CROSSBOWS, 100), + APT(SP_HUMAN, SK_THROWING, 100), + APT(SP_HUMAN, SK_ARMOUR, 100), + APT(SP_HUMAN, SK_DODGING, 100), + APT(SP_HUMAN, SK_STEALTH, 100), + APT(SP_HUMAN, SK_STABBING, 100), + APT(SP_HUMAN, SK_SHIELDS, 100), + APT(SP_HUMAN, SK_TRAPS_DOORS, 100), + APT(SP_HUMAN, SK_UNARMED_COMBAT, 100), + APT(SP_HUMAN, SK_SPELLCASTING, 130), + APT(SP_HUMAN, SK_CONJURATIONS, 100), + APT(SP_HUMAN, SK_ENCHANTMENTS, 100), + APT(SP_HUMAN, SK_SUMMONINGS, 100), + APT(SP_HUMAN, SK_NECROMANCY, 100), + APT(SP_HUMAN, SK_TRANSLOCATIONS, 100), + APT(SP_HUMAN, SK_TRANSMUTATIONS, 100), + APT(SP_HUMAN, SK_FIRE_MAGIC, 100), + APT(SP_HUMAN, SK_ICE_MAGIC, 100), + APT(SP_HUMAN, SK_AIR_MAGIC, 100), + APT(SP_HUMAN, SK_EARTH_MAGIC, 100), + APT(SP_HUMAN, SK_POISON_MAGIC, 100), + APT(SP_HUMAN, SK_INVOCATIONS, 80), + APT(SP_HUMAN, SK_EVOCATIONS, 80), + + // SP_HIGH_ELF + APT(SP_HIGH_ELF, SK_FIGHTING, 100), + APT(SP_HIGH_ELF, SK_SHORT_BLADES, 70), + APT(SP_HIGH_ELF, SK_LONG_BLADES, 70), + APT(SP_HIGH_ELF, SK_AXES, 130), + APT(SP_HIGH_ELF, SK_MACES_FLAILS, 150), + APT(SP_HIGH_ELF, SK_POLEARMS, 150), + APT(SP_HIGH_ELF, SK_STAVES, 100), + APT(SP_HIGH_ELF, SK_SLINGS, 140), + APT(SP_HIGH_ELF, SK_BOWS, 60), + APT(SP_HIGH_ELF, SK_CROSSBOWS, 100), + APT(SP_HIGH_ELF, SK_THROWING, 80), + APT(SP_HIGH_ELF, SK_ARMOUR, 110), + APT(SP_HIGH_ELF, SK_DODGING, 90), + APT(SP_HIGH_ELF, SK_STEALTH, 90), + APT(SP_HIGH_ELF, SK_STABBING, 110), + APT(SP_HIGH_ELF, SK_SHIELDS, 110), + APT(SP_HIGH_ELF, SK_TRAPS_DOORS, 100), + APT(SP_HIGH_ELF, SK_UNARMED_COMBAT, 130), + APT(SP_HIGH_ELF, SK_SPELLCASTING, 90), + APT(SP_HIGH_ELF, SK_CONJURATIONS, 90), + APT(SP_HIGH_ELF, SK_ENCHANTMENTS, 70), + APT(SP_HIGH_ELF, SK_SUMMONINGS, 110), + APT(SP_HIGH_ELF, SK_NECROMANCY, 130), + APT(SP_HIGH_ELF, SK_TRANSLOCATIONS, 90), + APT(SP_HIGH_ELF, SK_TRANSMUTATIONS, 90), + APT(SP_HIGH_ELF, SK_FIRE_MAGIC, 100), + APT(SP_HIGH_ELF, SK_ICE_MAGIC, 100), + APT(SP_HIGH_ELF, SK_AIR_MAGIC, 70), + APT(SP_HIGH_ELF, SK_EARTH_MAGIC, 130), + APT(SP_HIGH_ELF, SK_POISON_MAGIC, 130), + APT(SP_HIGH_ELF, SK_INVOCATIONS, 80), + APT(SP_HIGH_ELF, SK_EVOCATIONS, 80), + + // SP_DEEP_ELF + APT(SP_DEEP_ELF, SK_FIGHTING, 150), + APT(SP_DEEP_ELF, SK_SHORT_BLADES, 100), + APT(SP_DEEP_ELF, SK_LONG_BLADES, 110), + APT(SP_DEEP_ELF, SK_AXES, 150), + APT(SP_DEEP_ELF, SK_MACES_FLAILS, 170), + APT(SP_DEEP_ELF, SK_POLEARMS, 170), + APT(SP_DEEP_ELF, SK_STAVES, 100), + APT(SP_DEEP_ELF, SK_SLINGS, 140), + APT(SP_DEEP_ELF, SK_BOWS, 80), + APT(SP_DEEP_ELF, SK_CROSSBOWS, 110), + APT(SP_DEEP_ELF, SK_THROWING, 80), + APT(SP_DEEP_ELF, SK_ARMOUR, 140), + APT(SP_DEEP_ELF, SK_DODGING, 70), + APT(SP_DEEP_ELF, SK_STEALTH, 70), + APT(SP_DEEP_ELF, SK_STABBING, 80), + APT(SP_DEEP_ELF, SK_SHIELDS, 140), + APT(SP_DEEP_ELF, SK_TRAPS_DOORS, 100), + APT(SP_DEEP_ELF, SK_UNARMED_COMBAT, 130), + APT(SP_DEEP_ELF, SK_SPELLCASTING, 70), + APT(SP_DEEP_ELF, SK_CONJURATIONS, 80), + APT(SP_DEEP_ELF, SK_ENCHANTMENTS, 50), + APT(SP_DEEP_ELF, SK_SUMMONINGS, 80), + APT(SP_DEEP_ELF, SK_NECROMANCY, 70), + APT(SP_DEEP_ELF, SK_TRANSLOCATIONS, 80), + APT(SP_DEEP_ELF, SK_TRANSMUTATIONS, 80), + APT(SP_DEEP_ELF, SK_FIRE_MAGIC, 90), + APT(SP_DEEP_ELF, SK_ICE_MAGIC, 90), + APT(SP_DEEP_ELF, SK_AIR_MAGIC, 80), + APT(SP_DEEP_ELF, SK_EARTH_MAGIC, 100), + APT(SP_DEEP_ELF, SK_POISON_MAGIC, 80), + APT(SP_DEEP_ELF, SK_INVOCATIONS, 80), + APT(SP_DEEP_ELF, SK_EVOCATIONS, 70), + + // SP_SLUDGE_ELF + APT(SP_SLUDGE_ELF, SK_FIGHTING, 80), + APT(SP_SLUDGE_ELF, SK_SHORT_BLADES, 110), + APT(SP_SLUDGE_ELF, SK_LONG_BLADES, 110), + APT(SP_SLUDGE_ELF, SK_AXES, 130), + APT(SP_SLUDGE_ELF, SK_MACES_FLAILS, 140), + APT(SP_SLUDGE_ELF, SK_POLEARMS, 140), + APT(SP_SLUDGE_ELF, SK_STAVES, 100), + APT(SP_SLUDGE_ELF, SK_SLINGS, 100), + APT(SP_SLUDGE_ELF, SK_BOWS, 100), + APT(SP_SLUDGE_ELF, SK_CROSSBOWS, 100), + APT(SP_SLUDGE_ELF, SK_THROWING, 70), + APT(SP_SLUDGE_ELF, SK_ARMOUR, 140), + APT(SP_SLUDGE_ELF, SK_DODGING, 70), + APT(SP_SLUDGE_ELF, SK_STEALTH, 80), + APT(SP_SLUDGE_ELF, SK_STABBING, 100), + APT(SP_SLUDGE_ELF, SK_SHIELDS, 130), + APT(SP_SLUDGE_ELF, SK_TRAPS_DOORS, 100), + APT(SP_SLUDGE_ELF, SK_UNARMED_COMBAT, 80), + APT(SP_SLUDGE_ELF, SK_SPELLCASTING, 90), + APT(SP_SLUDGE_ELF, SK_CONJURATIONS, 130), + APT(SP_SLUDGE_ELF, SK_ENCHANTMENTS, 130), + APT(SP_SLUDGE_ELF, SK_SUMMONINGS, 90), + APT(SP_SLUDGE_ELF, SK_NECROMANCY, 90), + APT(SP_SLUDGE_ELF, SK_TRANSLOCATIONS, 100), + APT(SP_SLUDGE_ELF, SK_TRANSMUTATIONS, 60), + APT(SP_SLUDGE_ELF, SK_FIRE_MAGIC, 80), + APT(SP_SLUDGE_ELF, SK_ICE_MAGIC, 80), + APT(SP_SLUDGE_ELF, SK_AIR_MAGIC, 80), + APT(SP_SLUDGE_ELF, SK_EARTH_MAGIC, 80), + APT(SP_SLUDGE_ELF, SK_POISON_MAGIC, 80), + APT(SP_SLUDGE_ELF, SK_INVOCATIONS, 80), + APT(SP_SLUDGE_ELF, SK_EVOCATIONS, 80), + + // SP_MOUNTAIN_DWARF + APT(SP_MOUNTAIN_DWARF, SK_FIGHTING, 70), + APT(SP_MOUNTAIN_DWARF, SK_SHORT_BLADES, 80), + APT(SP_MOUNTAIN_DWARF, SK_LONG_BLADES, 90), + APT(SP_MOUNTAIN_DWARF, SK_AXES, 70), + APT(SP_MOUNTAIN_DWARF, SK_MACES_FLAILS, 70), + APT(SP_MOUNTAIN_DWARF, SK_POLEARMS, 110), + APT(SP_MOUNTAIN_DWARF, SK_STAVES, 120), + APT(SP_MOUNTAIN_DWARF, SK_SLINGS, 120), + APT(SP_MOUNTAIN_DWARF, SK_BOWS, 150), + APT(SP_MOUNTAIN_DWARF, SK_CROSSBOWS, 90), + APT(SP_MOUNTAIN_DWARF, SK_THROWING, 120), + APT(SP_MOUNTAIN_DWARF, SK_ARMOUR, 60), + APT(SP_MOUNTAIN_DWARF, SK_DODGING, 110), + APT(SP_MOUNTAIN_DWARF, SK_STEALTH, 150), + APT(SP_MOUNTAIN_DWARF, SK_STABBING, 130), + APT(SP_MOUNTAIN_DWARF, SK_SHIELDS, 70), + APT(SP_MOUNTAIN_DWARF, SK_TRAPS_DOORS, 80), + APT(SP_MOUNTAIN_DWARF, SK_UNARMED_COMBAT, 100), + APT(SP_MOUNTAIN_DWARF, SK_SPELLCASTING, 210), + APT(SP_MOUNTAIN_DWARF, SK_CONJURATIONS, 120), + APT(SP_MOUNTAIN_DWARF, SK_ENCHANTMENTS, 150), + APT(SP_MOUNTAIN_DWARF, SK_SUMMONINGS, 150), + APT(SP_MOUNTAIN_DWARF, SK_NECROMANCY, 160), + APT(SP_MOUNTAIN_DWARF, SK_TRANSLOCATIONS, 150), + APT(SP_MOUNTAIN_DWARF, SK_TRANSMUTATIONS, 120), + APT(SP_MOUNTAIN_DWARF, SK_FIRE_MAGIC, 70), + APT(SP_MOUNTAIN_DWARF, SK_ICE_MAGIC, 130), + APT(SP_MOUNTAIN_DWARF, SK_AIR_MAGIC, 150), + APT(SP_MOUNTAIN_DWARF, SK_EARTH_MAGIC, 70), + APT(SP_MOUNTAIN_DWARF, SK_POISON_MAGIC, 130), + APT(SP_MOUNTAIN_DWARF, SK_INVOCATIONS, 80), + APT(SP_MOUNTAIN_DWARF, SK_EVOCATIONS, 70), + + // SP_HALFLING + APT(SP_HALFLING, SK_FIGHTING, 120), + APT(SP_HALFLING, SK_SHORT_BLADES, 60), + APT(SP_HALFLING, SK_LONG_BLADES, 100), + APT(SP_HALFLING, SK_AXES, 120), + APT(SP_HALFLING, SK_MACES_FLAILS, 150), + APT(SP_HALFLING, SK_POLEARMS, 160), + APT(SP_HALFLING, SK_STAVES, 130), + APT(SP_HALFLING, SK_SLINGS, 50), + APT(SP_HALFLING, SK_BOWS, 70), + APT(SP_HALFLING, SK_CROSSBOWS, 90), + APT(SP_HALFLING, SK_THROWING, 60), + APT(SP_HALFLING, SK_ARMOUR, 150), + APT(SP_HALFLING, SK_DODGING, 70), + APT(SP_HALFLING, SK_STEALTH, 60), + APT(SP_HALFLING, SK_STABBING, 70), + APT(SP_HALFLING, SK_SHIELDS, 90), + APT(SP_HALFLING, SK_TRAPS_DOORS, 100), + APT(SP_HALFLING, SK_UNARMED_COMBAT, 140), + APT(SP_HALFLING, SK_SPELLCASTING, 170), + APT(SP_HALFLING, SK_CONJURATIONS, 130), + APT(SP_HALFLING, SK_ENCHANTMENTS, 100), + APT(SP_HALFLING, SK_SUMMONINGS, 120), + APT(SP_HALFLING, SK_NECROMANCY, 150), + APT(SP_HALFLING, SK_TRANSLOCATIONS, 100), + APT(SP_HALFLING, SK_TRANSMUTATIONS, 150), + APT(SP_HALFLING, SK_FIRE_MAGIC, 100), + APT(SP_HALFLING, SK_ICE_MAGIC, 100), + APT(SP_HALFLING, SK_AIR_MAGIC, 90), + APT(SP_HALFLING, SK_EARTH_MAGIC, 100), + APT(SP_HALFLING, SK_POISON_MAGIC, 120), + APT(SP_HALFLING, SK_INVOCATIONS, 80), + APT(SP_HALFLING, SK_EVOCATIONS, 70), + + // SP_HILL_ORC + APT(SP_HILL_ORC, SK_FIGHTING, 70), + APT(SP_HILL_ORC, SK_SHORT_BLADES, 100), + APT(SP_HILL_ORC, SK_LONG_BLADES, 80), + APT(SP_HILL_ORC, SK_AXES, 70), + APT(SP_HILL_ORC, SK_MACES_FLAILS, 80), + APT(SP_HILL_ORC, SK_POLEARMS, 80), + APT(SP_HILL_ORC, SK_STAVES, 110), + APT(SP_HILL_ORC, SK_SLINGS, 130), + APT(SP_HILL_ORC, SK_BOWS, 120), + APT(SP_HILL_ORC, SK_CROSSBOWS, 120), + APT(SP_HILL_ORC, SK_THROWING, 100), + APT(SP_HILL_ORC, SK_ARMOUR, 90), + APT(SP_HILL_ORC, SK_DODGING, 140), + APT(SP_HILL_ORC, SK_STEALTH, 150), + APT(SP_HILL_ORC, SK_STABBING, 70), + APT(SP_HILL_ORC, SK_SHIELDS, 80), + APT(SP_HILL_ORC, SK_TRAPS_DOORS, 100), + APT(SP_HILL_ORC, SK_UNARMED_COMBAT, 90), + APT(SP_HILL_ORC, SK_SPELLCASTING, 200), + APT(SP_HILL_ORC, SK_CONJURATIONS, 100), + APT(SP_HILL_ORC, SK_ENCHANTMENTS, 120), + APT(SP_HILL_ORC, SK_SUMMONINGS, 100), + APT(SP_HILL_ORC, SK_NECROMANCY, 100), + APT(SP_HILL_ORC, SK_TRANSLOCATIONS, 150), + APT(SP_HILL_ORC, SK_TRANSMUTATIONS, 160), + APT(SP_HILL_ORC, SK_FIRE_MAGIC, 100), + APT(SP_HILL_ORC, SK_ICE_MAGIC, 100), + APT(SP_HILL_ORC, SK_AIR_MAGIC, 150), + APT(SP_HILL_ORC, SK_EARTH_MAGIC, 100), + APT(SP_HILL_ORC, SK_POISON_MAGIC, 110), + APT(SP_HILL_ORC, SK_INVOCATIONS, 80), + APT(SP_HILL_ORC, SK_EVOCATIONS, 80), + + // SP_KOBOLD + APT(SP_KOBOLD, SK_FIGHTING, 80), + APT(SP_KOBOLD, SK_SHORT_BLADES, 60), + APT(SP_KOBOLD, SK_LONG_BLADES, 140), + APT(SP_KOBOLD, SK_AXES, 110), + APT(SP_KOBOLD, SK_MACES_FLAILS, 100), + APT(SP_KOBOLD, SK_POLEARMS, 150), + APT(SP_KOBOLD, SK_STAVES, 110), + APT(SP_KOBOLD, SK_SLINGS, 70), + APT(SP_KOBOLD, SK_BOWS, 90), + APT(SP_KOBOLD, SK_CROSSBOWS, 80), + APT(SP_KOBOLD, SK_THROWING, 60), + APT(SP_KOBOLD, SK_ARMOUR, 140), + APT(SP_KOBOLD, SK_DODGING, 70), + APT(SP_KOBOLD, SK_STEALTH, 60), + APT(SP_KOBOLD, SK_STABBING, 70), + APT(SP_KOBOLD, SK_SHIELDS, 130), + APT(SP_KOBOLD, SK_TRAPS_DOORS, 100), + APT(SP_KOBOLD, SK_UNARMED_COMBAT, 100), + APT(SP_KOBOLD, SK_SPELLCASTING, 140), + APT(SP_KOBOLD, SK_CONJURATIONS, 110), + APT(SP_KOBOLD, SK_ENCHANTMENTS, 110), + APT(SP_KOBOLD, SK_SUMMONINGS, 110), + APT(SP_KOBOLD, SK_NECROMANCY, 110), + APT(SP_KOBOLD, SK_TRANSLOCATIONS, 100), + APT(SP_KOBOLD, SK_TRANSMUTATIONS, 110), + APT(SP_KOBOLD, SK_FIRE_MAGIC, 100), + APT(SP_KOBOLD, SK_ICE_MAGIC, 100), + APT(SP_KOBOLD, SK_AIR_MAGIC, 100), + APT(SP_KOBOLD, SK_EARTH_MAGIC, 100), + APT(SP_KOBOLD, SK_POISON_MAGIC, 100), + APT(SP_KOBOLD, SK_INVOCATIONS, 80), + APT(SP_KOBOLD, SK_EVOCATIONS, 60), + + // SP_MUMMY + APT(SP_MUMMY, SK_FIGHTING, 100), + APT(SP_MUMMY, SK_SHORT_BLADES, 140), + APT(SP_MUMMY, SK_LONG_BLADES, 140), + APT(SP_MUMMY, SK_AXES, 140), + APT(SP_MUMMY, SK_MACES_FLAILS, 140), + APT(SP_MUMMY, SK_POLEARMS, 140), + APT(SP_MUMMY, SK_STAVES, 140), + APT(SP_MUMMY, SK_SLINGS, 140), + APT(SP_MUMMY, SK_BOWS, 140), + APT(SP_MUMMY, SK_CROSSBOWS, 140), + APT(SP_MUMMY, SK_THROWING, 140), + APT(SP_MUMMY, SK_ARMOUR, 140), + APT(SP_MUMMY, SK_DODGING, 140), + APT(SP_MUMMY, SK_STEALTH, 140), + APT(SP_MUMMY, SK_STABBING, 140), + APT(SP_MUMMY, SK_SHIELDS, 140), + APT(SP_MUMMY, SK_TRAPS_DOORS, 140), + APT(SP_MUMMY, SK_UNARMED_COMBAT, 140), + APT(SP_MUMMY, SK_SPELLCASTING, 130), + APT(SP_MUMMY, SK_CONJURATIONS, 140), + APT(SP_MUMMY, SK_ENCHANTMENTS, 140), + APT(SP_MUMMY, SK_SUMMONINGS, 140), + APT(SP_MUMMY, SK_NECROMANCY, 100), + APT(SP_MUMMY, SK_TRANSLOCATIONS, 140), + APT(SP_MUMMY, SK_TRANSMUTATIONS, 140), + APT(SP_MUMMY, SK_FIRE_MAGIC, 140), + APT(SP_MUMMY, SK_ICE_MAGIC, 140), + APT(SP_MUMMY, SK_AIR_MAGIC, 140), + APT(SP_MUMMY, SK_EARTH_MAGIC, 140), + APT(SP_MUMMY, SK_POISON_MAGIC, 140), + APT(SP_MUMMY, SK_INVOCATIONS, 110), + APT(SP_MUMMY, SK_EVOCATIONS, 110), + + // SP_NAGA + APT(SP_NAGA, SK_FIGHTING, 100), + APT(SP_NAGA, SK_SHORT_BLADES, 100), + APT(SP_NAGA, SK_LONG_BLADES, 100), + APT(SP_NAGA, SK_AXES, 100), + APT(SP_NAGA, SK_MACES_FLAILS, 100), + APT(SP_NAGA, SK_POLEARMS, 100), + APT(SP_NAGA, SK_STAVES, 120), + APT(SP_NAGA, SK_SLINGS, 120), + APT(SP_NAGA, SK_BOWS, 120), + APT(SP_NAGA, SK_CROSSBOWS, 120), + APT(SP_NAGA, SK_THROWING, 120), + APT(SP_NAGA, SK_ARMOUR, 150), + APT(SP_NAGA, SK_DODGING, 150), + APT(SP_NAGA, SK_STEALTH, 40), + APT(SP_NAGA, SK_STABBING, 100), + APT(SP_NAGA, SK_SHIELDS, 140), + APT(SP_NAGA, SK_TRAPS_DOORS, 100), + APT(SP_NAGA, SK_UNARMED_COMBAT, 100), + APT(SP_NAGA, SK_SPELLCASTING, 130), + APT(SP_NAGA, SK_CONJURATIONS, 100), + APT(SP_NAGA, SK_ENCHANTMENTS, 100), + APT(SP_NAGA, SK_SUMMONINGS, 100), + APT(SP_NAGA, SK_NECROMANCY, 100), + APT(SP_NAGA, SK_TRANSLOCATIONS, 100), + APT(SP_NAGA, SK_TRANSMUTATIONS, 100), + APT(SP_NAGA, SK_FIRE_MAGIC, 100), + APT(SP_NAGA, SK_ICE_MAGIC, 100), + APT(SP_NAGA, SK_AIR_MAGIC, 100), + APT(SP_NAGA, SK_EARTH_MAGIC, 100), + APT(SP_NAGA, SK_POISON_MAGIC, 60), + APT(SP_NAGA, SK_INVOCATIONS, 80), + APT(SP_NAGA, SK_EVOCATIONS, 80), + + // SP_OGRE + APT(SP_OGRE, SK_FIGHTING, 70), + APT(SP_OGRE, SK_SHORT_BLADES, 200), + APT(SP_OGRE, SK_LONG_BLADES, 180), + APT(SP_OGRE, SK_AXES, 180), + APT(SP_OGRE, SK_MACES_FLAILS, 90), + APT(SP_OGRE, SK_POLEARMS, 110), + APT(SP_OGRE, SK_STAVES, 120), + APT(SP_OGRE, SK_SLINGS, 180), + APT(SP_OGRE, SK_BOWS, 180), + APT(SP_OGRE, SK_CROSSBOWS, 180), + APT(SP_OGRE, SK_THROWING, 80), + APT(SP_OGRE, SK_ARMOUR, 150), + APT(SP_OGRE, SK_DODGING, 120), + APT(SP_OGRE, SK_STEALTH, 150), + APT(SP_OGRE, SK_STABBING, 150), + APT(SP_OGRE, SK_SHIELDS, 120), + APT(SP_OGRE, SK_TRAPS_DOORS, 150), + APT(SP_OGRE, SK_UNARMED_COMBAT, 110), + APT(SP_OGRE, SK_SPELLCASTING, 90), + APT(SP_OGRE, SK_CONJURATIONS, 160), + APT(SP_OGRE, SK_ENCHANTMENTS, 160), + APT(SP_OGRE, SK_SUMMONINGS, 160), + APT(SP_OGRE, SK_NECROMANCY, 160), + APT(SP_OGRE, SK_TRANSLOCATIONS, 160), + APT(SP_OGRE, SK_TRANSMUTATIONS, 160), + APT(SP_OGRE, SK_FIRE_MAGIC, 160), + APT(SP_OGRE, SK_ICE_MAGIC, 160), + APT(SP_OGRE, SK_AIR_MAGIC, 160), + APT(SP_OGRE, SK_EARTH_MAGIC, 160), + APT(SP_OGRE, SK_POISON_MAGIC, 160), + APT(SP_OGRE, SK_INVOCATIONS, 80), + APT(SP_OGRE, SK_EVOCATIONS, 120), + + // SP_TROLL + APT(SP_TROLL, SK_FIGHTING, 140), + APT(SP_TROLL, SK_SHORT_BLADES, 150), + APT(SP_TROLL, SK_LONG_BLADES, 150), + APT(SP_TROLL, SK_AXES, 150), + APT(SP_TROLL, SK_MACES_FLAILS, 130), + APT(SP_TROLL, SK_POLEARMS, 150), + APT(SP_TROLL, SK_STAVES, 150), + APT(SP_TROLL, SK_SLINGS, 180), + APT(SP_TROLL, SK_BOWS, 180), + APT(SP_TROLL, SK_CROSSBOWS, 180), + APT(SP_TROLL, SK_THROWING, 130), + APT(SP_TROLL, SK_ARMOUR, 150), + APT(SP_TROLL, SK_DODGING, 130), + APT(SP_TROLL, SK_STEALTH, 250), + APT(SP_TROLL, SK_STABBING, 150), + APT(SP_TROLL, SK_SHIELDS, 150), + APT(SP_TROLL, SK_TRAPS_DOORS, 200), + APT(SP_TROLL, SK_UNARMED_COMBAT, 100), + APT(SP_TROLL, SK_SPELLCASTING, 260), + APT(SP_TROLL, SK_CONJURATIONS, 160), + APT(SP_TROLL, SK_ENCHANTMENTS, 200), + APT(SP_TROLL, SK_SUMMONINGS, 160), + APT(SP_TROLL, SK_NECROMANCY, 150), + APT(SP_TROLL, SK_TRANSLOCATIONS, 160), + APT(SP_TROLL, SK_TRANSMUTATIONS, 160), + APT(SP_TROLL, SK_FIRE_MAGIC, 160), + APT(SP_TROLL, SK_ICE_MAGIC, 160), + APT(SP_TROLL, SK_AIR_MAGIC, 200), + APT(SP_TROLL, SK_EARTH_MAGIC, 120), + APT(SP_TROLL, SK_POISON_MAGIC, 160), + APT(SP_TROLL, SK_INVOCATIONS, 110), + APT(SP_TROLL, SK_EVOCATIONS, 140), + + // SP_RED_DRACONIAN + APT(SP_RED_DRACONIAN, SK_FIGHTING, 90), + APT(SP_RED_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_RED_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_RED_DRACONIAN, SK_AXES, 100), + APT(SP_RED_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_RED_DRACONIAN, SK_POLEARMS, 100), + APT(SP_RED_DRACONIAN, SK_STAVES, 100), + APT(SP_RED_DRACONIAN, SK_SLINGS, 120), + APT(SP_RED_DRACONIAN, SK_BOWS, 120), + APT(SP_RED_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_RED_DRACONIAN, SK_THROWING, 120), + APT(SP_RED_DRACONIAN, SK_ARMOUR, 200), + APT(SP_RED_DRACONIAN, SK_DODGING, 120), + APT(SP_RED_DRACONIAN, SK_STEALTH, 120), + APT(SP_RED_DRACONIAN, SK_STABBING, 100), + APT(SP_RED_DRACONIAN, SK_SHIELDS, 100), + APT(SP_RED_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_RED_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_RED_DRACONIAN, SK_SPELLCASTING, 130), + APT(SP_RED_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_RED_DRACONIAN, SK_ENCHANTMENTS, 120), + APT(SP_RED_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_RED_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_RED_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_RED_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_RED_DRACONIAN, SK_FIRE_MAGIC, 70), + APT(SP_RED_DRACONIAN, SK_ICE_MAGIC, 140), + APT(SP_RED_DRACONIAN, SK_AIR_MAGIC, 100), + APT(SP_RED_DRACONIAN, SK_EARTH_MAGIC, 100), + APT(SP_RED_DRACONIAN, SK_POISON_MAGIC, 100), + APT(SP_RED_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_RED_DRACONIAN, SK_EVOCATIONS, 80), + + // SP_WHITE_DRACONIAN + APT(SP_WHITE_DRACONIAN, SK_FIGHTING, 90), + APT(SP_WHITE_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_WHITE_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_WHITE_DRACONIAN, SK_AXES, 100), + APT(SP_WHITE_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_WHITE_DRACONIAN, SK_POLEARMS, 100), + APT(SP_WHITE_DRACONIAN, SK_STAVES, 100), + APT(SP_WHITE_DRACONIAN, SK_SLINGS, 120), + APT(SP_WHITE_DRACONIAN, SK_BOWS, 120), + APT(SP_WHITE_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_WHITE_DRACONIAN, SK_THROWING, 120), + APT(SP_WHITE_DRACONIAN, SK_ARMOUR, 200), + APT(SP_WHITE_DRACONIAN, SK_DODGING, 120), + APT(SP_WHITE_DRACONIAN, SK_STEALTH, 120), + APT(SP_WHITE_DRACONIAN, SK_STABBING, 100), + APT(SP_WHITE_DRACONIAN, SK_SHIELDS, 100), + APT(SP_WHITE_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_WHITE_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_WHITE_DRACONIAN, SK_SPELLCASTING, 130), + APT(SP_WHITE_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_WHITE_DRACONIAN, SK_ENCHANTMENTS, 120), + APT(SP_WHITE_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_WHITE_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_WHITE_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_WHITE_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_WHITE_DRACONIAN, SK_FIRE_MAGIC, 140), + APT(SP_WHITE_DRACONIAN, SK_ICE_MAGIC, 70), + APT(SP_WHITE_DRACONIAN, SK_AIR_MAGIC, 100), + APT(SP_WHITE_DRACONIAN, SK_EARTH_MAGIC, 100), + APT(SP_WHITE_DRACONIAN, SK_POISON_MAGIC, 100), + APT(SP_WHITE_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_WHITE_DRACONIAN, SK_EVOCATIONS, 80), + + // SP_GREEN_DRACONIAN + APT(SP_GREEN_DRACONIAN, SK_FIGHTING, 90), + APT(SP_GREEN_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_GREEN_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_GREEN_DRACONIAN, SK_AXES, 100), + APT(SP_GREEN_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_GREEN_DRACONIAN, SK_POLEARMS, 100), + APT(SP_GREEN_DRACONIAN, SK_STAVES, 100), + APT(SP_GREEN_DRACONIAN, SK_SLINGS, 120), + APT(SP_GREEN_DRACONIAN, SK_BOWS, 120), + APT(SP_GREEN_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_GREEN_DRACONIAN, SK_THROWING, 120), + APT(SP_GREEN_DRACONIAN, SK_ARMOUR, 200), + APT(SP_GREEN_DRACONIAN, SK_DODGING, 120), + APT(SP_GREEN_DRACONIAN, SK_STEALTH, 120), + APT(SP_GREEN_DRACONIAN, SK_STABBING, 100), + APT(SP_GREEN_DRACONIAN, SK_SHIELDS, 100), + APT(SP_GREEN_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_GREEN_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_GREEN_DRACONIAN, SK_SPELLCASTING, 130), + APT(SP_GREEN_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_GREEN_DRACONIAN, SK_ENCHANTMENTS, 120), + APT(SP_GREEN_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_GREEN_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_GREEN_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_GREEN_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_GREEN_DRACONIAN, SK_FIRE_MAGIC, 100), + APT(SP_GREEN_DRACONIAN, SK_ICE_MAGIC, 100), + APT(SP_GREEN_DRACONIAN, SK_AIR_MAGIC, 100), + APT(SP_GREEN_DRACONIAN, SK_EARTH_MAGIC, 100), + APT(SP_GREEN_DRACONIAN, SK_POISON_MAGIC, 70), + APT(SP_GREEN_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_GREEN_DRACONIAN, SK_EVOCATIONS, 80), + + // SP_YELLOW_DRACONIAN + APT(SP_YELLOW_DRACONIAN, SK_FIGHTING, 90), + APT(SP_YELLOW_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_YELLOW_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_YELLOW_DRACONIAN, SK_AXES, 100), + APT(SP_YELLOW_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_YELLOW_DRACONIAN, SK_POLEARMS, 100), + APT(SP_YELLOW_DRACONIAN, SK_STAVES, 100), + APT(SP_YELLOW_DRACONIAN, SK_SLINGS, 120), + APT(SP_YELLOW_DRACONIAN, SK_BOWS, 120), + APT(SP_YELLOW_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_YELLOW_DRACONIAN, SK_THROWING, 120), + APT(SP_YELLOW_DRACONIAN, SK_ARMOUR, 200), + APT(SP_YELLOW_DRACONIAN, SK_DODGING, 120), + APT(SP_YELLOW_DRACONIAN, SK_STEALTH, 120), + APT(SP_YELLOW_DRACONIAN, SK_STABBING, 100), + APT(SP_YELLOW_DRACONIAN, SK_SHIELDS, 100), + APT(SP_YELLOW_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_YELLOW_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_YELLOW_DRACONIAN, SK_SPELLCASTING, 130), + APT(SP_YELLOW_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_YELLOW_DRACONIAN, SK_ENCHANTMENTS, 120), + APT(SP_YELLOW_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_YELLOW_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_YELLOW_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_YELLOW_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_YELLOW_DRACONIAN, SK_FIRE_MAGIC, 100), + APT(SP_YELLOW_DRACONIAN, SK_ICE_MAGIC, 100), + APT(SP_YELLOW_DRACONIAN, SK_AIR_MAGIC, 100), + APT(SP_YELLOW_DRACONIAN, SK_EARTH_MAGIC, 100), + APT(SP_YELLOW_DRACONIAN, SK_POISON_MAGIC, 100), + APT(SP_YELLOW_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_YELLOW_DRACONIAN, SK_EVOCATIONS, 80), + + // SP_GREY_DRACONIAN + APT(SP_GREY_DRACONIAN, SK_FIGHTING, 90), + APT(SP_GREY_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_GREY_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_GREY_DRACONIAN, SK_AXES, 100), + APT(SP_GREY_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_GREY_DRACONIAN, SK_POLEARMS, 100), + APT(SP_GREY_DRACONIAN, SK_STAVES, 100), + APT(SP_GREY_DRACONIAN, SK_SLINGS, 120), + APT(SP_GREY_DRACONIAN, SK_BOWS, 120), + APT(SP_GREY_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_GREY_DRACONIAN, SK_THROWING, 120), + APT(SP_GREY_DRACONIAN, SK_ARMOUR, 200), + APT(SP_GREY_DRACONIAN, SK_DODGING, 120), + APT(SP_GREY_DRACONIAN, SK_STEALTH, 120), + APT(SP_GREY_DRACONIAN, SK_STABBING, 100), + APT(SP_GREY_DRACONIAN, SK_SHIELDS, 100), + APT(SP_GREY_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_GREY_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_GREY_DRACONIAN, SK_SPELLCASTING, 130), + APT(SP_GREY_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_GREY_DRACONIAN, SK_ENCHANTMENTS, 120), + APT(SP_GREY_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_GREY_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_GREY_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_GREY_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_GREY_DRACONIAN, SK_FIRE_MAGIC, 100), + APT(SP_GREY_DRACONIAN, SK_ICE_MAGIC, 100), + APT(SP_GREY_DRACONIAN, SK_AIR_MAGIC, 100), + APT(SP_GREY_DRACONIAN, SK_EARTH_MAGIC, 100), + APT(SP_GREY_DRACONIAN, SK_POISON_MAGIC, 100), + APT(SP_GREY_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_GREY_DRACONIAN, SK_EVOCATIONS, 80), + + // SP_BLACK_DRACONIAN + APT(SP_BLACK_DRACONIAN, SK_FIGHTING, 90), + APT(SP_BLACK_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_BLACK_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_BLACK_DRACONIAN, SK_AXES, 100), + APT(SP_BLACK_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_BLACK_DRACONIAN, SK_POLEARMS, 100), + APT(SP_BLACK_DRACONIAN, SK_STAVES, 100), + APT(SP_BLACK_DRACONIAN, SK_SLINGS, 120), + APT(SP_BLACK_DRACONIAN, SK_BOWS, 120), + APT(SP_BLACK_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_BLACK_DRACONIAN, SK_THROWING, 120), + APT(SP_BLACK_DRACONIAN, SK_ARMOUR, 200), + APT(SP_BLACK_DRACONIAN, SK_DODGING, 120), + APT(SP_BLACK_DRACONIAN, SK_STEALTH, 120), + APT(SP_BLACK_DRACONIAN, SK_STABBING, 100), + APT(SP_BLACK_DRACONIAN, SK_SHIELDS, 100), + APT(SP_BLACK_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_BLACK_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_BLACK_DRACONIAN, SK_SPELLCASTING, 130), + APT(SP_BLACK_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_BLACK_DRACONIAN, SK_ENCHANTMENTS, 120), + APT(SP_BLACK_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_BLACK_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_BLACK_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_BLACK_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_BLACK_DRACONIAN, SK_FIRE_MAGIC, 100), + APT(SP_BLACK_DRACONIAN, SK_ICE_MAGIC, 100), + APT(SP_BLACK_DRACONIAN, SK_AIR_MAGIC, 70), + APT(SP_BLACK_DRACONIAN, SK_EARTH_MAGIC, 140), + APT(SP_BLACK_DRACONIAN, SK_POISON_MAGIC, 100), + APT(SP_BLACK_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_BLACK_DRACONIAN, SK_EVOCATIONS, 80), + + // SP_PURPLE_DRACONIAN + APT(SP_PURPLE_DRACONIAN, SK_FIGHTING, 90), + APT(SP_PURPLE_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_PURPLE_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_PURPLE_DRACONIAN, SK_AXES, 100), + APT(SP_PURPLE_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_PURPLE_DRACONIAN, SK_POLEARMS, 100), + APT(SP_PURPLE_DRACONIAN, SK_STAVES, 100), + APT(SP_PURPLE_DRACONIAN, SK_SLINGS, 120), + APT(SP_PURPLE_DRACONIAN, SK_BOWS, 120), + APT(SP_PURPLE_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_PURPLE_DRACONIAN, SK_THROWING, 120), + APT(SP_PURPLE_DRACONIAN, SK_ARMOUR, 200), + APT(SP_PURPLE_DRACONIAN, SK_DODGING, 120), + APT(SP_PURPLE_DRACONIAN, SK_STEALTH, 120), + APT(SP_PURPLE_DRACONIAN, SK_STABBING, 100), + APT(SP_PURPLE_DRACONIAN, SK_SHIELDS, 100), + APT(SP_PURPLE_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_PURPLE_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_PURPLE_DRACONIAN, SK_SPELLCASTING, 90), + APT(SP_PURPLE_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_PURPLE_DRACONIAN, SK_ENCHANTMENTS, 90), + APT(SP_PURPLE_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_PURPLE_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_PURPLE_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_PURPLE_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_PURPLE_DRACONIAN, SK_FIRE_MAGIC, 100), + APT(SP_PURPLE_DRACONIAN, SK_ICE_MAGIC, 100), + APT(SP_PURPLE_DRACONIAN, SK_AIR_MAGIC, 100), + APT(SP_PURPLE_DRACONIAN, SK_EARTH_MAGIC, 100), + APT(SP_PURPLE_DRACONIAN, SK_POISON_MAGIC, 100), + APT(SP_PURPLE_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_PURPLE_DRACONIAN, SK_EVOCATIONS, 70), + + // SP_MOTTLED_DRACONIAN + APT(SP_MOTTLED_DRACONIAN, SK_FIGHTING, 90), + APT(SP_MOTTLED_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_MOTTLED_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_MOTTLED_DRACONIAN, SK_AXES, 100), + APT(SP_MOTTLED_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_MOTTLED_DRACONIAN, SK_POLEARMS, 100), + APT(SP_MOTTLED_DRACONIAN, SK_STAVES, 100), + APT(SP_MOTTLED_DRACONIAN, SK_SLINGS, 120), + APT(SP_MOTTLED_DRACONIAN, SK_BOWS, 120), + APT(SP_MOTTLED_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_MOTTLED_DRACONIAN, SK_THROWING, 120), + APT(SP_MOTTLED_DRACONIAN, SK_ARMOUR, 200), + APT(SP_MOTTLED_DRACONIAN, SK_DODGING, 120), + APT(SP_MOTTLED_DRACONIAN, SK_STEALTH, 120), + APT(SP_MOTTLED_DRACONIAN, SK_STABBING, 100), + APT(SP_MOTTLED_DRACONIAN, SK_SHIELDS, 100), + APT(SP_MOTTLED_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_MOTTLED_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_MOTTLED_DRACONIAN, SK_SPELLCASTING, 130), + APT(SP_MOTTLED_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_MOTTLED_DRACONIAN, SK_ENCHANTMENTS, 120), + APT(SP_MOTTLED_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_MOTTLED_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_MOTTLED_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_MOTTLED_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_MOTTLED_DRACONIAN, SK_FIRE_MAGIC, 80), + APT(SP_MOTTLED_DRACONIAN, SK_ICE_MAGIC, 100), + APT(SP_MOTTLED_DRACONIAN, SK_AIR_MAGIC, 100), + APT(SP_MOTTLED_DRACONIAN, SK_EARTH_MAGIC, 100), + APT(SP_MOTTLED_DRACONIAN, SK_POISON_MAGIC, 100), + APT(SP_MOTTLED_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_MOTTLED_DRACONIAN, SK_EVOCATIONS, 80), + + // SP_PALE_DRACONIAN + APT(SP_PALE_DRACONIAN, SK_FIGHTING, 90), + APT(SP_PALE_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_PALE_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_PALE_DRACONIAN, SK_AXES, 100), + APT(SP_PALE_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_PALE_DRACONIAN, SK_POLEARMS, 100), + APT(SP_PALE_DRACONIAN, SK_STAVES, 100), + APT(SP_PALE_DRACONIAN, SK_SLINGS, 120), + APT(SP_PALE_DRACONIAN, SK_BOWS, 120), + APT(SP_PALE_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_PALE_DRACONIAN, SK_THROWING, 120), + APT(SP_PALE_DRACONIAN, SK_ARMOUR, 200), + APT(SP_PALE_DRACONIAN, SK_DODGING, 120), + APT(SP_PALE_DRACONIAN, SK_STEALTH, 120), + APT(SP_PALE_DRACONIAN, SK_STABBING, 100), + APT(SP_PALE_DRACONIAN, SK_SHIELDS, 100), + APT(SP_PALE_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_PALE_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_PALE_DRACONIAN, SK_SPELLCASTING, 130), + APT(SP_PALE_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_PALE_DRACONIAN, SK_ENCHANTMENTS, 120), + APT(SP_PALE_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_PALE_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_PALE_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_PALE_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_PALE_DRACONIAN, SK_FIRE_MAGIC, 90), + APT(SP_PALE_DRACONIAN, SK_ICE_MAGIC, 100), + APT(SP_PALE_DRACONIAN, SK_AIR_MAGIC, 90), + APT(SP_PALE_DRACONIAN, SK_EARTH_MAGIC, 100), + APT(SP_PALE_DRACONIAN, SK_POISON_MAGIC, 100), + APT(SP_PALE_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_PALE_DRACONIAN, SK_EVOCATIONS, 70), + + // SP_BASE_DRACONIAN + APT(SP_BASE_DRACONIAN, SK_FIGHTING, 90), + APT(SP_BASE_DRACONIAN, SK_SHORT_BLADES, 100), + APT(SP_BASE_DRACONIAN, SK_LONG_BLADES, 100), + APT(SP_BASE_DRACONIAN, SK_AXES, 100), + APT(SP_BASE_DRACONIAN, SK_MACES_FLAILS, 100), + APT(SP_BASE_DRACONIAN, SK_POLEARMS, 100), + APT(SP_BASE_DRACONIAN, SK_STAVES, 100), + APT(SP_BASE_DRACONIAN, SK_SLINGS, 120), + APT(SP_BASE_DRACONIAN, SK_BOWS, 120), + APT(SP_BASE_DRACONIAN, SK_CROSSBOWS, 120), + APT(SP_BASE_DRACONIAN, SK_THROWING, 120), + APT(SP_BASE_DRACONIAN, SK_ARMOUR, 200), + APT(SP_BASE_DRACONIAN, SK_DODGING, 120), + APT(SP_BASE_DRACONIAN, SK_STEALTH, 120), + APT(SP_BASE_DRACONIAN, SK_STABBING, 100), + APT(SP_BASE_DRACONIAN, SK_SHIELDS, 100), + APT(SP_BASE_DRACONIAN, SK_TRAPS_DOORS, 100), + APT(SP_BASE_DRACONIAN, SK_UNARMED_COMBAT, 100), + APT(SP_BASE_DRACONIAN, SK_SPELLCASTING, 130), + APT(SP_BASE_DRACONIAN, SK_CONJURATIONS, 100), + APT(SP_BASE_DRACONIAN, SK_ENCHANTMENTS, 120), + APT(SP_BASE_DRACONIAN, SK_SUMMONINGS, 100), + APT(SP_BASE_DRACONIAN, SK_NECROMANCY, 100), + APT(SP_BASE_DRACONIAN, SK_TRANSLOCATIONS, 100), + APT(SP_BASE_DRACONIAN, SK_TRANSMUTATIONS, 100), + APT(SP_BASE_DRACONIAN, SK_FIRE_MAGIC, 100), + APT(SP_BASE_DRACONIAN, SK_ICE_MAGIC, 100), + APT(SP_BASE_DRACONIAN, SK_AIR_MAGIC, 100), + APT(SP_BASE_DRACONIAN, SK_EARTH_MAGIC, 100), + APT(SP_BASE_DRACONIAN, SK_POISON_MAGIC, 100), + APT(SP_BASE_DRACONIAN, SK_INVOCATIONS, 80), + APT(SP_BASE_DRACONIAN, SK_EVOCATIONS, 80), + + // SP_CENTAUR + APT(SP_CENTAUR, SK_FIGHTING, 100), + APT(SP_CENTAUR, SK_SHORT_BLADES, 120), + APT(SP_CENTAUR, SK_LONG_BLADES, 110), + APT(SP_CENTAUR, SK_AXES, 110), + APT(SP_CENTAUR, SK_MACES_FLAILS, 110), + APT(SP_CENTAUR, SK_POLEARMS, 110), + APT(SP_CENTAUR, SK_STAVES, 110), + APT(SP_CENTAUR, SK_SLINGS, 80), + APT(SP_CENTAUR, SK_BOWS, 60), + APT(SP_CENTAUR, SK_CROSSBOWS, 90), + APT(SP_CENTAUR, SK_THROWING, 60), + APT(SP_CENTAUR, SK_ARMOUR, 180), + APT(SP_CENTAUR, SK_DODGING, 170), + APT(SP_CENTAUR, SK_STEALTH, 200), + APT(SP_CENTAUR, SK_STABBING, 170), + APT(SP_CENTAUR, SK_SHIELDS, 180), + APT(SP_CENTAUR, SK_TRAPS_DOORS, 150), + APT(SP_CENTAUR, SK_UNARMED_COMBAT, 100), + APT(SP_CENTAUR, SK_SPELLCASTING, 180), + APT(SP_CENTAUR, SK_CONJURATIONS, 120), + APT(SP_CENTAUR, SK_ENCHANTMENTS, 110), + APT(SP_CENTAUR, SK_SUMMONINGS, 120), + APT(SP_CENTAUR, SK_NECROMANCY, 120), + APT(SP_CENTAUR, SK_TRANSLOCATIONS, 120), + APT(SP_CENTAUR, SK_TRANSMUTATIONS, 120), + APT(SP_CENTAUR, SK_FIRE_MAGIC, 120), + APT(SP_CENTAUR, SK_ICE_MAGIC, 120), + APT(SP_CENTAUR, SK_AIR_MAGIC, 120), + APT(SP_CENTAUR, SK_EARTH_MAGIC, 120), + APT(SP_CENTAUR, SK_POISON_MAGIC, 130), + APT(SP_CENTAUR, SK_INVOCATIONS, 80), + APT(SP_CENTAUR, SK_EVOCATIONS, 100), + + // SP_DEMIGOD + APT(SP_DEMIGOD, SK_FIGHTING, 110), + APT(SP_DEMIGOD, SK_SHORT_BLADES, 110), + APT(SP_DEMIGOD, SK_LONG_BLADES, 110), + APT(SP_DEMIGOD, SK_AXES, 110), + APT(SP_DEMIGOD, SK_MACES_FLAILS, 110), + APT(SP_DEMIGOD, SK_POLEARMS, 110), + APT(SP_DEMIGOD, SK_STAVES, 110), + APT(SP_DEMIGOD, SK_SLINGS, 110), + APT(SP_DEMIGOD, SK_BOWS, 110), + APT(SP_DEMIGOD, SK_CROSSBOWS, 110), + APT(SP_DEMIGOD, SK_THROWING, 110), + APT(SP_DEMIGOD, SK_ARMOUR, 110), + APT(SP_DEMIGOD, SK_DODGING, 110), + APT(SP_DEMIGOD, SK_STEALTH, 110), + APT(SP_DEMIGOD, SK_STABBING, 110), + APT(SP_DEMIGOD, SK_SHIELDS, 110), + APT(SP_DEMIGOD, SK_TRAPS_DOORS, 110), + APT(SP_DEMIGOD, SK_UNARMED_COMBAT, 110), + APT(SP_DEMIGOD, SK_SPELLCASTING, 140), + APT(SP_DEMIGOD, SK_CONJURATIONS, 110), + APT(SP_DEMIGOD, SK_ENCHANTMENTS, 110), + APT(SP_DEMIGOD, SK_SUMMONINGS, 110), + APT(SP_DEMIGOD, SK_NECROMANCY, 110), + APT(SP_DEMIGOD, SK_TRANSLOCATIONS, 110), + APT(SP_DEMIGOD, SK_TRANSMUTATIONS, 110), + APT(SP_DEMIGOD, SK_FIRE_MAGIC, 110), + APT(SP_DEMIGOD, SK_ICE_MAGIC, 110), + APT(SP_DEMIGOD, SK_AIR_MAGIC, 110), + APT(SP_DEMIGOD, SK_EARTH_MAGIC, 110), + APT(SP_DEMIGOD, SK_POISON_MAGIC, 110), + APT(SP_DEMIGOD, SK_INVOCATIONS, 80), + APT(SP_DEMIGOD, SK_EVOCATIONS, 80), + + // SP_SPRIGGAN + APT(SP_SPRIGGAN, SK_FIGHTING, 150), + APT(SP_SPRIGGAN, SK_SHORT_BLADES, 90), + APT(SP_SPRIGGAN, SK_LONG_BLADES, 140), + APT(SP_SPRIGGAN, SK_AXES, 150), + APT(SP_SPRIGGAN, SK_MACES_FLAILS, 160), + APT(SP_SPRIGGAN, SK_POLEARMS, 180), + APT(SP_SPRIGGAN, SK_STAVES, 150), + APT(SP_SPRIGGAN, SK_SLINGS, 70), + APT(SP_SPRIGGAN, SK_BOWS, 70), + APT(SP_SPRIGGAN, SK_CROSSBOWS, 100), + APT(SP_SPRIGGAN, SK_THROWING, 90), + APT(SP_SPRIGGAN, SK_ARMOUR, 170), + APT(SP_SPRIGGAN, SK_DODGING, 50), + APT(SP_SPRIGGAN, SK_STEALTH, 50), + APT(SP_SPRIGGAN, SK_STABBING, 50), + APT(SP_SPRIGGAN, SK_SHIELDS, 180), + APT(SP_SPRIGGAN, SK_TRAPS_DOORS, 60), + APT(SP_SPRIGGAN, SK_UNARMED_COMBAT, 130), + APT(SP_SPRIGGAN, SK_SPELLCASTING, 80), + APT(SP_SPRIGGAN, SK_CONJURATIONS, 160), + APT(SP_SPRIGGAN, SK_ENCHANTMENTS, 50), + APT(SP_SPRIGGAN, SK_SUMMONINGS, 150), + APT(SP_SPRIGGAN, SK_NECROMANCY, 120), + APT(SP_SPRIGGAN, SK_TRANSLOCATIONS, 50), + APT(SP_SPRIGGAN, SK_TRANSMUTATIONS, 60), + APT(SP_SPRIGGAN, SK_FIRE_MAGIC, 140), + APT(SP_SPRIGGAN, SK_ICE_MAGIC, 140), + APT(SP_SPRIGGAN, SK_AIR_MAGIC, 120), + APT(SP_SPRIGGAN, SK_EARTH_MAGIC, 120), + APT(SP_SPRIGGAN, SK_POISON_MAGIC, 100), + APT(SP_SPRIGGAN, SK_INVOCATIONS, 100), + APT(SP_SPRIGGAN, SK_EVOCATIONS, 50), + + // SP_MINOTAUR + APT(SP_MINOTAUR, SK_FIGHTING, 70), + APT(SP_MINOTAUR, SK_SHORT_BLADES, 70), + APT(SP_MINOTAUR, SK_LONG_BLADES, 70), + APT(SP_MINOTAUR, SK_AXES, 70), + APT(SP_MINOTAUR, SK_MACES_FLAILS, 70), + APT(SP_MINOTAUR, SK_POLEARMS, 70), + APT(SP_MINOTAUR, SK_STAVES, 70), + APT(SP_MINOTAUR, SK_SLINGS, 90), + APT(SP_MINOTAUR, SK_BOWS, 90), + APT(SP_MINOTAUR, SK_CROSSBOWS, 90), + APT(SP_MINOTAUR, SK_THROWING, 90), + APT(SP_MINOTAUR, SK_ARMOUR, 80), + APT(SP_MINOTAUR, SK_DODGING, 80), + APT(SP_MINOTAUR, SK_STEALTH, 130), + APT(SP_MINOTAUR, SK_STABBING, 100), + APT(SP_MINOTAUR, SK_SHIELDS, 80), + APT(SP_MINOTAUR, SK_TRAPS_DOORS, 120), + APT(SP_MINOTAUR, SK_UNARMED_COMBAT, 80), + APT(SP_MINOTAUR, SK_SPELLCASTING, 230), + APT(SP_MINOTAUR, SK_CONJURATIONS, 170), + APT(SP_MINOTAUR, SK_ENCHANTMENTS, 170), + APT(SP_MINOTAUR, SK_SUMMONINGS, 170), + APT(SP_MINOTAUR, SK_NECROMANCY, 170), + APT(SP_MINOTAUR, SK_TRANSLOCATIONS, 170), + APT(SP_MINOTAUR, SK_TRANSMUTATIONS, 170), + APT(SP_MINOTAUR, SK_FIRE_MAGIC, 170), + APT(SP_MINOTAUR, SK_ICE_MAGIC, 170), + APT(SP_MINOTAUR, SK_AIR_MAGIC, 170), + APT(SP_MINOTAUR, SK_EARTH_MAGIC, 170), + APT(SP_MINOTAUR, SK_POISON_MAGIC, 170), + APT(SP_MINOTAUR, SK_INVOCATIONS, 100), + APT(SP_MINOTAUR, SK_EVOCATIONS, 130), + + // SP_DEMONSPAWN + APT(SP_DEMONSPAWN, SK_FIGHTING, 100), + APT(SP_DEMONSPAWN, SK_SHORT_BLADES, 110), + APT(SP_DEMONSPAWN, SK_LONG_BLADES, 110), + APT(SP_DEMONSPAWN, SK_AXES, 110), + APT(SP_DEMONSPAWN, SK_MACES_FLAILS, 110), + APT(SP_DEMONSPAWN, SK_POLEARMS, 110), + APT(SP_DEMONSPAWN, SK_STAVES, 110), + APT(SP_DEMONSPAWN, SK_SLINGS, 110), + APT(SP_DEMONSPAWN, SK_BOWS, 110), + APT(SP_DEMONSPAWN, SK_CROSSBOWS, 110), + APT(SP_DEMONSPAWN, SK_THROWING, 110), + APT(SP_DEMONSPAWN, SK_ARMOUR, 110), + APT(SP_DEMONSPAWN, SK_DODGING, 110), + APT(SP_DEMONSPAWN, SK_STEALTH, 110), + APT(SP_DEMONSPAWN, SK_STABBING, 110), + APT(SP_DEMONSPAWN, SK_SHIELDS, 110), + APT(SP_DEMONSPAWN, SK_TRAPS_DOORS, 110), + APT(SP_DEMONSPAWN, SK_UNARMED_COMBAT, 110), + APT(SP_DEMONSPAWN, SK_SPELLCASTING, 130), + APT(SP_DEMONSPAWN, SK_CONJURATIONS, 100), + APT(SP_DEMONSPAWN, SK_ENCHANTMENTS, 110), + APT(SP_DEMONSPAWN, SK_SUMMONINGS, 100), + APT(SP_DEMONSPAWN, SK_NECROMANCY, 90), + APT(SP_DEMONSPAWN, SK_TRANSLOCATIONS, 110), + APT(SP_DEMONSPAWN, SK_TRANSMUTATIONS, 110), + APT(SP_DEMONSPAWN, SK_FIRE_MAGIC, 100), + APT(SP_DEMONSPAWN, SK_ICE_MAGIC, 110), + APT(SP_DEMONSPAWN, SK_AIR_MAGIC, 110), + APT(SP_DEMONSPAWN, SK_EARTH_MAGIC, 110), + APT(SP_DEMONSPAWN, SK_POISON_MAGIC, 100), + APT(SP_DEMONSPAWN, SK_INVOCATIONS, 60), + APT(SP_DEMONSPAWN, SK_EVOCATIONS, 80), + + // SP_GHOUL + APT(SP_GHOUL, SK_FIGHTING, 80), + APT(SP_GHOUL, SK_SHORT_BLADES, 110), + APT(SP_GHOUL, SK_LONG_BLADES, 110), + APT(SP_GHOUL, SK_AXES, 110), + APT(SP_GHOUL, SK_MACES_FLAILS, 110), + APT(SP_GHOUL, SK_POLEARMS, 110), + APT(SP_GHOUL, SK_STAVES, 110), + APT(SP_GHOUL, SK_SLINGS, 130), + APT(SP_GHOUL, SK_BOWS, 130), + APT(SP_GHOUL, SK_CROSSBOWS, 130), + APT(SP_GHOUL, SK_THROWING, 130), + APT(SP_GHOUL, SK_ARMOUR, 110), + APT(SP_GHOUL, SK_DODGING, 110), + APT(SP_GHOUL, SK_STEALTH, 80), + APT(SP_GHOUL, SK_STABBING, 100), + APT(SP_GHOUL, SK_SHIELDS, 110), + APT(SP_GHOUL, SK_TRAPS_DOORS, 120), + APT(SP_GHOUL, SK_UNARMED_COMBAT, 80), + APT(SP_GHOUL, SK_SPELLCASTING, 160), + APT(SP_GHOUL, SK_CONJURATIONS, 130), + APT(SP_GHOUL, SK_ENCHANTMENTS, 130), + APT(SP_GHOUL, SK_SUMMONINGS, 120), + APT(SP_GHOUL, SK_NECROMANCY, 100), + APT(SP_GHOUL, SK_TRANSLOCATIONS, 120), + APT(SP_GHOUL, SK_TRANSMUTATIONS, 120), + APT(SP_GHOUL, SK_FIRE_MAGIC, 150), + APT(SP_GHOUL, SK_ICE_MAGIC, 90), + APT(SP_GHOUL, SK_AIR_MAGIC, 150), + APT(SP_GHOUL, SK_EARTH_MAGIC, 90), + APT(SP_GHOUL, SK_POISON_MAGIC, 100), + APT(SP_GHOUL, SK_INVOCATIONS, 80), + APT(SP_GHOUL, SK_EVOCATIONS, 100), + + // SP_KENKU + APT(SP_KENKU, SK_FIGHTING, 100), + APT(SP_KENKU, SK_SHORT_BLADES, 80), + APT(SP_KENKU, SK_LONG_BLADES, 80), + APT(SP_KENKU, SK_AXES, 80), + APT(SP_KENKU, SK_MACES_FLAILS, 80), + APT(SP_KENKU, SK_POLEARMS, 80), + APT(SP_KENKU, SK_STAVES, 80), + APT(SP_KENKU, SK_SLINGS, 100), + APT(SP_KENKU, SK_BOWS, 80), + APT(SP_KENKU, SK_CROSSBOWS, 80), + APT(SP_KENKU, SK_THROWING, 90), + APT(SP_KENKU, SK_ARMOUR, 90), + APT(SP_KENKU, SK_DODGING, 90), + APT(SP_KENKU, SK_STEALTH, 100), + APT(SP_KENKU, SK_STABBING, 80), + APT(SP_KENKU, SK_SHIELDS, 100), + APT(SP_KENKU, SK_TRAPS_DOORS, 100), + APT(SP_KENKU, SK_UNARMED_COMBAT, 80), + APT(SP_KENKU, SK_SPELLCASTING, 130), + APT(SP_KENKU, SK_CONJURATIONS, 60), + APT(SP_KENKU, SK_ENCHANTMENTS, 160), + APT(SP_KENKU, SK_SUMMONINGS, 70), + APT(SP_KENKU, SK_NECROMANCY, 80), + APT(SP_KENKU, SK_TRANSLOCATIONS, 150), + APT(SP_KENKU, SK_TRANSMUTATIONS, 150), + APT(SP_KENKU, SK_FIRE_MAGIC, 90), + APT(SP_KENKU, SK_ICE_MAGIC, 120), + APT(SP_KENKU, SK_AIR_MAGIC, 90), + APT(SP_KENKU, SK_EARTH_MAGIC, 120), + APT(SP_KENKU, SK_POISON_MAGIC, 100), + APT(SP_KENKU, SK_INVOCATIONS, 120), + APT(SP_KENKU, SK_EVOCATIONS, 80), + + // SP_MERFOLK + APT(SP_MERFOLK, SK_FIGHTING, 80), + APT(SP_MERFOLK, SK_SHORT_BLADES, 70), + APT(SP_MERFOLK, SK_LONG_BLADES, 90), + APT(SP_MERFOLK, SK_AXES, 140), + APT(SP_MERFOLK, SK_MACES_FLAILS, 150), + APT(SP_MERFOLK, SK_POLEARMS, 50), + APT(SP_MERFOLK, SK_STAVES, 130), + APT(SP_MERFOLK, SK_SLINGS, 150), + APT(SP_MERFOLK, SK_BOWS, 140), + APT(SP_MERFOLK, SK_CROSSBOWS, 140), + APT(SP_MERFOLK, SK_THROWING, 100), + APT(SP_MERFOLK, SK_ARMOUR, 160), + APT(SP_MERFOLK, SK_DODGING, 60), + APT(SP_MERFOLK, SK_STEALTH, 90), + APT(SP_MERFOLK, SK_STABBING, 70), + APT(SP_MERFOLK, SK_SHIELDS, 100), + APT(SP_MERFOLK, SK_TRAPS_DOORS, 120), + APT(SP_MERFOLK, SK_UNARMED_COMBAT, 90), + APT(SP_MERFOLK, SK_SPELLCASTING, 130), + APT(SP_MERFOLK, SK_CONJURATIONS, 140), + APT(SP_MERFOLK, SK_ENCHANTMENTS, 90), + APT(SP_MERFOLK, SK_SUMMONINGS, 100), + APT(SP_MERFOLK, SK_NECROMANCY, 150), + APT(SP_MERFOLK, SK_TRANSLOCATIONS, 140), + APT(SP_MERFOLK, SK_TRANSMUTATIONS, 60), + APT(SP_MERFOLK, SK_FIRE_MAGIC, 160), + APT(SP_MERFOLK, SK_ICE_MAGIC, 80), + APT(SP_MERFOLK, SK_AIR_MAGIC, 150), + APT(SP_MERFOLK, SK_EARTH_MAGIC, 150), + APT(SP_MERFOLK, SK_POISON_MAGIC, 80), + APT(SP_MERFOLK, SK_INVOCATIONS, 80), + APT(SP_MERFOLK, SK_EVOCATIONS, 80), + + // SP_VAMPIRE + APT(SP_VAMPIRE, SK_FIGHTING, 110), + APT(SP_VAMPIRE, SK_SHORT_BLADES, 90), + APT(SP_VAMPIRE, SK_LONG_BLADES, 100), + APT(SP_VAMPIRE, SK_AXES, 110), + APT(SP_VAMPIRE, SK_MACES_FLAILS, 140), + APT(SP_VAMPIRE, SK_POLEARMS, 110), + APT(SP_VAMPIRE, SK_STAVES, 140), + APT(SP_VAMPIRE, SK_SLINGS, 140), + APT(SP_VAMPIRE, SK_BOWS, 140), + APT(SP_VAMPIRE, SK_CROSSBOWS, 140), + APT(SP_VAMPIRE, SK_THROWING, 140), + APT(SP_VAMPIRE, SK_ARMOUR, 140), + APT(SP_VAMPIRE, SK_DODGING, 90), + APT(SP_VAMPIRE, SK_STEALTH, 50), + APT(SP_VAMPIRE, SK_STABBING, 90), + APT(SP_VAMPIRE, SK_SHIELDS, 110), + APT(SP_VAMPIRE, SK_TRAPS_DOORS, 100), + APT(SP_VAMPIRE, SK_UNARMED_COMBAT, 90), + APT(SP_VAMPIRE, SK_SPELLCASTING, 130), + APT(SP_VAMPIRE, SK_CONJURATIONS, 160), + APT(SP_VAMPIRE, SK_ENCHANTMENTS, 90), + APT(SP_VAMPIRE, SK_SUMMONINGS, 100), + APT(SP_VAMPIRE, SK_NECROMANCY, 90), + APT(SP_VAMPIRE, SK_TRANSLOCATIONS, 140), + APT(SP_VAMPIRE, SK_TRANSMUTATIONS, 90), + APT(SP_VAMPIRE, SK_FIRE_MAGIC, 140), + APT(SP_VAMPIRE, SK_ICE_MAGIC, 100), + APT(SP_VAMPIRE, SK_AIR_MAGIC, 100), + APT(SP_VAMPIRE, SK_EARTH_MAGIC, 120), + APT(SP_VAMPIRE, SK_POISON_MAGIC, 120), + APT(SP_VAMPIRE, SK_INVOCATIONS, 120), + APT(SP_VAMPIRE, SK_EVOCATIONS, 90), + + // SP_DEEP_DWARF + APT(SP_DEEP_DWARF, SK_FIGHTING, 110), + APT(SP_DEEP_DWARF, SK_SHORT_BLADES, 120), + APT(SP_DEEP_DWARF, SK_LONG_BLADES, 100), + APT(SP_DEEP_DWARF, SK_AXES, 90), + APT(SP_DEEP_DWARF, SK_MACES_FLAILS, 100), + APT(SP_DEEP_DWARF, SK_POLEARMS, 120), + APT(SP_DEEP_DWARF, SK_STAVES, 110), + APT(SP_DEEP_DWARF, SK_SLINGS, 90), + APT(SP_DEEP_DWARF, SK_BOWS, 180), + APT(SP_DEEP_DWARF, SK_CROSSBOWS, 90), + APT(SP_DEEP_DWARF, SK_THROWING, 120), + APT(SP_DEEP_DWARF, SK_ARMOUR, 90), + APT(SP_DEEP_DWARF, SK_DODGING, 90), + APT(SP_DEEP_DWARF, SK_STEALTH, 70), + APT(SP_DEEP_DWARF, SK_STABBING, 110), + APT(SP_DEEP_DWARF, SK_SHIELDS, 90), + APT(SP_DEEP_DWARF, SK_TRAPS_DOORS, 80), + APT(SP_DEEP_DWARF, SK_UNARMED_COMBAT, 120), + APT(SP_DEEP_DWARF, SK_SPELLCASTING, 160), + APT(SP_DEEP_DWARF, SK_CONJURATIONS, 120), + APT(SP_DEEP_DWARF, SK_ENCHANTMENTS, 120), + APT(SP_DEEP_DWARF, SK_SUMMONINGS, 110), + APT(SP_DEEP_DWARF, SK_NECROMANCY, 80), + APT(SP_DEEP_DWARF, SK_TRANSLOCATIONS, 90), + APT(SP_DEEP_DWARF, SK_TRANSMUTATIONS, 120), + APT(SP_DEEP_DWARF, SK_FIRE_MAGIC, 110), + APT(SP_DEEP_DWARF, SK_ICE_MAGIC, 110), + APT(SP_DEEP_DWARF, SK_AIR_MAGIC, 170), + APT(SP_DEEP_DWARF, SK_EARTH_MAGIC, 60), + APT(SP_DEEP_DWARF, SK_POISON_MAGIC, 130), + APT(SP_DEEP_DWARF, SK_INVOCATIONS, 60), + APT(SP_DEEP_DWARF, SK_EVOCATIONS, 50), +}; +// Traditionally, Spellcasting and In/Evocations formed the exceptions here: +// Spellcasting skill was more expensive with about 130%, the other two got +// a discount with about 75%. +static int _spec_skills[NUM_SPECIES][NUM_SKILLS]; /* ************************************************************* @@ -2108,7 +1852,23 @@ unsigned int skill_exp_needed(int lev) int species_skills(int skill, species_type species) { - return spec_skills[species][skill]; + static bool spec_skills_initialised = false; + if (!spec_skills_initialised) + { + // Setup sentinel values to find errors more easily. + const int sentinel = 999; + for (int sp = 0; sp < NUM_SPECIES; ++sp) + for (int sk = 0; sk < NUM_SKILLS; ++sk) + _spec_skills[sp][sk] = sentinel; + for (unsigned i = 0; i < ARRAYSZ(species_skill_aptitudes); ++i) + { + const species_skill_aptitude &ssa(species_skill_aptitudes[i]); + ASSERT(_spec_skills[ssa.species][ssa.skill] == sentinel); + _spec_skills[ssa.species][ssa.skill] = ssa.aptitude; + } + spec_skills_initialised = true; + } + return _spec_skills[species][skill]; } void wield_warning(bool newWeapon) diff --git a/crawl-ref/source/util/gen-apt.pl b/crawl-ref/source/util/gen-apt.pl index a327ef61bc..6134b89152 100755 --- a/crawl-ref/source/util/gen-apt.pl +++ b/crawl-ref/source/util/gen-apt.pl @@ -184,24 +184,23 @@ sub load_aptitudes { while (<$inf>) { last if /\*{40,}/; if (!$seen_skill_start) { - $seen_skill_start = 1 if /spec_skills\[/; + $seen_skill_start = 1 if /species_skill_aptitudes\[/; } else { - if (m{//\s*SP_(\w+)\s*$}) { + if (/APT\(\s*SP_(\w+)\s*,\s*SK_(\w+)\s*,\s*(\d+)\s*\)/) { $species = propercase_string(fix_underscores($1)); - die "$skillfile:$.: Repeated skill def for $species.\n" - if $SEEN_SPECIES{$species}; - $SEEN_SPECIES{$species} = 1; - push @SPECIES, $species; - } - if (m{//\s*SK_(\w+)\s*$} && /^\s*\d+/) { - m{//\s*SK_(\w+)\s*$}; - my $skill = skill_name($1); + if (!$SEEN_SPECIES{$species}) { + $SEEN_SPECIES{$species} = 1; + push @SPECIES, $species; + } + + my $apt = $3; + my $skill = skill_name($2); die "$skillfile:$.: Unknown skill: $skill\n" unless $SKILL_ABBR{$skill}; die "$skillfile:$.: Repeated skill def $1 for $species.\n" if $SPECIES_SKILLS{$species}{$skill}; - ($SPECIES_SKILLS{$species}{$skill}) = /^\s*(\d+)/; + ($SPECIES_SKILLS{$species}{$skill}) = $apt; } } } -- cgit v1.2.3-54-g00ecf