#include <ansi.h>
inherit NPC;

string *first_name = ({ "赵","钱","孙","李","周","吴","郑","王","张","陈", "刘","林" }); 
string *name_words = ({ "顺","昌","振","发","财","俊","彦","良","志","忠", "孝","雄","益","添","金",
"辉","长","盛","胜","进","安","福","同","满", "富","万","龙","隆","祥","栋","国","亿","寿" });
string *rnd_id = ({"ra","ma","ta","pu","gu","du","so","po","lo","phi","tri","ne","she"}); 
string *rnd_id_tail = ({"ng","gh","ss","h","le","d","ck","m","tte"});

string *rnd_say =({
"我是日月新弟子，你是谁？", 
"为什麽我好象没见过你？", 
"能给我一些钱吗？", 
"你不理我？", 
"可不可以告诉我哪里有吃喝？", 
"hi", "hello", "hmm", "wa...",
"waley", "wait...", "hohoho", "hehe",
"ah..", 
});

varargs void drool(string msg, string who);
void create() 
{
        string name, id;
        name = first_name[random(sizeof(first_name))];
        name += name_words[random(sizeof(name_words))]; 
        if( random(10) > 2 ) 
                name += name_words[random(sizeof(name_words))];
        id = rnd_id[random(sizeof(rnd_id))]; 
        if( random(10) > 4 ) 
                id += rnd_id[random(sizeof(rnd_id))]; 
        id += rnd_id_tail[random(sizeof(rnd_id_tail))];
        set_name(name, ({ id, "drooler"
}) ); 
        set("gender", "男性"); 
        set("age", 14 + random(10));
        set("attitude", "friendly");
 	 set("shen_type", 1);
	 set("fight_times", 0);
        set("combat_exp", 50000 + random(5000));
        
        set_skill("sword",  50);
        set_skill("dodge",  50);
        set_skill("force",  50);
        set_skill("parry",  50);
        set_skill("tianmo-jian", 50);
        set_skill("tianmogong", 50);
        set_skill("ding-dodge",50);

	map_skill("force", "tianmogong");
	map_skill("parry", "tianmo-jian");
	map_skill("sword", "tianmo-jian");
       	map_skill("dodge", "ding-dodge");
	create_family("日月神教", 6, "弟子");
 
        set("env/wimpy", 100); 
        set("chat_chance", 30); 
        set("chat_msg", ({ 
                (: command, "get all" :), 
                (: command, "wear all" :), 
                (: command, "wield all" :), 
                (: drool :), (: drool :), 
                (: drool :), (: drool :), 
                (: drool :), (: random_move :),
}) ); 

        setup(); 
        if( clonep() ) 
                CHANNEL_D->register_relay_channel("chat");
	carry_object("/d/city/npc/obj/changjian")->wield();
	carry_object("/d/city/npc/obj/cloth")->wear();
 
}

int add_phrase(string who, string msg) 
{ 
        msg = replace_string(msg, "?", ""); 
        msg = replace_string(msg, "？", ""); 
        msg = replace_string(msg, "？", ""); 
        msg = replace_string(msg, "!", ""); 
        msg = replace_string(msg, "！", ""); 
        msg = replace_string(msg, "啊", ""); 
        msg = replace_string(msg, "吗", ""); 
        msg = replace_string(msg, "耶", ""); 
        msg = replace_string(msg, "吧", "");

        if( msg!="" ) { 
                add("memory/" + who, ({ msg })); 
                return 1; 
        } 
        else return 0; 
}

string make_reply() { }

void relay_channel(object ob, string channel,
string msg) 
{ 
        string who, phrase;
        if( !userp(ob) || (channel != "chat"))
        return; 
        who = ob->query("name");

// Don't process our own speech. 
        if( ob==this_object() ) return;
        if( add_phrase(who, msg) && random(10)> 4 ) 
        drool(msg, ob->query("name")); 
}

void relay_say(object ob, string msg) 
{ 
        string who, phrase;
        if( !userp(ob) ) return; 
        who = ob->query("name");

// Don't process our own speech. 
        if( ob==this_object() ) return;

        if( add_phrase(who, msg) && random(10)
> 4 ) 
                drool(msg, ob->query("name")); 
}

void relay_emote(object ob, string verb) 
{ 
        if( !userp(ob) ) return;

        switch(verb) { 
                case "kick": 
                if( random(10)<5 ) { 
                                command("say 为什麽老看我？"); 
                                break; 
                        } 
                default: 
                        if( random(10)<5 ) 
                                command(verb + " " + ob->query("id"));
                        else drool(); 
        } 
}

varargs void drool(string msg, string who) 
{ 
        mapping mem; 
        string *ob;

        mem = query("memory"); 
        if( !mapp(mem) ) return;

        if( !msg || !who) { 
                ob = keys(mem); 
                who = ob[random(sizeof(ob))]; 
                msg = mem[who][random(sizeof(mem[who]))]; 
        }

        if( (strsrch(msg, "为什麽") >=
0) ) { 
                if( sscanf(msg, "%*s为什麽%s", msg)==2 ) 
                        msg = "为什麽" + msg; 
                        switch(random(8)) { 
                                case 0: 
                                        command("say " + who + "，你是在问我吗？");     break;
                                case 1: 
                                        command("say 关於" + msg + " ... ");break; 
                                case 2: 
                                        command("say 呃 ... "); drool(); break; 
                                case 3: 
                                        command("say 这个问题嘛 ...."); break; 
                                case 4: 
                                        command("say " + who + "，知道这个问题的答案对你那麽重要吗？");break; 
                                case 5: 
                                        command("say " + msg + "？"); break;
                                case 6: 
                                        command("say " + who + "你能不能说清楚一点？");break; 
                                case 7: 
                                        command("say " + who + "，我不懂你问的问题");break; 
                        } 
                } 
                else 
                if( (strsrch(msg, "你") >= 0) || (strsrch(msg, "□")>= 0) 
                || (strsrch(msg, "drooler") >= 0) || (strsrch(msg,"Drooler") >= 0)) { 
                        if( sscanf(msg, "%*s你%s", msg) == 2 ) 
                                msg = "你" + msg; msg = replace_string(msg, "你","我"); 
                        msg = replace_string(msg, "□", "我");
                        switch(random(10)) { 
                                case 0: 
                                        command("say " + who + "，你是说"+ msg + "吗？"); break; 
                                case 1: 
                                        command("say 你确定" + msg + "？");break; 
                                case 2: 
                                        command("say " + msg + "跟你有什麽关系？");break;
                                case 3: 
                                        command("say 嗯 ... " + who + "说得好");break; 
                                case 4: 
                                        command("say " + who + "你为什麽对"+ msg + "这麽有兴趣？"); break; 
                                case 5: 
                                        command("say 为什麽你认为" + msg + "？");break; 
                                case 6: 
                                        command("say 换个话题吧"); drool(); break;
                                case 7: 
                                        command("say 才怪"); break; 
                                case 8: 
                                        command("say 不一定吧？"); break; 
                                case 9: 
                                        command("say 有这个可能 ...."); break; 
                        } 
                } 
                else 
                if( (strsrch(msg, "我") >= 0)) { 
                        if( sscanf(msg, "%*s我%s", msg) == 2 ) msg = "我"+ msg; 
                        msg = replace_string(msg, "我", "你");
                        msg = replace_string(msg, "?", ""); 
                        switch(random(8)) { 
                                case 0: 
                                        command("say 你是说" + msg + "吗？");break; 
                                case 1: 
                                        command("say 真的？" + msg + "？");break; 
                                case 2: 
                                        command("say 如果" + msg + "，我能帮你什麽忙吗？");break; 
                                case 3: 
                                        command("hmm"); break; 
                                case 4: 
                                        command("say 你认为" + msg + "？");break; 
                                case 5: 
                                        command("say 我有同感"); break; 
                                case 6: 
                                        command("say 你说的「" + msg + "」我不能苟同");break; 
                                case 7: 
                                        command("say 有关「" + msg + "」的话题到此为止好吗？");break; 
                        } 
                } 
                else { 
                        switch(random(20)) { 
                                case 0: 
                                        command("say 为什麽说" + msg + "?");break; 
                                case 1: 
                                        command("say 「" + msg + "」是什麽意思？");break; 
                                case 2: 
                                        command("say " + msg + "？"); break;
                                case 3: 
                                        command("grin"); break; 
                                case 4: 
                                        command("smile"); break; 
                                case 5: 
                                        command("?"); break; 
                                case 6: 
                                        command("say ...."); break; 
                                case 7: 
                                        command("hmm"); break; 
                                case 8: 
                                        command("say " + rnd_say[random(sizeof(rnd_say))]);break; 
                                case 9: 
                                        command("say 你怎麽知道" + msg + "?");break;
                                case 10: 
                                        command("say 刚刚" + who + "不是说了，"+ msg); break; 
                                case 11: 
                                        command("say 我当然知道，" + msg); break;
                                case 12:
                                        command("say 然後呢？"); break; 
                                case 13:
                                        command("say 真的吗？"); break; 
                                case 14:
                                        command("say 我不这麽认为。"); break;
                                default: break; 
                } 
        } 
}

void reset() 
{ 
        delete("memory"); 
}

int accept_object() { return 1; } 
