// master.c

#include <ansi.h>

inherit NPC;
inherit F_MASTER;

string ask_for_join();

void create()
{
	set_name("ト醇㎝﹟", ({ "master bonze", "master", "bonze" }) );

	set("gender", "╧┦");
	set("age", 74);
	set("attitude", "peaceful");
	set("class", "bonze");
	set("apprentice_available", 10);

	set("str", 17);
	set("int", 30);
	set("spi", 30);
	set("con", 30);
	set("cps", 30);
	set("cor", 20);

	set("atman", 2000);
	set("max_atman", 2000);

	set("force", 1500);
	set("max_force", 1500);
	set("force_factor", 5);

	set("mana", 600);
	set("max_mana", 600);

	set("combat_exp", 1000000);
	set("score", 9000);

	set("inquiry", ([
		"玞" : (: ask_for_join :),
		"產" : (: ask_for_join :),
	]) );

	set_skill("staff", 100);
	set_skill("unarmed", 80);
	set_skill("force", 100);
	set_skill("dodge", 30);
	set_skill("literate", 60);
	set_skill("chanting", 100);
	set_skill("parry", 50);
	set_skill("magic", 100);

	set_skill("cloudstaff", 100);
	set_skill("lotusforce", 100);
	set_skill("buddhism", 100);
	set_skill("essencemagic", 100);

	map_skill("staff", "cloudstaff");
	map_skill("parry", "cloudstaff");
	map_skill("force", "lotusforce");
	map_skill("magic", "essencemagic");

	create_family("废", 26, "︘");

	setup();

	carry_object(__DIR__"buddha_staff")->wield();
}

void init()
{
	add_action("do_kneel", "kneel");
}

string ask_for_join()
{
	object me;

	me = this_player();

	if( (string)me->query("class")=="bonze" )
		return "辣︱и琌產︙珿蛤ρ釉秨硂单\n";
	if( (string)me->query("gender") != "╧┦" )
		return "辣︱琁硂柑琌紂叫﹑ェ眊玞\n";

	me->set_temp("pending/join_bonze", 1);
	return "辣︱到玽到玽琁璝痷みㄌи︱叫各(kneel)з\n";
}

int do_kneel()
{
	string *prename =
	 ({ "", "", "蛾", "瞓", "店", "",
		"よ", "寸", "紌", "猭" });
	string name, new_name;

	if( !this_player()->query_temp("pending/join_bonze") ) return 0;
	message_vision(
		HIC "$N蛮も穛穛各ㄓ\n\n"
			"$nも磝$N繷郴淮淮集說碭盢$N繷緑荷计玞\n\n" NOR,
		this_player(), this_object() );
	name = this_player()->query("name");
	new_name = prename[random(sizeof(prename))] + name[0..1];
	command("say 眖さ猭暗" + new_name + "");
	command("smile");
	this_player()->delete_temp("pending/join_bonze");
	this_player()->set("name", new_name);
	this_player()->set("class", "bonze");

	return 1;
}

void attempt_apprentice(object ob)
{
	if( query("apprentice_available") ) {
		if( find_call_out("do_recruit") != -1 )
			command("say 篊帝ㄓ");
		else
			call_out("do_recruit", 2, ob);
	} else {
		command("say ρさぱ竒Μぃ稱Μ畕");
	}
}

void do_recruit(object ob)
{
	if( (string)ob->query("gender") != "╧┦" )
		command("say 辣︱琁ぃ璶蛤ρ秨");
	else if( (string)ob->query("class") != "bonze" )
		command("say 辣︱琁腀︱叫玞產");
	else {
		command("say 辣︱到玽到玽");
		command("recruit " + ob->query("id") );
	}
}

int recruit_apprentice(object ob)
{
	if( ::recruit_apprentice(ob) ) {
		add("apprentice_availavble", -1);
		return 1;
	}
}

int accept_fight(object me)
{
	if( (string)me->query("class")=="bonze" )
		command("say 辣︱產з硏眏碿矮ρ釉ぃ幢笻は睲砏");
	else
		command("say 琁琂礛ō璽荡美ρ釉ㄘ狝獽琌ぃゲ耕秖");
	
	return 0;
}
