inherit "/std/room"; inherit "/inherit/find"; inherit "/inherit/msg"; inherit "/inherit/money"; void create() { set_short("the pawnshop"); set_long("You're in the pawnshop, you can buy and sell things here. "+ "Commands are: list, buy, sell and value."); add_exit("south","/room/vill_road2"); } int buy(string s) { int value; object *obs,o; obs=get_objects(s,({ (object)"/room/store" })); if(!sizeof(obs)) { write("There is no such object in store.\n"); }else{ value=0; foreach(obs,o) value+=o->query_property("value"); value*=2; if(value>this_player()->query_money()) { write("You can't afford it.\n"); }else{ value=0; foreach(obs,o) { if(transfer(o,this_player())) { value=1; }else{ msg("\b1PRON buy$ "+o->short()+".\n"); this_player()->add_money(-2*o->query_property("value")); } } if(value) write("You can't carry more.\n"); } } return 1; } int sell(string s) { string *tmp; object *obs; obs=get_objects(s,({ this_player() })); if(!sizeof(obs)) { write("You have no such object.\n"); }else{ tmp=map_array(obs,lambda(object o,object w) { int v; if(v=o->query_property("value")) { if(!this_player()->unwield(o,1)) return 0; if(!transfer(o,w)) { this_player()->add_money(v); return o->short(); }else{ write("You can't sell "+o->short()+".\n"); } }else{ write(capitalize(o->short()+" is worthless.\n")); } return 0; },(object)"/room/store")-({0}); if(sizeof(tmp)) { s=implode_nicely(tmp); write("You sell "+s+".\n"); tell_room(this_object(),this_player()->query_name()+ " sells "+s+".\n",({this_player()})); } } return 1; } int value(string s) { object *obs,o; obs=get_objects(s,({ this_player() })); if(!sizeof(obs)) { write("You have no such object.\n"); }else{ foreach(obs,o) { int v; string s,s2; if(!(s=o->short())) continue; if(v=o->query_property("value")) { s2=(string)cents_to_string(v); }else{ s2="nothing"; } write(sprintf("%' .'-30s%s\n",s,s2)); } } return 1; } int _list(string s) { object *obs,o; if(!s) s="all"; obs=get_objects(s,({ (object)"/room/store" })); if(!sizeof(obs)) { write("There is no such object in store.\n"); }else{ foreach(obs,o) { int v; string s,s2; if(!(s=o->short())) continue; if(v=o->query_property("value")) { s2=cents_to_string(2*v); }else{ s2="nothing"; } write(sprintf("%' .'-30s%s\n",s,s2)); } } return 1; } void init() { ::init(); add_action("list %s",_list); add_action("list",_list); add_action("buy %s",buy); add_action("sell %s",sell); add_action("value %s",value); }