// master.c

#include <ansi.h>

inherit NPC;
inherit F_MASTER;

string ask_for_join();

void create()
{
	set_name("ȴM|", ({ "master bonze", "master", "bonze" }) );

	set("gender", "k");
	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", ([
		"c" : (: ask_for_join :),
		"Xa" : (: 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("sϦx", 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 "TAڦPOXaHMGԶ}oS\n";
	if( (string)me->query("gender") != "k" )
		return "TkIDMo̬OxqMЩp쥧ghcקaC\n";

	me->set_temp("pending/join_bonze", 1);
	return "TvTvTIDYu߬Ԩ̧ڦMиU(kneel)١C\n";
}

int do_kneel()
{
	string *prename =
	 ({ "", "", "", "b", "", "",
		"", "", "z", "k" });
	string name, new_name;

	if( !this_player()->query_temp("pending/join_bonze") ) return 0;
	message_vision(
		HIC "$NXQMqqaFUӡC\n\n"
			"$nXxMb$NYafFXUMN$NYvɼƫchC\n\n" NOR,
		this_player(), this_object() );
	name = this_player()->query("name");
	new_name = prename[random(sizeof(prename))] + name[0..1];
	command("say qHAkWs" + new_name + "C");
	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 CۡM@Ӥ@ӨӡC");
		else
			call_out("do_recruit", 2, ob);
	} else {
		command("say ѯǤѤwgFQӧ̤lMQA{FC");
	}
}

void do_recruit(object ob)
{
	if( (string)ob->query("gender") != "k" )
		command("say MkIDnѯǶ}C");
	else if( (string)ob->query("class") != "bonze" )
		command("say MID@JMХpxcץXaC");
	else {
		command("say MvTvT");
		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 TXaHٳxjcTԤHϲMWC");
	else
		command("say IDJMtMԨتAKOM]qFC");
	
	return 0;
}
