// hockshop.c

inherit ROOM;

void init()
{
	add_action("do_value", "value");
	add_action("do_pawn", "pawn");
	add_action("do_sell", "sell");
}

string value_string(int value)
{
	if( value < 1 ) value = 1;
	else if( value < 100 )
		return chinese_number(value) + "ゅ窥";
	else
		return chinese_number(value/100) + "ㄢ"
			+ (value%100? "" + chinese_number(value%100) + "ゅ窥": "");
}

void pay_player(object who, int amount)
{
	object ob;

	if( amount < 1 ) amount = 1;
	if( amount/100 ) {
		ob = new(SILVER_OB);
		ob->set_amount(amount/100);
		ob->move(who);
		amount %= 100;
	}
	if( amount ) {
		ob = new(COIN_OB);
		ob->set_amount(amount);
		ob->move(who);
	}
}

int do_value(string arg)
{
	object ob;
	int value;

	if( !arg || !(ob = present(arg, this_player())) )
		return notify_fail("璶ぐ或珇倒讽綫︳基\n");

	if( ob->query("money_id") )
		return notify_fail("硂琌窥⊿ǎ筁盾\n");

	value = ob->query("value");
	if( !value ) printf("%sゅぃ\n", ob->query("name"));
	else 
		printf("%s基%s\n狦璶ㄥ讽(pawn)%sの眎讽布\n狦芥耞(sell)%s\n",
			ob->query("name"), value_string(value),
			value_string(value * 60 / 100), value_string(value * 80 / 100));

	return 1;
}

int do_pawn(string arg)
{
	object ob;
	int value;

	if( !arg || !(ob = present(arg, this_player())) )
		return notify_fail("璶ㄥ讽ぐ或珇\n");

	if( ob->query("money_id") )	return notify_fail("璶讽窥\n");

	value = ob->query("value");
	if( !value ) return notify_fail("硂妓狥﹁ぃ窥\n");

	message_vision("$Nрō" + ob->query("name") + "ㄓㄥ讽"
		+ value_string(value * 60 / 100) + "\n", this_player());

	pay_player(this_player(), value * 60 / 100);
	destruct(ob);

	return 1;
}

int do_sell(string arg)
{
	object ob;
	int value;

	if( !arg || !(ob = present(arg, this_player())) )
		return notify_fail("璶芥耞ぐ或珇\n");

	if( ob->query("money_id") )	return notify_fail("璶芥窥\n");
	value = ob->query("value");
	if( !value ) return notify_fail("硂妓狥﹁ぃ窥\n");


	message_vision("$Nрō" + ob->query("name") + "芥奔\n",
		this_player());

	pay_player(this_player(), value * 80 / 100);
	destruct(ob);

	return 1;
}

