// the body of guard by row May, 1999
#include <ansi.h>
inherit M_BLOCKEXITS;
inherit PMODULES+"m_charnpc";

void answer_enter(object who);
void my_selection(string str);
void special_answer(object who, string matt);
void input_way(string str);
void consider();
void no_answer();
void catch_player();
void add_enter()
{
   string *exits;
   string p_area;
   object room;
   room=environment(this_object());
   if(!objectp(room)) { SGSYS("I have no room !!!"); return;}
   exits=room->query_exit_directions(1);

   if(member_array("enter",exits)!=-1) return; // enter is here
   p_area=room->get_area();
   room->add_exit("enter",AREA_D->get_area(p_area,"path") +
     AREA_D->get_area(p_area,"entry"));
}
private mixed handle_blocks( string dir )
{
    string p_nation,p_area,p_entry;
    object room;
    string p_id,y_nation;
    mixed cn;
    int time;
    time=time();
    room=environment(this_object());
    if(!objectp(room)) {SGSYS("I don't know where am i. "); return;}
    p_area=room->get_area();
    p_nation=AREA_D->get_area(p_area,"nation");
        p_entry=AREA_D->get_area(p_area,"path")+AREA_D->get_area(p_area,"entry");

    p_id=this_body()->query_id()[0];
    y_nation=CHAR_D->get_char(p_id,"nation");
        cn=AREA_D->get_area(p_area,"bn");
    if( !cn || !mapp(cn) ) cn = ([ ]);
        AREA_D->clear_cn(p_id);
        if( wizardp(this_body()) ){
        return 0;
        }
        if( cn[p_id] > time) return ::handle_blocks(dir);
    if(!y_nation) return 0; // no nation
    if(y_nation==p_nation) return 0;
    return ::handle_blocks(dir);        
}
void setup()
{
        object armor,cloth,weapon,xue;
    add_question("enter","enter");
    add_ask_str("enter","$N对$T一拱手，道：$s有要事在身，不知大人可否放行？\n");
    call_out("add_enter",random(10)+1);   
    add_block("enter");
    set_block_action( "$N伸手一拦：慢着，$m，你想进去还得先问问我。\n");
}
string long()
 {
    string my_area;
    string a_id;
    my_area=this_object()->get_area();
    a_id=AREA_D->get_area(my_area,"name");
    return a_id+"司隶校尉，专门负责地区的安全保卫事宜。\n"+
"他正在认真地盘查过往的一切行人。\n"+
"你若要进入，必须先问过他才行(ask guard aboutenter)。\n";
 }
 string query_title(string p_id,string c_id)
 {
    string p_nationname;
    string p_areaname;
    p_areaname=AREA_D->get_area(CHAR_D->get_char(p_id,"my_area"),"name");
    p_nationname=COUNTRY_D->get_country(AREA_D->get_area(CHAR_D->get_char(p_id,
      "my_area"),"nation"),"name");
    return ""HIC"〖"+p_nationname+"〗"HIY"◎"+p_areaname+"◎司隶校尉"NOR"(guard)";
 }
void extra_init()
 {
         add_id("guard");
 }
void do_my_speak()
{
        switch(random(5))
                {
                case 0:
                this_object()->simple_action(
                "$N用冷冷的目光注视着过往的行人，嘴里不知道在念叨什么。\n");
                break;
                case 1:
                this_object()->simple_action(
                "$N一字一句地道：你们都老实点，惹恼了我可没好果子吃。。。\n");
                break;
                case 2:
                this_object()->responda("beat");
                break;
                case 3:
                this_object()->responda("slap");
                break;
                case 4:
                this_object()->simple_action(
                "$N厉声喝道：你，给我抬起头来，干嘛鬼鬼祟祟的？！\n");
                break;
                default:
                this_object()->simple_action(
                "$N自言自语道：如果我心情好，一切都好说。。。\n");
                break;
                }
}
void my_charaction()
{
       do_my_speak();
}
void special_answer(object who, string matt)
 {
   switch(matt)   {
       case "enter" :
          answer_enter(who);
                 return;
   }
 }
 void answer_enter(object who)
 {
        string p_id,p_area, area;
        string p_entry,p_short;
    mixed cn;
        int p_lo;
        int time;
        time=time();
        p_id=who->query_id()[0];
        area = environment(this_object())->get_area();
        p_lo=CHAR_D->get_char_loyalty(p_id,AREA_D->get_area(area,"nation"));
        p_entry=AREA_D->get_area(area,"path")+AREA_D->get_area(area,"entry");
        p_short=load_object(p_entry)->short();
        cn=AREA_D->get_area(area,"bn");
    if( !cn || !mapp(cn) ) cn = ([ ]);
        AREA_D->clear_cn(p_id);
        if( wizardp(who) ){
        this_object()->simple_action("$N忙道：呀，原来是巫师大人，有请有请。\n");

        this_object()->responda("bow "+who->query_primary_id());
        this_body()->move(p_entry);
        tell_user(p_id,"你在司隶校尉的指引下，来到了"+p_short+"。\n");
        return;
        }
        if( cn[p_id] > time ) 
        {
        this_object()->targetted_action(
"$N『呛啷』一声拔出钢刀，指着$T厉声喝道：大胆$r，你已被列入黑名单。\n"+
"限你立即在我面前消失，要不然，哼哼。。。\n",who);
        return;
        }
        if( p_area == area ){
        this_object()->targetted_action("$N道：$R乃本地人士，直接进入便可。\n",who);
        return;
        }
        if(CHAR_D->get_char(p_id,"nation")==AREA_D->get_area(area,"nation"))
        {
        this_object()->targetted_action(
"$N道：你我同朝为官，不必客气，$R直接进入便可。\n",who);
        return;
        }
        if( !COUNTRY_D->nation_exist(CHAR_D->get_char(p_id,"nation")) ){
                this_object()->targetted_action(
"$N看了$T一眼：哦，$R乃是隐居贤人，自己进去吧。\n",who);
                return;
        }
        if(p_lo>39){
                this_object()->targetted_action(
"$N忙道：原来是$m$R，失敬失敬，快快请进。\n",who);
                tell_user(p_id,"你在司隶校尉的指引下，来到了"+p_short+"。\n");
                this_body()->move(p_entry);
                return;
        }
        else{
        this_object()->targetted_action(
"$N上下打量了$T一番，道：你到底想干什么？老实交代！\n",who);
        tell_user(p_id,"看来他不会轻易放你进去。\n");
        remove_call_out("my_selection");
        call_out("my_selection", 1, p_id);
        return;
        }
}
void my_selection(string str)
{
        object usr;
        usr=CHAR_D->find_char(str);
        if( !objectp(usr) ) return;
        tell_user(str,"你想采取什么对策？\n"+
"〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n"+
"  1、贿赂    2、威吓    3、劝诱    4、愚弄    5、乞求    6、放弃\n"+
"〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n"+
"请输入你的选择(1--5)：\n");
        call_out("no_answer",30);
        usr->modal_push((: input_way:),"请输入你的选择(1--5)：\n");
}
void input_way(string str)
{
        object me,usr;
        int p_chance,p_chance1,p_select,meili,wuli,zhimou,p_lo,num,p_rep;
        string p_id,p_fly,area,p_prison;
        remove_call_out("no_answer");
        if( !str || !stringp(str) )return;
        me=this_body();
        if(!objectp(me)) return;
        p_id=this_body()->query_id()[0];
        wuli=this_body()->query_sk_level("sk_wuli");
        meili=this_body()->query_sk_level("sk_meili");
        zhimou=this_body()->query_sk_level("sk_zhimou");
	p_rep=CHAR_D->get_char(p_id,"reputation");
        p_chance=random(20);
        p_chance1=random(5);
        area = environment(this_object())->get_area();
        p_lo=CHAR_D->get_char_loyalty(p_id,AREA_D->get_area(area,"nation"));
        p_fly=AREA_D->get_area(CHAR_D->get_char(p_id,"area"),"path")+
           AREA_D->get_area(CHAR_D->get_char(p_id,"area"),"fly");
        p_prison=AREA_D->get_area(CHAR_D->get_char(p_id,"area"),"path")+
           AREA_D->get_area(CHAR_D->get_char(p_id,"area"),"prison");
        usr=find_user(p_id);
        if(!objectp(usr)) return;
        switch(str){
                case "1":
                        this_body()->targetted_action(
"$N满脸堆笑地对$T道：$s甚是佩服大人的气概，这些银子。。还望笑纳。\n",this_object());
                        if(this_body()->query_all_con_money()<2500){
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N怒道：你当我是傻瓜啊，你哪里有钱！？\n",2);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N一招手，喝道：来人呐，给我把$m这个$r抓起来！\n",3);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"两边军士一拥而上，把$T捆了个结结实实，直奔大牢而去。\n",4);
                                DELAY_D->delay_simple_action(this_body(),
"等$N清醒过来的时侯，发现$n已经在大牢里了。\n",5);
                                this_body()->move(p_prison);
                                if (p_chance<3)
                                {
                                if( p_lo > 20 ){
                                        p_lo=p_lo-1;
                                        CHAR_D->set_char_loyalty(p_id,AREA_D->get_area(area,"nation"),p_lo);
                                        DELAY_D->delay_simple_action(this_body(),
"$T发现$n与"+COUNTRY_D->get_country(AREA_D->get_area(area,"nation"),"name")+
"的关系下降了一点。\n",8);

                                                }
                                return;
                                }
                                }
                        else{
                                this_body()->targetted_action(
"$N偷偷摸出二十五两银子想塞给$T。\n",this_object());
                                if (p_chance<5)
                                {
                                if ((p_chance1==1)||(p_chance1==2)||(p_chance1==3))
                                {
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N怒道：你以为我会在乎这些小钱？太小看人了！\n$N把钱扔还给$T。\n",2);
                                call_out("catch_player",2);
                                }
                                else{
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N怒道：你以为我会在乎这些小钱？太小看人了！\n$N把钱扔还给$T。\n",2);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N一招手，喝道：来人呐，给我把$m这个$r抓起来！\n",3);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"两边军士一拥而上，想要将$T捆起来。\n",4);
                                DELAY_D->delay_targetted_action(this_body(),this_object(),
"$N吓得魂不附体，夺路而出，狼狈逃回了"+COUNTRY_D->get_country(CHAR_D->get_char(p_id,
"nation"),"name")+"。\n",5);
                                this_body()->move(p_fly);
                                if( p_lo > 10 ){
                                        p_lo=p_lo-1;
                                        CHAR_D->set_char_loyalty(p_id,AREA_D->get_area(area,
"nation"),p_lo);
                                        DELAY_D->delay_simple_action(this_body(),
"$N发现$n与"+COUNTRY_D->get_country(AREA_D->get_area(area,"nation"),"name")+
"的关系下降了一点。\n",8);

                                        }
                                }
                                }
                                if ((p_chance>5)||(p_chance==5))
                                {
                             this_body()->set_all_con_money(this_body()->query_all_con_money()-2500);
                                this_object()->responda("grin");
                                if (p_lo<30){
                                p_lo=p_lo+1;
                                CHAR_D->set_char_loyalty(p_id,AREA_D->get_area(area,"nation"),p_lo);
                                DELAY_D->delay_simple_action(this_body(),"$N发现$n与"+
COUNTRY_D->get_country(AREA_D->get_area(area,"nation"),"name")+"的关系上升了一点。\n",8);
                                }
                                this_object()->simple_action(
"$N悄悄把钱收下，道：此事你知我知他不知，天知地知鬼不知，明白吗？\n");
                                call_out("consider",3);
                                }
                        }
                        break;
                case "2":
                        this_body()->simple_action(
"$N脸一沉，道：大名鼎鼎的$M你都不认识？你是混干饭吃\n的啊？！误了正事你担当得起吗？！\n");
                        if (wuli+p_chance<55){
                                if ((p_chance1==1)||(p_chance1==2)||(p_chance1==3))
                                {
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N冷笑一声：嗤，我管你是什嘛东西，今天你就别想过我这道关！\n",2);
                                call_out("catch_player",2);
                                }
                                else{
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N冷笑一声：嗤，我管你是什嘛东西，今天你就别想过我这道关！\n",2);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N一招手，喝道：来人呐，给我把$m这个$r抓起来！\n",3);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"两边军士一拥而上，想要将$T捆起来。\n",4);
                                DELAY_D->delay_targetted_action(this_body(),this_object(),
"$N吓得魂不附体，夺路而出，狼狈逃回了"+COUNTRY_D->get_country(CHAR_D->get_char(p_id,
"nation"),"name")+"。\n",5);
                                this_body()->move(p_fly);
                                if (p_lo>10){
                                        p_lo=p_lo-1;
                                        CHAR_D->set_char_loyalty(p_id,AREA_D->get_area(area,
"nation"),p_lo);
                                        DELAY_D->delay_simple_action(this_body(),
"$N发现$n与"+COUNTRY_D->get_country(AREA_D->get_area(area,"nation"),"name")+
"的关系下降了一点。\n",8);

                                }
                                }
                                }
                        else {
                                this_object()->responda("fear");
                                call_out("consider",2);
                        }
                        break;
                case "3":
                        this_body()->targetted_action(
"$N微笑着对$T道：为人应广开方便之门，今日若让$s进去，他日必有大人你的好处。\n",this_object());
                        if (meili+p_chance<55){
                                if ((p_chance1==1)||(p_chance1==2)||(p_chance1==3))
                                {
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N斜了$T一眼，干笑几声后道：就凭你？！等你给我好处大概要到猴年马月了。\n",2);
                                call_out("catch_player",2);
                                }
                                else{
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N斜了$T一眼，干笑几声后道：就凭你？！等你给我好处大概要到猴年马月了。\n",2);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N一招手，喝道：来人呐，给我把$m这个$r抓起来！\n",3);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"两边军士一拥而上，想要将$T捆起来。\n",4);
                                DELAY_D->delay_targetted_action(this_body(),this_object(),
"$N吓得魂不附体，夺路而出，狼狈逃回了"+
COUNTRY_D->get_country(CHAR_D->get_char(p_id,"nation"),"name")+"。\n",5);
                                this_body()->move(p_fly);
                                if (p_lo>10){
                                        p_lo=p_lo-1;
                                        CHAR_D->set_char_loyalty(p_id,
AREA_D->get_area(area,"nation"),p_lo);
                                        DELAY_D->delay_simple_action(this_body(),
"$N发现$n与"+COUNTRY_D->get_country(AREA_D->get_area(area,"nation"),"name")+
"的关系下降了一点。\n",8);

                                }
                                }
                        }
                        else {
                                this_object()->responda("ok");
                                call_out("consider",2);
                        }
                        break;
                case "4":
                        this_body()->targetted_action(
"$N神秘地凑过去对$T道：我是受命外出乔装刺探军情的，如今任务\n"+
"完成，快放我进去，以便向主公复命。\n",this_object());
                        if (zhimou+p_chance<55){
                                if ((p_chance1==1)||(p_chance1==2)||(p_chance1==3))
                                {
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N扫了$T几眼，冷笑道：凭你这点本事想蒙我？！再练十年吧！\n",2);
                                call_out("catch_player",2);
                                }
                                else{
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N扫了$T几眼，冷笑道：凭你这点本事想蒙我？！再练十年吧！\n",2);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N一招手，喝道：来人呐，给我把$m这个$r哄出去！\n",3);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"两边军士一拥而上，连推带搡，最后还在$T的屁屁上补了一脚。\n",4);
                                DELAY_D->delay_targetted_action(this_body(),this_object(),
"$N只觉得如腾云驾雾一般，就飞回"+
COUNTRY_D->get_country(CHAR_D->get_char(p_id,"nation"),"name")+"去了。\n",5);
                                this_body()->move(p_fly);
                                if (p_lo>10){
                                        p_lo=p_lo-1;
                                        CHAR_D->set_char_loyalty(p_id,
AREA_D->get_area(area,"nation"),p_lo);
                                        DELAY_D->delay_simple_action(this_body(),
"$N发现$n与"+COUNTRY_D->get_country(AREA_D->get_area(area,"nation"),"name")+
"的关系下降了一点。\n",8);

                                }
                                }
                        }
                        else {
                                this_object()->responda("ah");
                                call_out("consider",2);
                        }
                        break;
		case "5":
                        this_body()->targetted_action(
"$N一把抱住$T的大腿，用几乎哽咽的声音道：大人！行行好吧，$s我官低职微，仕途坎坷，默默无闻，您就帮帮忙吧。。。\n",this_object());
                        if (p_rep>1000){
			if ((p_chance1==1)||(p_chance1==2)||(p_chance1==3))
				{
				DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N诡异地一笑，道：$m，你早已声名在外，为何今日如此低声下气呢？想来必有所图。。。\n",2);
                                call_out("catch_player",2);
                                }
                                else{
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N诡异地一笑，道：$m，你早已声名在外，为何今日如此低声下气呢？想来必有所图。。。\n",2);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"$N一招手，喝道：来人呐，给我把$m这个$r哄出去！\n",3);
                                DELAY_D->delay_targetted_action(this_object(),this_body(),
"两边军士一拥而上，连推带搡，最后还在$T的屁屁上补了一脚。\n",4);
                                DELAY_D->delay_targetted_action(this_body(),this_object(),
"$N只觉得如腾云驾雾一般，就飞回"+
COUNTRY_D->get_country(CHAR_D->get_char(p_id,"nation"),"name")+"去了。\n",5);
                                this_body()->move(p_fly);
                                if (p_lo>10){
                                        p_lo=p_lo-1;
                                        CHAR_D->set_char_loyalty(p_id,
AREA_D->get_area(area,"nation"),p_lo);
                                        DELAY_D->delay_simple_action(this_body(),
"$N发现$n与"+COUNTRY_D->get_country(AREA_D->get_area(area,"nation"),"name")+
"的关系下降了一点。\n",8);

                                }
                                }
                        }
                        else {
                                this_object()->responda("comfort");
                                call_out("consider",2);
                        }
                        break;			
                default:
                        this_body()->simple_action(
"$N失望地叹了一口气，道：既然如此，就算了吧。\n");
        }
        this_body()->modal_pop();
        return;
}
void consider()
{
        string p_id,area,p_entry,p_short;
        area = environment(this_object())->get_area();
        p_entry=AREA_D->get_area(area,"path")+AREA_D->get_area(area,"entry");
        p_short=load_object(p_entry)->short();
        p_id=this_body()->query_id()[0];
        this_object()->targetted_action("$N道：既然如此，$m$R快请进吧。\n",this_body());
        tell_user(p_id,"你在司隶校尉的指引下，来到了"+p_short+"。\n");
        this_body()->move(p_entry);
        this_body()->responda("hehe");
        return;
}
void catch_player()
{
        int time;
        string p_id,p_prison,area;
        time=time();
        area = environment(this_object())->get_area();
        p_prison=AREA_D->get_area(area,"path")+AREA_D->get_area(area,"prison");
        p_id=this_body()->query_id()[0];
        DELAY_D->delay_targetted_action(this_object(),this_body(),
         "$N一招手，喝道：来人呐，给我把$m这个$r抓起来！\n",3);
        DELAY_D->delay_targetted_action(this_object(),this_body(),
         "两边军士一拥而上，把$T捆了个结结实实，直奔大牢而去。\n",4);
        DELAY_D->delay_simple_action(this_body(),
          "等$N清醒过来的时侯，发现$n已经在大牢里了。\n",5);
        CHAR_D->put_prison(p_id,4);
        return;
}
void no_answer()
{
        remove_call_out("no_answer");
        this_body()->responda("sigh");
        this_body()->simple_action("$N失望地道：既然如此，就算了吧。。。\n");
        this_body()->modal_pop();
        return;
}