summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/skills2.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-05-24 09:14:20 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-05-24 09:14:20 +0000
commit8cdbb3ac7242c29a12dac5a79ddfe7c33b4279a1 (patch)
treecac90bf7523b9b429855182e64a1b5dba14bfeed /crawl-ref/source/skills2.cc
parentcb907ccf682a0ffb593fab0633ac8e6ccacb81dc (diff)
downloadcrawl-ref-8cdbb3ac7242c29a12dac5a79ddfe7c33b4279a1.tar.gz
crawl-ref-8cdbb3ac7242c29a12dac5a79ddfe7c33b4279a1.zip
Change skill titles as discussed in FR 1957095. There might have to be a
second round tweaking them some more. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5207 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/skills2.cc')
-rw-r--r--crawl-ref/source/skills2.cc134
1 files changed, 94 insertions, 40 deletions
diff --git a/crawl-ref/source/skills2.cc b/crawl-ref/source/skills2.cc
index 2c8f655f44..740951b6c9 100644
--- a/crawl-ref/source/skills2.cc
+++ b/crawl-ref/source/skills2.cc
@@ -40,10 +40,10 @@
#include "transfor.h"
#include "view.h"
-/* jmf: some references for words I used below:
- Peltast http://www.geocities.com/Athens/Aegean/9659/shields_main.htm
- Phalangite http://www.users.cts.com/funtv/j/jjartist/EpiroteScenario1.htm
- Yeoman: http://snt.student.utwente.nl/campus/sagi/artikel/longbow/longbow.html
+/* Basic goals for titles:
+ The higher titles must be come last.
+ Referring to the skill itself is fine ("Transmuter") but not impressive.
+ No overlaps, high diversity.
*/
// Note: Even though %s could be used with most of these, remember that
@@ -52,30 +52,27 @@
const char *skills[50][6] =
{
- {"Fighting", "Skirmisher", "Grunt", "Veteran", "Warrior", "Slayer"}, // 0
- {"Short Blades", "Stabber", "Cutter", "Knifefighter", "Eviscerator", "Blademaster"},
- {"Long Blades", "Slasher", "Slicer", "Fencer", "Swordfighter", "Swordmaster"},
+ {"Fighting", "Skirmisher", "Fighter", "Warrior", "Slayer", "Conqueror"}, // 0
+ {"Short Blades", "Cutter", "Slicer", "Swashbuckler", "Blademaster", "Eviscerator"},
+ {"Long Blades", "Slasher", "Carver", "Fencer", "%s Blade", "Swordmaster"},
{NULL}, // 3- was: great swords {dlb}
- {"Axes", "Chopper", "Cleaver", "Hacker", "Severer", "Axe Maniac"},
- {"Maces & Flails", "Basher", "Cudgeler", "Shatterer", "Bludgeoner", "Skullcrusher"}, // 5
- {"Polearms", "Spear-Bearer", "Pike-%s", "Phalangite", "Lancer", "Halberdier"},
- {"Staves", "Twirler", "Cruncher", "Smasher", "Stickfighter", "Skullbreaker"},
-
- {"Slings", "Vandal", "Slinger", "Whirler", "Crazy %s", "Very Crazy %s"},
- {"Bows", "Shooter", "Yeoman", "Archer", "Merry %s", "Merry %s"},
- {"Crossbows", "Shooter", "Sharpshooter", "Archer", "%s Ballista", "%s Ballista"}, // 10
- {"Darts", "Dart Thrower", "Hurler", "Hurler, First Class", "%s Darts Champion", "Universal Darts Champion"},
- {"Throwing", "Chucker", "Thrower", "Deadly Accurate", "Hawkeye", "Sniper"},
-
+ {"Axes", "Chopper", "Cleaver", "Hacker", "Severer", "Executioner"},
+ {"Maces & Flails", "Cudgeler", "Basher", "Bludgeoner", "Shatterer", "Skullcrusher"}, // 5
+ {"Polearms", "Poker", "Spear-Bearer", "Impaler", "Phalangite", "%s Porcupine"},
+ {"Staves", "Twirler", "Cruncher", "Stickfighter", "Pulverizerr", "Chief of Staff"},
+ {"Slings", "Vandal", "Slinger", "Whirler", "Slingshot", "%s Catapult"},
+ {"Bows", "Shooter", "Archer", "Marks%s", "Crack Shot", "Merry %s"},
+ {"Crossbows", "Bolt Thrower", "Quickloader", "Sharpshooter", "Sniper", "%s Arbalest"}, // 10
+ {"Darts", "Dart Thrower", "Hurler", "Hedgehog", "Darts Champion", "Perforator"},
+ {"Throwing", "Chucker", "Thrower", "Deadly Accurate", "Hawkeye", "%s Ballista"},
{"Armour", "Covered", "Protected", "Tortoise", "Impregnable", "Invulnerable"},
- {"Dodging", "Ducker", "Dodger", "Nimble", "Spry", "Acrobat"},
- {"Stealth", "Footpad", "Sneak", "Covert", "Unseen", "Imperceptible"},
+ {"Dodging", "Ducker", "Nimble", "Spry", "Acrobat", "Intangible"},
+ {"Stealth", "Sneak", "Covert", "Unseen", "Imperceptible", "Ninja"}, // 15
{"Stabbing", "Miscreant", "Blackguard", "Backstabber", "Cutthroat", "Politician"},
- {"Shields", "Shield-Bearer", "Blocker", "%s Barricade", "Peltast", "Hoplite"},
- {"Traps & Doors", "Disarmer", "Trapper", "Architect", "Engineer", "Dungeon Master"},
-
+ {"Shields", "Shield-Bearer", "Hoplite", "Blocker", "Peltast", "%s Barricade"},
+ {"Traps & Doors", "Scout", "Disarmer", "Vigilant", "Perceptive", "Dungeon Master"},
// STR based fighters, for DEX/martial arts titles see below
- {"Unarmed Combat", "Ruffian", "Grappler", "Brawler", "Wrestler", "Boxer" },
+ {"Unarmed Combat", "Ruffian", "Grappler", "Brawler", "Wrestler", "%sweight Champion"},
{NULL}, // 20- empty
{NULL}, // 21- empty
@@ -83,22 +80,22 @@ const char *skills[50][6] =
{NULL}, // 23- empty
{NULL}, // 24- empty
- {"Spellcasting", "Magician", "Thaumaturge", "Eclecticist", "Sorcerer", "Archmage"}, // 25
+ {"Spellcasting", "Magician", "Thaumaturge", "Eclecticist", "Sorcerer", "Archmage"}, // 25
{"Conjurations", "Ruinous", "Conjurer", "Destroyer", "Devastator", "Annihilator"},
{"Enchantments", "Charm-Maker", "Infuser", "Bewitcher", "Enchanter", "Spellbinder"},
{"Summonings", "Caller", "Summoner", "Convoker", "Demonologist", "Hellbinder"},
{"Necromancy", "Grave Robber", "Reanimator", "Necromancer", "Thanatomancer", "%s of Death"},
- {"Translocations", "Jumper", "Blinker", "Shifter", "Portalist", "Plane Walker"}, // 30
- {"Transmigration", "Changer", "Transmogrifier", "Transformer", "Alchemist", "Transmuter"},
+ {"Translocations", "Grasshopper", "Placeless %s", "Blinker", "Portalist", "Plane %s"}, // 30
+ {"Transmigration", "Changer", "Transmogrifier", "Alchemist", "Malleable", "Shapeless %s"},
{"Divinations", "Seer", "Soothsayer", "Diviner", "Augur", "Oracle"},
{"Fire Magic", "Firebug", "Arsonist", "Scorcher", "Pyromancer", "Infernalist"},
- {"Ice Magic", "Chiller", "Frost Mage", "Ice Mage", "Cryomancer", "Englaciator"},
- {"Air Magic", "Wind Mage", "Cloud Mage", "Air Mage", "Sky Mage", "Storm Mage"}, // 35
+ {"Ice Magic", "Chiller", "Frost Mage", "Gelid", "Cryomancer", "Englaciator"},
+ {"Air Magic", "Gusty", "Cloud Mage", "Aerator", "Anemomancer", "Meteorologist"}, // 35
{"Earth Magic", "Digger", "Geomancer", "Earth Mage", "Metallomancer", "Petrodigitator"},
- {"Poison Magic", "Stinger", "Tainter", "Polluter", "Poisoner", "Envenomancer"},
+ {"Poison Magic", "Stinger", "Tainter", "Polluter", "Contaminator", "Envenomancer"},
- {"Invocations", "Believer", "Servant", "Worldly Agent", "Theurge", "Avatar"}, // 38
+ {"Invocations", "Believer", "Agitator", "Worldly Agent", "Theurge", "Avatar"}, // 38
{"Evocations", "Charlatan", "Prestidigitator", "Fetichist", "Evocator", "Talismancer"}, // 39
/*NOTE: If more skills are added, must change ranges in level_change() in player.cc */
@@ -117,8 +114,10 @@ const char *skills[50][6] =
};
const char *martial_arts_titles[6] =
- {"Unarmed Combat", "Martial Artist", "Black Belt", "Sensei", "Master", "Grand Master"};
+ {"Unarmed Combat", "Insei", "Martial Artist", "Black Belt", "Sensei", "Grand Master"};
+const char *atheist_inv_titles[6] =
+ {"Invocations", "Unbeliever", "Agnostic", "Dissident", "Heretic", "Apostate"};
/* Note that this (humans have 100 for all skills) is assumed in the
level_change function in player.cc, if CLASSES is def'd
@@ -1917,7 +1916,7 @@ std::string skill_title( unsigned char best_skill, unsigned char skill_lev,
{
// paranoia
if (best_skill == SK_UNUSED_1
- || (best_skill > SK_UNARMED_COMBAT && best_skill < SK_SPELLCASTING)
+ || best_skill > SK_UNARMED_COMBAT && best_skill < SK_SPELLCASTING
|| best_skill >= NUM_SKILLS)
{
return ("Adventurer");
@@ -1960,7 +1959,13 @@ std::string skill_title( unsigned char best_skill, unsigned char skill_lev,
case SK_INVOCATIONS:
if (god == GOD_NO_GOD)
- result = "Godless";
+ result = atheist_inv_titles[skill_rank];
+ else if (god == GOD_TROG || god == GOD_XOM
+ || god == GOD_NEMELEX_XOBEH)
+ {
+ // don't care about Invocations
+ result = "Prodigal";
+ }
else
result = skills[best_skill][skill_rank];
break;
@@ -1972,14 +1977,63 @@ std::string skill_title( unsigned char best_skill, unsigned char skill_lev,
}
const std::string::size_type where = result.find("%s");
- if ( where != std::string::npos )
+ if (where != std::string::npos)
{
- const bool need_cap = (where == 0 && best_skill != SK_NECROMANCY);
- const std::string sp = species_name(static_cast<species_type>(species),
- 0, true, need_cap);
- result.replace(where, 2, sp);
+ if (best_skill == SK_UNARMED_COMBAT)
+ {
+ std::string weightclass = "";
+ switch (species)
+ {
+ case SP_OGRE:
+ case SP_OGRE_MAGE:
+ case SP_TROLL:
+ weightclass = "Heavy";
+ break;
+
+ case SP_NAGA:
+ case SP_CENTAUR:
+ weightclass = "Cruiser";
+ break;
+
+ default:
+ weightclass = "Middle";
+ break;
+
+ case SP_HIGH_ELF:
+ case SP_GREY_ELF:
+ case SP_DEEP_ELF:
+ case SP_SLUDGE_ELF:
+ case SP_KENKU:
+ weightclass = "Little";
+ break;
+
+ case SP_HALFLING:
+ case SP_GNOME:
+ case SP_KOBOLD:
+ weightclass = "Feather";
+ break;
+
+ case SP_SPRIGGAN:
+ weightclass = "Fly";
+ break;
+ }
+ result.replace(where, 2, weightclass);
+ }
+ else if (best_skill == SK_TRANSLOCATIONS && skill_rank == 5)
+ {
+ result.replace(where, 2, (species == SP_NAGA ? "Slider"
+ : "Walker"));
+ }
+ else
+ {
+ const bool need_cap = (best_skill != SK_BOWS);
+ const std::string sp = species_name(static_cast<species_type>(species),
+ 0, true, need_cap);
+ result.replace(where, 2, sp);
+ }
}
- return result.empty() ? std::string("Invalid Title") : result;
+ return (result.empty() ? std::string("Invalid Title")
+ : result);
}
std::string player_title()