#define TABLE "/handlers/top_ten_handler"
#include <top_ten_tables.h>
inherit STD_GUILD_OBJ;
void setup() {
set_name("thieves");
set_short("Thieves Guild");
set_long("The thieves guild. They steal, filch and shoplift. All in all "
"very likable people.\n");
set_gp_skill("covert.points");
set_start_pos("/d/calarien/slum/pub/pub");
set_skills( ({
"covert.stealth.inside",
"covert.stealth.outside",
"covert.hiding.person",
"covert.hiding.object",
"covert.lockpick.doors",
"covert.lockpick.traps",
"covert.manipulation.sleight-of-hand",
"covert.manipulation.stealing",
"covert.casing.person",
"covert.casing.place",
"covert.points",
"fighting.combat.range.thrown",
"general.valueing.gems",
"general.valueing.jewellery"
}) );
} /* setup() */
int query_skill_cost(string skill) {
string *bits;
if(member_array(skill, skills) != -1)
return 3;
bits = explode(skill, ".");
switch(bits[0]) {
case "covert" :
return 5;
case "faith" :
return 20;
case "magic" :
return 50;
default :
return 10;;
}
} /* query_skill_cost() */
int query_skill_max_level( string skill ) {
string *bits;
if ( member_array( skill, skills ) != -1 )
return 400;
bits = explode( skill, "." );
switch( bits[ 0 ] ) {
case "covert" :
return 50;
case "faith" :
return 40;
case "fighting" :
return 40;
case "magic" :
return 40;
case "general" :
return 40;
default:
return 40;
}
} /* query_skill_max_level() */
string query_title_adjective( object player ) {
int level;
level = query_level( player );
if (level > 500)
return "utterly amazing supreme high master ";
if (level > 450)
return "amazingly high exalted grand master ";
if (level > 425)
return "amazing incredibly exalted master ";
if (level > 400)
return "exalted supreme high master ";
if (level > 350)
return "exalted supreme master ";
if (level > 325)
return "grand master exalted high ";
if (level > 300)
return "exalted grand master ";
if (level > 275)
return "exalted high master ";
if (level > 250)
return "supreme master ";
if (level > 200)
return "grand master ";
if (level > 175)
return "high master ";
if (level > 150)
return "master ";
if (level > 120)
return "exalted high ";
if (level > 110)
return "professional ";
if (level > 100)
return "incredible ";
if (level > 90)
return "awesome ";
if (level > 80)
return "highly accomplished ";
if (level > 70)
return "high ";
if (level > 60)
return "expert ";
if (level > 55)
return "very good ";
if (level > 50)
return "good ";
if (level > 45)
return "tough ";
if (level > 40)
return "experienced ";
if (level > 35)
return "apprentice ";
if (level > 30)
return "practiced ";
if (level > 25)
return "practising ";
if (level > 20)
return "keen ";
if (level > 15)
return "not so silent ";
if (level > 10)
return "inexperienced ";
if (level > 5)
return "not so skilled ";
return "novice ";
} /* query_title_adjective */
string query_title_name( object player ) {
int level, melee, value, sleight, locks, stealth;
level = query_level( player );
melee = ( (int)player->query_skill( "fighting.combat.melee.sharp" ) +
(int)player->query_skill( "fighting.combat.range.thrown" ) ) / 2;
value = ( (int)player->query_skill( "general.valueing.gems" ) +
(int)player->query_skill( "general.valueing.jewellery" ) +
(int)player->query_skill( "covert.hiding.object" ) ) / 3;
sleight = ( (int)player->query_skill( "covert.sleight-of-hand" ) +
(int)player->query_skill( "covert.casing.person" ) +
(int)player->query_skill( "covert.casing.place" ) ) / 3;
locks = ( (int)player->query_skill( "covert.lockpick.doors" ) +
(int)player->query_skill( "covert.lockpick.safes" ) +
(int)player->query_skill( "covert.lockpick.traps" ) ) / 3;
stealth = ( (int)player->query_skill( "covert.stealth.inside" ) +
(int)player->query_skill( "covert.stealth.outside" ) +
(int)player->query_skill( "covert.hiding.person" ) ) / 3;
if ( melee > level )
melee -= level;
else
melee = 0;
if ( value > level )
value -= level;
else
value = 0;
if ( sleight > level )
sleight -= level;
else
sleight = 0;
if ( locks > level )
locks -= level;
else
locks = 0;
if ( stealth > level )
stealth -= level;
else
stealth = 0;
if ( ( melee < 3 ) && ( value < 3 ) && ( sleight < 3 ) && ( locks < 3 ) &&
( stealth < 3 ) )
return "thief";
melee /= 2;
value /= 2;
sleight /= 2;
locks /= 2;
stealth /= 2;
if ( ( melee > value ) && ( melee > sleight ) && ( melee > locks ) &&
( melee > stealth ) )
switch ( melee ) {
case 0 .. 4 :
return "robber";
case 5 .. 9 :
return "thuggee";
case 10 .. 14 :
return "mugger";
case 15 .. 19 :
return "thug";
case 20 .. 24 :
return "waylayer";
case 25 .. 29 :
return "brigand";
case 30 .. 34 :
return "hijacker";
case 35 .. 39 :
return "footpad";
case 40 .. 44 :
return "bandit";
case 45 .. 49 :
return "rogue";
case 50 .. 54 :
return "highway"+ ( (int)player->query_gender() == 1 ?
"man" : "woman" );
default :
return "cut-throat";
}
if ( ( value > sleight ) && ( value > locks ) && ( value > stealth ) )
switch ( value ) {
case 0 .. 4 :
return "plunderer";
case 5 .. 9 :
return "pillager";
case 10 .. 14 :
return "smuggler";
case 15 .. 19 :
return "larcenist";
case 20 .. 24 :
return "marauder";
case 25 .. 29 :
return "looter";
default :
return "fence";
}
if ( ( sleight > locks ) && ( sleight > stealth ) )
switch ( sleight ) {
case 0 .. 4 :
return "bag snatcher";
case 5 .. 9 :
return "pickpocket";
case 10 .. 14 :
return "shoplifter";
case 15 .. 19 :
return "cutpurse";
case 20 .. 24 :
return "filcher";
case 25 .. 29 :
return "pilferer";
case 30 .. 34 :
return "trickster";
case 35 .. 39 :
return "fingersmith";
case 40 .. 44 :
return "light-finger";
case 45 .. 49 :
return "rustler";
case 50 .. 54 :
return "second storey "+ ( (int)player->query_gender() == 1 ?
"man" : "woman" );
default :
return "kleptomaniac";
}
if ( locks > stealth )
switch ( locks ) {
case 0 .. 4 :
return "lock picker";
case 5 .. 9 :
return "safe cracker";
case 10 .. 14 :
return "safe breaker";
case 15 .. 19 :
return "house breaker";
case 20 .. 24 :
return "acquirer";
default :
return "locksmith";
}
switch ( stealth ) {
case 0 .. 4 :
return "sneak thief";
case 5 .. 9 :
return "bravo";
case 10 .. 14 :
return "prowler";
case 15 .. 19 :
return "burglar";
case 20 .. 24 :
return "cat burglar";
default :
return "shadowstealer";
}
} /* query_title_name() */
string query_title(object player) {
string title;
title = "the "+query_title_adjective(player) + query_title_name(player);
if (player->query_property("guildmaster"))
title = "the Guildmaster of the Thieves' Guild";
return title;
} /* query_title() */
void skills_advanced(object thing, string skill, int level) {
::skills_advanced(thing, skill, level);
} /* skills_advanced() */