// sample master.c code
// xiake island master.c

inherit NPC;
inherit F_MASTER;

void consider();

void create()
{
        set_name("簡長老", ({"jian zhanglao", "jian", "zhanglao"}));
        set("title", "丐幫九袋長老");
        set("nickname", "執法長老");
        set("gender", "男性");
        set("age", 50);
        set("long", 
                "簡長老是丐邦的執法長老，代幫主執掌法刀以及青竹令等。\n"
                "他向來嫉惡如仇，弟子中有誰犯過，出手決不容情。\n");

        set("attitude", "peaceful");
        
        set("str", 24);
        set("int", 20);
        set("con", 24);
        set("dex", 20);

        set("qi", 900);
        set("max_qi", 900);
        set("jing", 100);
        set("max_jing", 100);
        set("neili", 1500);
        set("max_neili", 1500);
        set("jiali", 100);
        
        set("combat_exp", 150000);
        set("score", 20000);
        
        set_skill("force", 95);                         // 基本內功
        set_skill("huntian-qigong", 90);        // 混天氣功
        set_skill("unarmed", 100);                      // 基本拳腳
        set_skill("xianglong-zhang", 95);       // 降龍十八掌
        set_skill("dodge", 90);                         // 基本躲閃
        set_skill("xiaoyaoyou", 90);            // 逍遙游
        set_skill("parry", 85);                         // 基本招架
        set_skill("staff", 90);                         // 基本棍杖
        
        map_skill("force", "huntian-qigong");
        map_skill("unarmed", "xianglong-zhang");
        map_skill("parry", "xianglong-zhang");
        map_skill("dodge", "xiaoyaoyou");
        
        create_family("丐幫", 18, "九袋長老");

        set("chat_chance_combat", 20);
        set("chat_msg_combat", ({
                (: perform_action, "unarmed.xianglong" :),
                (: exert_function, "recover" :),
        }) );

        setup();
}

void init()
{
        object ob;
          mapping myfam;
        
        ::init();
        if (interactive(ob = this_player()) && !is_fighting()) {
                myfam = (mapping)ob->query("family");
                if ((!myfam || myfam["family_name"] != "丐幫") &&
                        (!wizardp(ob))) {
                        remove_call_out("saying");
                        call_out("saying",2,ob);
                }
        }
}

void saying(object ob)
{
        if (!ob || environment(ob) != environment())
                return;

        message_vision("\n簡長老看了$N一眼，冷冷地說到：“洪幫主他老人家說我不該"
            "隨意責打丐幫弟子，\n你又不屬我丐幫，我打你總可以吧？”\n"
            "說完右腿一抬，$N順勢應了一招青城派的「屁股向后，平沙落雁式」"
            "－－叭嘰\n\n", ob);
        remove_call_out("kicking");
        call_out("kicking",1,ob);
        
}

void kicking(object ob)
{
        if (!ob || environment(ob) != environment())
                return;

        ob->move("/d/city/pomiao");
         message("vision","只聽“  ”地一聲，緊接著" +  ob->query("name") +
                "從小門里飛了出來，屁股上有一個清楚的鞋印。\n", environment(ob), ob);
}

void attempt_apprentice(object ob)
{
        command("say 老夫不收徒弟，" + RANK_D->query_respect(ob) + "還是請回吧。");
}

// gaibang.h for fight and get 青竹令

int accept_object(object ob, object obj)
{
        object me = this_object();

        mapping my_fam  = me->query("family");
        mapping ob_fam  = ob->query("family");

        if (!my_fam || (my_fam["family_name"] != "丐幫"))
                return notify_fail("你哪里來的青竹令？\n");

        if ( ob->query_temp("have_cloth") && present("po bu", ob) )
        {
                command("say 你不是已經有破布么?");
                return 0;
        }

        if (((ob->query("beggarlvl") == 0) &&
             (ob->query("combat_exp") <= 500)) ||
            ((ob->query("beggarlvl") == 1) &&
             (ob->query("combat_exp") <= 1000)) ||
            ((ob->query("beggarlvl") == 2) &&
             (ob->query("combat_exp") <= 3000)) ||
            ((ob->query("beggarlvl") == 3) &&
             (ob->query("combat_exp") <= 5000)) ||
            ((ob->query("beggarlvl") == 4) &&
             (ob->query("combat_exp") <= 10000)) ||
            ((ob->query("beggarlvl") == 5) &&
             (ob->query("combat_exp") <= 15000)) ||
            ((ob->query("beggarlvl") == 6) &&
             (ob->query("combat_exp") <= 20000)) ||
            ((ob->query("beggarlvl") >= 7) &&
             (ob->query("combat_exp") <= 30000)))
        {
             command("say 就你那點膿水？我看就算了吧。\n");
             return 1;
        }
        if (((ob->query("beggarlvl") == 0) &&
             (me->query("title") == "丐幫一袋弟子")) ||
            ((ob->query("beggarlvl") == 1) &&
             (me->query("title") == "丐幫二袋弟子")) ||
            ((ob->query("beggarlvl") == 2) &&
             (me->query("title") == "丐幫三袋弟子")) ||
            ((ob->query("beggarlvl") == 3) &&
             (me->query("title") == "丐幫四袋弟子")) ||
            ((ob->query("beggarlvl") == 4) &&
             (me->query("title") == "丐幫五袋弟子")) ||
            ((ob->query("beggarlvl") == 5) &&
             (me->query("title") == "丐幫六袋弟子")) ||
            ((ob->query("beggarlvl") == 6) &&
             (me->query("title") == "丐幫七袋弟子")) ||
            ((ob->query("beggarlvl") == 7) &&
             (me->query("title") == "丐幫八袋弟子")) ||
            ((ob->query("beggarlvl") == 8) &&
             (me->query("title") == "丐幫九袋長老")))
        {
          if((obj->query("id") == "qingzhu ling")
            && !ob->query_temp("have_cloth"))
          {
             ob->set_temp("fight_ok",1);
             command("say 好，既然已有青竹令，那就看你的運氣了。\n");
             remove_call_out("destroying");
             call_out("destroying", 1, me, obj);
             return 1;
          }
       }
       command("smile");
       command("say 升袋當然只升不降。跳升也是不行的。\n");
       command("say 這東西給你還是自己留著吧。\n");
       command("give " + obj->query("id") + " to " + me->query("id"));
       return 0;
}

void destroying(object me, object obj)
{
        destruct(obj);
        return;
}

int accept_fight(object ob)
{
        object me  = this_object();
        if ( !ob->query_temp("fight_ok") ) return 0;

        remove_call_out("checking");
        call_out("checking", 1, me, ob);
        ob->delete_temp("fight_ok");
        return 1;
}

int checking(object me, object ob)
{
        object obj;
        int my_max_qi, his_max_qi;

        my_max_qi  = me->query("max_qi");
        his_max_qi = ob->query("max_qi");

        if (me->is_fighting())
        {
                call_out("checking",2, me, ob);
                return 1;
        }

        if ( !present(ob, environment()) ) return 1;

        if (( (int)me->query("qi")*100 / my_max_qi) <= 50 )
        {
                command("say 大爺今天心情好，算你運氣。拿這塊破布找簡長老去 !\n");
                message_vision("$N交給$n一塊破布。\n", me, ob);
                ob->set("newtitle",me->query("title"));
                ob->set_temp("have_cloth",1);
                obj=new(__DIR__"obj/po-bu");
                obj->move(ob);
                return 1;
        }

        if (( (int)ob->query("qi")*100 / his_max_qi) < 50 )
        {
                command("say 看來" + RANK_D->query_respect(ob) +
                "想升袋？也不看看自家長了几根毛 !\n");
                return 1;
        }
        return 1;
}
#include "/kungfu/class/gaibang/gaibang.h"

