// fast_man.c by konn

#include <ansi.h>
inherit NPC;

void create()
{
        set_name("一刀见血", ({"fast-dest man", "man"}));
        set("long", "他是无影狂刀斩的负责人\n");

        set("title", "无影狂刀斩\n");

        set("no_kill", 1);
        setup();
}

object *fast = ({});
object *blademan = ({});

int fast_dest(object me)
{
        object *enemy;
        int i;

        set_heart_beat(1);
        enemy = me->query_enemy();
        for(i=0; i<sizeof(enemy); i++) {
           enemy[i]->set_temp("fast-blade", me->query("id"));
           fast += ({ enemy[i] });
        }
        blademan += ({ me });
        return 1;
}

void heart_beat()
{
        object me, enem, mee;
	object *user;
        int i, j, k, gin, kee, sen, flag;
 	object hazel = find_player("hazel");

        set_heart_beat(1);
        for(i=0; i<sizeof(blademan); i++) {
           mee = blademan[i];
	   user = users();
           flag = 0;
	   for(k=0; k<sizeof(user); k++)
              if( me->query("id") == user[k]->query("id") )
	          flag++;
	   if( flag ) 
               if( mee->query_temp("fast/time") > 50 ) {
                   mee->delete_temp("fast/time");
                   blademan -= ({ blademan[i] });
               }
               else {
                  if( !(mee->query_temp("fast/time")) )
                      mee->set_temp("fast/time", 1);
                  else mee->add_temp("fast/time", 1);
               }
	   else blademan -= ({ blademan[k] });
        }

        for(i=0; i<sizeof(fast); i++) {
	    user = users();
	    flag = 0;
            if( enem = fast[i] ) {
               for(j=0; j<sizeof(blademan); j++) 
                 if( enem->query_temp("fast-blade") == blademan[j]->query("id") ) {
                     me = blademan[j];
	             break;
                 } 

	       for(k=0; k<sizeof(user); k++) 
	       	   if( me->query("id") == user[k]->query("id") ) 
                       flag++;

	       tell_object(hazel, sprintf("%d\n", flag));
               if( flag ) {
                  if( enem->query_temp("damage/time") > 8 ) {
                      enem->delete_temp("damage/time");
                      enem->delete_temp("fast-blade");
                      fast -= ({ fast[i] });
                  }
                  else {
                     if( !(enem->query_temp("damage/time")) )
                         enem->set_temp("damage/time", 1);
                     else enem->add_temp("damage/time", 1);
                  } 

                  message_vision(HIC "$N使出幔罗千叶刀法的精华 --- 无影狂刀斩, "+
                                     "偷偷的向$n砍了一刀。\n" NOR, me, enem);
                  if( environment(me) != environment(enem) )
                      tell_object(enem,
                                  sprintf(HIC "%s使出幔罗千叶刀法的精华 --- "+
                                  "无影狂刀斩, 偷偷的向你砍了过来。\n" NOR,
                                  me->name()));
                  if( random(me->query_skill("fast-blade", 1)) >
                      random(enem->query_skill("move"))/2 ) {
                      message_vision(HIR "$n闪躲不及, 被$N的无影狂刀斩砍了一"+
                                         "个大伤口, 血流如注。\n" NOR,
                                         me, enem);
                      if( environment(me) != environment(enem) )
                          tell_object(enem,
                                      sprintf(HIR "你闪躲不及, 被%s的无影狂"+
                                      "刀斩砍了一个大伤口, 血流如注。\n" NOR,
                                      me->name()));
                      kee = enem->query("kee");
                      enem->add("kee", (int) - kee/4);
                      kee = enem->query("eff_kee");
                      enem->add("eff_kee", (int) - kee/4);
                      sen = enem->query("sen");
                      enem->add("sen", (int) - sen/2);
                      gin = enem->query("gin");
                      enem->add("gin", (int) - gin/2);
                      COMBAT_D->report_status(enem);
                  }
                  else {
                      message_vision(HIG "$n巧妙的闪过了$N的无影狂刀斩。\n" NOR,
                                     me, enem);
                      if( environment(me) != environment(enem) )
                          tell_object(enem,
                                      sprintf(HIG "你巧妙的闪过了%s的无影狂刀斩。\n" NOR,
                                      me->name()));
                  }
               } else blademan -= ({ blademan[j] }); 
	    } else fast -= ({ fast[i] });
        }
}
