/**
* The Holy Symbol Inherit.
* Sandoz, 24th July 2001
* Edited by Shaydz/Love
* 17th June 2005
*/
inherit ARMOUR_OBJ;
nosave string deity, long_desc;
/** @ignore yes */
void set_long_desc( string _long ) { long_desc = _long; }
/** @ignore yes */
int consider_alignment( object *obs );
/** @ignore yes */
string do_compare( int al, object o );
/** @ignore yes */
string query_long_desc() { return long_desc; }
/** @ignore yes */
string query_deity() { return deity; }
/** @ignore yes */
void set_deity( string _name ) {
deity = _name;
add_adjective( lower_case(deity) );
add_property( deity, 1 );
} /* set_deity() */
/** @ignore yes */
string get_long() {
return long_desc+( TP->query_deity() == deity ? " Your deity allows you "
"to discover your fellow followers. To find others of "
"your ilk, use the 'list' command. Your deity may also "
"allow you to discover the alignment of others, simply "
"'use' this holy symbol to observe those around "
"you.\n" : "\n" );
} /* get_long() */
/** @ignore yes */
void create() {
::create();
set_name("symbol");
set_short("holy symbol");
add_adjective("holy");
add_alias( ({"amulet", "jewellery"}) );
add_plural( ({"amulets", "jewellery"}) );
add_property("holy symbol", 1 );
add_property("no_recycle", 1 );
add_property("shop type", "jewellers");
set_long( (: get_long :) );
set_type("necklace");
setup_armour(1200);
set_damage_chance(10);
set_value(6000);
set_weight(4);
TO->setup();
} /* setup() */
/** @ignore yes */
void init() {
add_command("list", "worshippers");
add_command("use","symbol to observe <indirect:living:here>", (: consider_alignment($1) :));
} /* init() */
/** @ignore yes */
int do_list() {
string *worshippers;
if( TP->query_deity() != deity ) {
add_failed_mess("Your connection with "+deity+" is too weak to get "
"anything useful out of "+the_short()+".\n");
return 0;
}
worshippers = DEITY_H->query_worshippers( deity );
worshippers = filter( worshippers, (: !creatorp($1) :) );
worshippers = map( worshippers, (: CAP($1) :) );
if( !sizeof( worshippers = sort_array( worshippers, 1 ) ) ) {
add_failed_mess("There are no worshippers currently in the service "
"of "+deity+".\n");
return 0;
}
add_succeeded_mess( ({ query_multiple_short(worshippers)+" are the "
"players currently in the service of "+deity+", with a total of "+
query_num( sizeof(worshippers) )+" worshipper"+
( sizeof(worshippers) > 1 ? "s" : "" )+".\n",
"$N briefly clasp$s "+TO->poss_short()+" in $p hand.\n"}) );
return 1;
} /* do_list() */
int consider_alignment( object *obs ) {
int ok;
object ob;
ok=0;
if( TP->query_deity()!=deity ) {
switch(deity){
case "Dilabi":
add_failed_mess("If you attempt to use the symbol of Dilabi "
"again without worshipping him, you may find "
"that your next meal is your last.\n");
break;
case "Elytra":
add_failed_mess("Elytra can provide you with far more than any "
"other god. Perhaps you should consider "
"converting before taking advantage of her "
"symbol again.\n");
break;
case "Lumen":
add_failed_mess("Perhaps you should consider following the path "
"of peace and healing before attempting to "
"use Lumen's symbol again. \n");
break;
case "Savons":
add_failed_mess("You are not even close to being "
"knowledgeable enough to use the symbol of "
"Savons.\n");
break;
case "Visam":
add_failed_mess("It is only when you understand the balance "
"of nature that you can use a symbol of "
"Visam.\n");
break;
default:
add_failed_mess("You are not a worshipper of "+deity+". You need "
"to have faith before using this symbol.\n");
break;
}
return 0;
}
if( sizeof(obs) > 1 )
obs -= ({ TP });
if( sizeof(obs) > 5 ) {
add_failed_mess("You can only consider 5 things at once.\n");
return 0;
}
switch( TP->check_dark( ENV(TP)->query_light() ) ) {
case -2..-1 :
add_failed_mess("It's too dark to consider anyone.\n");
return 0;
case 1..2 :
add_failed_mess("It's too bright to consider anyone.\n");
return 0;
default :
}
tell_room(ENV(TP),TP->query_short()+" gazes at "+TP->HIS+" holy symol.\n",TP);
tell_object(TP,"You gaze into your holy symbol.\n");
TP->adjust_gp(-(sizeof(obs)*10));
foreach( ob in obs ) {
if( !living(ob) )
continue;
if( ob == TP ) {
if( sizeof(obs) == 1 ) {
write("You feel nothing but scorn from "+deity+" for needing to consider your own"
" spiritual worth.\n");
ok++;
}
continue;
}
ok++;
write( do_compare( ob->query_al(), ob )+"\n");
}
if( !ok ) {
add_failed_mess("You need to consider someone.\n");
return 0;
}
return 1;
} /* consider_alignment() */
/** @ignore yes */
string do_compare( int al, object o ) {
string ret;
ret = "$C$$who$";
switch( al ) {
case -10000..-5201:
ret = "%^BOLD%^%^WHITE%^"+ret+" glows a blinding white";
break;
case -5200..-2501:
ret = "%^BOLD%^%^WHITE%^"+ret+" glows extremely white";
break;
case -2500..-1251:
ret = "%^WHITE%^"+ret+" glows very white";
break;
case -1250..-601:
ret = "%^WHITE%^"+ret+" glows fairly white";
break;
case -600..-301:
ret = "%^CYAN%^"+ret+" glows faintly blue";
break;
case -300..300:
ret = "%^CYAN%^"+ret+" glows blue";
break;
case 301..600:
ret = "%^BOLD%^%^CYAN%^"+ret+" glows bright blue";
break;
case 601..1250:
ret = "%^RED%^"+ret+" glows fairly red";
break;
case 1251..2500:
ret = "%^RED%^"+ret+" glows quite red";
break;
case 2501..4800:
ret = "%^BOLD%^%^RED%^"+ret+" glows very red";
break;
case 4801..10000:
ret = "%^BOLD%^%^RED%^"+ret+" glows extremely red";
break;
default:
ret = "%^CYAN%^"+ret+" glows blue";
}
ret = replace_string( ret, "$who$", o->the_short() );
return ret + ".%^RESET%^";
} /* do_compare() */