示例#1
0
int play(object me, object ob, string arg)
{
        int lvl;
        int i;
        string m_name;

        if (! arg)
                return notify_fail("你要演奏什么曲子?\n");

        if (! (lvl = me->query_skill(arg, 1)))
                return notify_fail("你不会演奏这首曲子。\n");

        if (! SKILL_D(arg)->valid_enable("guzheng-jifa"))
                return notify_fail("这不能用来弹奏!\n");

        lvl += me->query_skill("guzheng-jifa", 1) / 2;
        m_name = to_chinese(arg);

        if (me->is_busy())
                return notify_fail("你现在正忙,等会儿再演奏吧。\n");

        if (lvl < 15)
        {
                message_vision(WHT "\n$N" WHT "胡乱拨了拨$n" WHT ",结果只是发"
                               "出了几下刺耳的杂音。\n" NOR, me, ob);
        } else
        if (lvl < 30)
        {
                message_vision(WHT "\n$N" WHT "拨拉了一下$n" WHT ",发出几声怪"
                               "响,难听的一塌糊涂。\n" NOR, me, ob);
        } else
        if (lvl < 60)
        {
                message_vision(WHT "\n$N" WHT "摆好$n" WHT "轻轻弹了几下,声音"
                               "还算清脆,不太难听。\n" NOR, me, ob);
        } else
        if (lvl < 90)
        {
                message_vision(HIW "\n$N" HIW "摆好$n" HIW "弹了一首" + m_name +
                               HIW ",韵律洋洋洒洒,颇为不错。\n" NOR, me, ob);
        } else
        if (lvl < 150)
        {
                message_vision(HIW "\n$N" HIW "摆好$n" HIW "弹了一首" + m_name +
                               HIW ",颇为动人,引人入胜。\n" NOR, me, ob);
        } else
        if (lvl < 225)
        {
                message_vision(HIW "\n$N" HIW "摆好$n" HIW "弹了一首" + m_name +
                               HIW ",听得众人感慨万千,甚是投入。\n" NOR, me,
                               ob);
        } else
        if (lvl < 300)
        {
                message_vision(HIC "\n$N" HIC "摆好$n" HIC "弹了一首" + m_name +
                               HIC ",琴音宛若溪水荡流,怡然陶趣,雅致万千。\n"
                               NOR, me, ob);
        } else
        {
                message_vision(HIG "\n$N" HIG "摆好$n" HIG "弹了一首" + m_name +
                               HIG ",宛若清溪流上心头,令人无酒自醉,却又似身"
                               "至仙境,心灵空明。\n" NOR, me, ob);
        }
        me->start_busy(3 + random(3));

        SKILL_D(arg)->do_effect(me);
        return 1;
}
示例#2
0
int perform(object me, object target)
{
        int damage,l_temp;
        string msg;

        int busy_time,busy_time1,pfm_time,pfm_time1;
        busy_time=3;   //perform的忙时间基数
        busy_time1=2;  //成功对手的忙时间基数
        if( !target ) target = offensive_target(me);

        if( !target || !target->is_character() || !me->is_fighting(target) )
                return notify_fail("神功伤敌只能对战斗中的对手使用。\n");

        if( objectp(me->query_temp("weapon")) )
                return notify_fail("你必须空手才能使用「九阴绝户手」!\n");  
                
        if( (int)me->query_skill("lanhua-shou", 1) < 100 )
                return notify_fail("你的兰花手不够娴熟,不会使用「九阴绝户手」。\n");

        if( (int)me->query_skill("jiuyin-xinjing", 1) < 100 )
                return notify_fail("你的九阴心经不够高,不能用「九阴绝户手」伤敌。\n");

        if( (int)me->query("force") < 500 )
                return notify_fail("你现在内力太弱,不能使出「九阴绝户手」招式。\n");

        if( (int)me->query_condition("juehu_busy"))
                 return notify_fail("你元气大伤,现在没有能力使出「九阴绝户手」招式。\n");

                        
        msg = HIB "$N默运神功,脸色白得吓人,突然使出兰花手的一记阴招「九阴绝户手」,企图当场把$n废于掌下。\n\n"NOR;

        pfm_time=(int)busy_time-(me->query("lanhua-shou",1)+me->query("jiuyin-xinjing",1))*(1+busy_time)/200*busy_time;
        pfm_time1=busy_time1+(int)(me->query("lanhua-shou",1)+me->query("jiuyin-xinjing",1))*(1+busy_time)/200*busy_time;
        if (random(me->query_skill("force")) > target->query_skill("force")/2 )
        {
                me->start_busy(pfm_time);
                target->start_busy(random(pfm_time1));
                
                damage = (int)me->query_skill("lanhua-shou", 1);
                
                damage = damage + random(damage)/2;
                
                target->receive_damage("kee", damage);

                target->receive_wound("sen", damage/2);
                target->receive_damage("kee", damage/2);
                target->receive_wound("sen", damage/3);
                me->add("force", -damage/6);
                msg += RED"结果$N一击命中,$n只感到下体一阵刺痛,体内精元不断外泄,顿时觉的四肢无力,两腿不停颤抖。\n"NOR;
                
        } else 
        {
                me->start_busy(random(pfm_time));
                l_temp=80-(int)me->query_skill("jiuyin-xinjing", 1)/10;
                me->add("force", -l_temp);
                msg += CYN"可是$p看破了$P的狠毒企图,向旁跳开数步,躲开了$P的凌厉一击!\n"NOR;
        }
        message_vision(msg, me, target);
        if (damage>200 )
         {
          me->add("sen", -damage);
//          target->apply_condition("juehu_hurt",(int)(500*target->query("age")));
          me->apply_condition("juehu_busy",(int)(100*me->query("age")));
          me->add("max_force", - (20 + random(20)));
          if (target->query("gender")== "男性")
          {
             message_vision(HIW"$N突然觉的丹田内的精元已流失迨尽,心里一阵难过,知道自己有一段时间不能行欢做乐了!\n"NOR,target);
           } else
           {if (target->query("gender")== "女性")
               message_vision(HIW"$N被你一击命中,,不禁既羞又怒,见$n竟对一女流之辈也用此阴毒招数!\n"NOR,target,me);
            else
               message_vision(HIW"$N虽然击中$n的私处,但感觉受力甚轻,似乎已无要害可言!\n"NOR,me,target);
           }
          target->kill_ob(me);
         }
        return 1;
}
示例#3
0
文件: ailao.c 项目: heypnus/xkx2001
int perform(object me, object target)
{
	object weapon;
	int i, a, ap, dp, power;

	if (!target) target=offensive_target(me);

	if (!target || !target->is_character() || !me->is_fighting(target))
		return notify_fail("你不在战斗中!\n");

	weapon=me->query_temp("weapon");

	if (!objectp(weapon) || weapon->query("skill_type") != "sword")
		return notify_fail("你手中无剑,如何使得出哀牢山剑意?\n");

	if (me->query_skill("kurong-changong", 1)<70)
		return notify_fail("你的内功火候未到,无法架御哀牢山剑意!\n");
	
	if (me->query_skill("sword", 1) < 100)
		return notify_fail("你剑法修为不够,无法施展哀牢山剑意!\n");
	
	if (me->query_skill("duanjia-jian",1)<60)
		return notify_fail("你段家剑修为不够,无法施展哀牢山剑意!\n");
	
	if( me->query_skill_mapped("force") != "kurong-changong")
		return notify_fail("你所用的内功与哀牢山剑意气路相悖!\n");

	if (me->query("neili") <= 500)
		return notify_fail("你的内力不够使用哀牢山剑意!\n");
	
	message_vision(HIR "\n突然间$N剑法突变,剑气纵横,上六剑,下六剑,前六剑,后六剑,\n\n"NOR, me, target);
	message_vision(HIR "\n左六剑,右六剑,施展哀牢山剑意对$n虚虚实实连刺了三十六剑!\n\n" NOR, me, target);

	if (me->query("combat_exp")*100/target->query("combat_exp")<120)
		a=3;
	else
	{
		if (me->query("combat_exp")*100/target->query("combat_exp")<150)
			a=4;
		else
		{
			if (me->query("combat_exp")*100/target->query("combat_exp")<180)
				a=5;
			else a=6;
		}
	}

	for (i=1; i<=a; i++)
		COMBAT_D->do_attack(me, target, weapon);

	ap = me->query_skill("force")+me->query_skill("sword")/3;
	dp = target->query_skill("force")+target->query_skill("dodge")/3;
	power =  me->query_skill("yiyang-zhi",1) + me->query_skill("duanjia-jian",1);

// 增加攻击力 消耗极大之内力
	if(random(2) == 1
		&& random(ap+dp)*100 > dp*50
		&& (int)me->query_skill("yiyang-zhi", 1) > 200 
		&& me->query("neili") >= 2000 
		&& me->query("family/family_name")=="大理段家")
	{
		message_vision(HIY "\n只见$N剑交左手,右手急运内功将一阳指力贯注在"NOR+weapon->query("name")+NOR HIY",对着$n补了一剑!\n" NOR, me, target);
		me->add_temp("apply/speed", power/3);
		me->add_temp("apply/damage", power/2);
		me->add_temp("apply/attack", power/2);
		target->add_temp("apply/defense", -power/5);
		target->add_temp("apply/dodge", -power/5);
		target->add_temp("apply/parry", -power/5);
		COMBAT_D->do_attack(me, target, weapon);
		target->add_temp("apply/defense", power/5);
		target->add_temp("apply/dodge", power/5);
		target->add_temp("apply/parry", power/5);
		me->add_temp("apply/speed", -power/3);
		me->add_temp("apply/damage", -power/2);
		me->add_temp("apply/attack", -power/2);
		me->add("neili", -500);
	}
	me->start_busy(a-random(4));
	me->add("neili", -200);
	me->add("jingli", -50);
	return 1;
}
示例#4
0
文件: hyakki.c 项目: mudchina/fy4
int perform(object me, object target)
{
        string msg;
        int extra,adjust;
        int count;
        object weapon,targetweapon;
        extra = me->query_skill("ittouryu",1);
        
        if ( extra < 150) return notify_fail("你的[一刀流剑术]还不够纯熟!\n"); 
        if( !target ) target = offensive_target(me);    
        if( !target     
        ||      !target->is_character()
        ||      !me->is_fighting(target) )
                return notify_fail("[百鬼夜狂]只能对战斗中的对手使用。\n");
//      if(me->query_temp("timer/hyakki")+60>time())
//              return notify_fail("你的杀气已尽,无法在短时间内再出这一招。\n");
        msg = HIR  "\n\n$N突然仰天长嚎,头发如钢针般根根直竖,$n依稀看到$N的瞳仁正在变成红色。
$N猛地扑向$n,发动了一刀流的最强一招-「百鬼夜狂」,将$n笼罩在一片刀光中。
" NOR;
        count=0;
        
        adjust = 440-me->query_skill("blade")>0?0:440-me->query_skill("blade");
//      message_vision("adjust is "+(string)adjust+"\n",me);    
//      me->set_temp("timer/hyakki",time());
        me->add_temp("apply/attack",adjust);
        me->add_temp("apply/damage",extra);
        msg += HIC  "百鬼袭!!" NOR;
        COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg);
        if(target->query_temp("damaged_during_attack")) count++;
        msg = HIG  "百鬼冲!!" NOR;
        COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg);
        if(target->query_temp("damaged_during_attack")) count++;
        msg = HIB  "百鬼碎!!" NOR;
        COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg);
        if(target->query_temp("damaged_during_attack")) count++;
        msg = HIY  "百鬼突!!" NOR;
        COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg);
        if(target->query_temp("damaged_during_attack")) count++;
        msg = HIM  "百鬼坠!!" NOR;
        COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg);
        if(target->query_temp("damaged_during_attack")) count++;
        msg = HIW  "百鬼斩!!" NOR;
        COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg);
        if(target->query_temp("damaged_during_attack")) count++;
        msg = HIR  "灭!!!!" NOR;
        COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg);
        if(target->query_temp("damaged_during_attack")) count++;
        msg="\n\n";
        me->add_temp("apply/damage",-extra);
        me->add_temp("apply/attack",-adjust);
        if(!count)
                msg+=HIB"$n好整以暇地闪过$N所有的攻击,冷冷地说:
“该轮到我了!”。\n"NOR;
        else if(count<4)
                msg+=HIY"突然,一蓬鲜血激射,随之$n破出刀光,捂着殷红的衣襟,
退向一侧。\n"NOR;
        else if(count<7)
                msg+=HIM"突然,一蓬鲜血激射,随之$n破出刀光,捂着殷红的衣襟,
口中撕吼着:“魑魅魍魉...”,
$N接道:“百鬼夜狂”。\n"NOR;
        else
                msg+=HIR"突然,一蓬鲜血激射,随之$N破出刀光,背对着血泊中的$n
傲慢地说道:“笑止千万!”\n"NOR;
        message_vision(msg,me,target);
        if (count>3) target->start_busy(3);
                else target->start_busy(count);
        if (count>5) me->start_busy(3);
                else me->start_busy(8-count);
        
        return 1;
}     
示例#5
0
int perform(object me, object target)
{
    	string msg;
    	int extra, hammer;
    	object weapon;
    	int busy, super;
    	
    	if( !target ) target = offensive_target(me);
		if( !target
        ||!target->is_character()
        ||!me->is_fighting(target) )
        	return notify_fail("『天雷一击』只能对战斗中的对手使用。\n");
        
    	weapon = me->query_temp("weapon");
    	extra = me->query_skill("thunderwhip",1);	// 200 *1.6
    	    	
    	if( extra <50) return notify_fail("『天雷一击』至少需要50级的天雷破!\n");

    	if( extra < 200 || me->query("class")!= "yinshi")
    	{
            me->add_temp("apply/attack", extra);
        	me->add_temp("apply/damage", extra);
        	msg = HIR"\n$N"+HIR"力灌鞭梢,手中的"+weapon->query("name")+
            		HIR""叭"的一声,象条毒龙般向$n"NOR+HIR"钻去!\n" NOR;
        	message_vision(msg,me,target);
        	COMBAT_D->do_attack(me,target, TYPE_PERFORM,"");
        	me->add_temp("apply/attack", -extra);
        	me->add_temp("apply/damage", -extra);
        	me->perform_busy(2);
    	}	
    	else	{	  		
   			
   			me->add_temp("apply/attack", extra);
        	me->add_temp("apply/damage", extra);
        	msg = HIR"\n$N"+HIR"力灌鞭梢,手中的"+weapon->query("name")+
            		HIR""叭"的一声,象条毒龙般向$n"NOR+HIR"钻去!\n" NOR;
        	message_vision(msg,me,target);
        	COMBAT_D->do_attack(me,target, TYPE_PERFORM,"");
               	
        	msg = HIR"\n$N"+HIR"急运真气,大喝一声,手中的"+weapon->query("name")+
            		HIR"夹着惊雷之势向$n"NOR+HIR"反卷而去!\n" NOR;
        	message_vision(msg,me,target);
        	COMBAT_D->do_attack(me,target, TYPE_PERFORM,"");
        	me->add_temp("apply/attack", -extra);
        	me->add_temp("apply/damage", -extra);
        	
	    	busy = 2;
	    	super = me->query_skill("flying-dragon",1);
	    	if (super >=100) {
	    		super = (super-100)/10;
				if (random(100)<super && me->query_temp("yl9x_times") < 2 )	{
					me->add_temp("yl9x_times",1);
					message_vision(WHT"$N一口真气吐出,身法竟然丝毫不显迟滞。\n"NOR, me);
					busy = 0;
				} else {
					me->set_temp("yl9x_times",0);
				}
			}

        	me->perform_busy(busy);
   		}
	return 1;
}
示例#6
0
int cast(object me, object target)
{
   string msg;
   int success, ap, dp;

   if( (string)me->query("class") != "yaomo" )
     return notify_fail("只有妖魔才能施展天魔解体大法。\n");

   if( !target ) target = offensive_target(me);

   if( !target
   || !target->is_character()
   || target->is_corpse()
   || target==me)
     return notify_fail("你要对谁施展天魔解体大法?\n");

   if((int)me->query("mana") < 100 || (int)me->query("max_mana") < 100 )
     return notify_fail("你的法力不够,不能有效施展天魔解体大法!\n");

   if((int)me->query("force") < 50 || (int)me->query("max_force") < 50 )
     return notify_fail("你的内力不够,不能有效施展天魔解体大法!\n");

   if((int)me->query("sen") < 100 || (int)me->query("sen") < (int)me->query("max_sen")/2 )
     return notify_fail("你无法集中精力施展天魔解体大法!\n");

   if( (int)me->query("combat_exp") < (int)target->query("combat_exp")/10  )
     return notify_fail("对方比你强太多了,还是别送死吧!\n");
   //here, we do not allow that a too weak player trys this on 
   //a much stronger player. this is to prevent statistically possible 
   //but unreasonable results from happenning. 

   if( random(me->query("max_mana")) < 50 ) {
     write("你失败了!\n");
     return 1;
   }

   msg = HIC
"$N口中念了几句咒文,双手捧住脑袋,仰天发出一声悲嘶!\n\n忽然间$N将自己舌头狠命一咬,一道血雾向$n喷了过去!\n" NOR;

   success = 1;
   ap = me->query_skill("spells");
   ap = ap * ap * ap /10 ;
   ap += (int)me->query("combat_exp");
   ap = 4*ap; //this is for 拼命 so easier.
   dp = target->query("combat_exp");
   if( random(ap + dp) < dp ) success = 0;
//here we compared exp and spells level. 
//note: has nothing to do with target's spells level.

   ap = (int)me->query("max_mana");
   dp = (int)target->query("max_mana");
   if( ap < random(dp) ) success = 0;
//here we compared max_mana.
//if the attacher has half of the max_mana of the target, 
//he has 50% chance to kill his target, which is reasonable.

   if(success == 1 ){//now both die.
     msg +=  HIR "结果$n被血雾罩住,顿时发出一声惨叫!\n而$N也身子一瘫,倒在地上。\n" NOR;
     message_vision(msg, me, target);

     target->kill_ob(me);
     me->kill_ob(target);
     //to produce killing messages.

     me->add("max_mana", -100);
     me->add("max_force", -50);
     me->save();
     //successed, attacker lost 100 max_fali and 50 max_neili.
     
     target->receive_wound("sen", (int)target->query("max_sen")+1, me);
     target->receive_wound("kee", (int)target->query("max_kee")+1, me);
     COMBAT_D->report_status(target);
     //target die here.

     me->receive_wound("sen", (int)me->query("max_sen")+1, target);
     me->receive_wound("kee", (int)me->query("max_kee")+1, target);
     COMBAT_D->report_status(me);
     //attacker die here.

   }
       
   else {
     msg +=  HIR "结果血雾被$n法力反激,反而罩住了$N!\n$N长叹一声,身子一瘫,倒在地上。\n" NOR;
     message_vision(msg, me, target);

     target->kill_ob(me);
     me->kill_ob(target);
     //to produce killing messages.

     me->add("max_mana", -50);
     me->add("max_force", -25);
     me->save();
     //failed, attacker lost 50 max_fali and 25 max_neili.
     
     me->receive_wound("sen", (int)me->query("max_sen")+1, target);
     me->receive_wound("kee", (int)me->query("max_kee")+1, target);
     COMBAT_D->report_status(me);
     //attacker die here.
   } 

   return 3+random(5);
}
示例#7
0
文件: qixing.c 项目: aricxu/xkx100
int main(object me, string arg)
{
	string msg, enemy, ob1, ob2, ob3, ob4, ob5, ob6;
	string myname=me->query("name");
	object en, obj1, obj2, obj3, obj4, obj5, obj6, *obs;
	int i, j, power;
	if( environment(me)->query("no_fight") )
		return notify_fail("这里不准战斗。\n");
	if( !arg )
	{
		return notify_fail("启动天罡北斗阵必须指定组阵阵友和对手。\n");
	}
	if(sscanf(arg, "%s %s %s %s %s %s %s",enemy,ob1,ob2,ob3,ob4,ob5,ob6)!=7)
	{
		return notify_fail("指令格式:qixing 敌手 阵友1 阵友2 阵友3 阵友4 阵友5 阵友6\n");
	}

	if(!objectp( en= present(enemy, environment(me))))
		return notify_fail("没有敌人啊?\n");
	if(!en->is_character() )
		return notify_fail("看清楚一点,那并不是生物。\n");
	if( en->is_fighting() )
		return notify_fail("人家已经在战斗中了,还想布阵?\n");
	if( !living(en) || en->query_temp("noliving") )
		return notify_fail(en->name()+"都已倒地了,还用得着围攻吗?\n");
	if((int)en->query("age") <= 15 && userp(en))
		return notify_fail("为了世界更美好,放过小孩子吧。\n");
	if(en==me) return notify_fail("干掉自己?别这么想不开。\n");

	if(!objectp( obj1 = present(ob1, environment(me))))
		return notify_fail("你好象阵友没指定对吧?\n");
	if(!objectp( obj2 = present(ob2, environment(me))))
		return notify_fail("你好象阵友没指定对吧?\n");
	if(!objectp( obj3 = present(ob3, environment(me))))
		return notify_fail("你好象阵友没指定对吧?\n");
	if(!objectp( obj4 = present(ob4, environment(me))))
		return notify_fail("你好象阵友没指定对吧?\n");
	if(!objectp( obj5 = present(ob5, environment(me))))
		return notify_fail("你好象阵友没指定对吧?\n");
	if(!objectp( obj6 = present(ob6, environment(me))))
		return notify_fail("你好象阵友没指定对吧?\n");
	if(en==obj1 || en==obj2 || en==obj3 || en==obj4 || en==obj5 || en==obj6 || en==me || obj1==obj2 || obj1==obj3 || obj1==obj4 || obj1==obj5 || obj1==obj6 || obj1==me || obj2==obj3 || obj2==obj4 || obj2==obj5 || obj2==obj6 || obj2==me || obj3==obj4 || obj3==obj5 || obj3==obj6 || obj3==me || obj4==obj5 || obj4==obj6 || obj4==me || obj5==obj6 || obj5==me || obj6==me)
		return notify_fail("阵列摆设不对。\n");
	me->dismiss_team();
	me->set_leader();
	me->add_team_member(obj1);
	me->add_team_member(obj2);
	me->add_team_member(obj3);
	me->add_team_member(obj4);
	me->add_team_member(obj5);
	me->add_team_member(obj6);

	if(pointerp(obs=me->query_team()) )
	{
		for(i=0;i<sizeof(obs);i++)
		{
			if(!obs[i]->is_character() )
return notify_fail(obs[i]->query("name")+"不是生物。\n");
			if( obs[i]->is_fighting() )
return notify_fail(obs[i]->query("name")+"已在战斗中了。\n");
			if( !living(obs[i]) || obs[i]->query_temp("noliving") )
return notify_fail(obs[i]->name()+"已倒在地上了,无法追随你。\n");
			if((int)obs[i]->query("age") <= 15 && userp(obs[i]))
return notify_fail(obs[i]->query("name")+"人家还小,放弃吧。\n");
			if((int)obs[i]->query_skill("array",1) <= 50 ||
			  (int)obs[i]->query_skill("xiantian-qigong",1) <= 50 ||
			  (int)obs[i]->query_skill("quanzhen-jian",1) <= 50)
return notify_fail(obs[i]->query("name")+"的技能不足布阵。\n");
		}

		if(sizeof(obs) != 7)
			return notify_fail("布阵人数不足。\n");

	}

	for(i=0;i<sizeof(obs);i++)
	{
		if(obs[i] != me)
			message_vision(myname+ "道:"+obs[i]->query("name")+"请做好准备!\n",me);
	}
	message_vision(myname+ "清了清喉咙,大声说道:好,时辰已到,现在开始启动「天罡北斗阵」!\n",me);
	message_vision(myname+ "突然身形移动,发动众全真弟子抢占位置,左边四人,右边三人,正是摆的「天罡北斗阵」阵法。\n",me);
	remove_call_out("do_qixing");
	call_out("do_qixing", 1, me, en);
	return 1;
}
示例#8
0
文件: hui.c 项目: mudchina/nitan3
int perform(object me, object target)
{
        object weapon;
        string wn, msg;
        object sroom, room;
        int ap, dp, damage;

        if (userp(me) && ! me->query("can_perform/lunhui-jian/hui"))
                return notify_fail("你所使用的外功中没有这种功能。\n");

        if (! target) target = offensive_target(me);

        if (! target || ! me->is_fighting(target))
                return notify_fail(HUI "只能对战斗中的对手使用。\n");

        if (! objectp(weapon = me->query_temp("weapon"))
           || (string)weapon->query("skill_type") != "sword")
                return notify_fail("你使用的武器不对,难以施展" HUI "。\n");

        if ((int)me->query_skill("force") < 750)
                return notify_fail("你的内功修为不够,难以施展" HUI "。\n");

        if ((int)me->query("max_neili") < 10000)
                return notify_fail("你的内力修为不够,难以施展" HUI "。\n");

        if ((int)me->query_skill("buddhism", 1) < 500)
                return notify_fail("你对禅宗心法参悟不够,难以施展" HUI "。\n");

        if ((int)me->query_skill("lunhui-jian", 1) < 500)
                return notify_fail("你释迦轮回剑火候不够,难以施展" HUI "。\n");

        if (me->query_skill_mapped("sword") != "lunhui-jian")
                return notify_fail("你没有激发释迦轮回剑,难以施展" HUI "。\n");

        if ((int)me->query("neili") < 1000)
                return notify_fail("你现在真气不够,难以施展" HUI "。\n");

        if (! living(target))
                return notify_fail("对方都已经这样了,用不着这么费力吧?\n");

        wn = weapon->name();

        message_combatd(HIW "$N" HIW "面露拈花之意,祭起手中" + wn +
                        HIW ",霎时碧波流转,华光万丈,说不尽的祥和。"
                        "\n" NOR, me, target);

        //  记录下最初的房间
        if (! objectp(sroom = environment(me)))
                return 1;

        ap = me->query_skill("sword") +
             me->query_skill("buddhism", 1);

        dp = target->query_skill("parry") +
             target->query_skill("buddhism", 1);

        damage = ap + random(ap);

        // 六道轮回之人间道
        room = find_object("/d/special/liudaolunhui/rendao");
        if (! room) room = load_object("/d/special/liudaolunhui/rendao");

        me->move(room);
        target->move(room);

        message_vision(HIY "\n$N" HIY "左手轻轻一拨,右手所持的" + wn +
                       HIY "叮呤做响,剑姿说不出的潇洒妙曼。\n" NOR, me, target);

        if (ap / 2 + random(ap) > dp)
        {
                msg = COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 300,
                                           (: attack1, me, target, damage :));
        } else
示例#9
0
int valid_leave(object me, string dir)
{
	int dam_gin,dam_sen,dam_kee;
        dam_gin = me->query("max_gin")/6;
        dam_sen = me->query("max_sen")/6;
        dam_kee = me->query("max_kee")/6;
	
	if( userp(me) && dir == "up" )
	{
	    if ( me->query_skill("dodge",1) < 100 ) {
	        	if ((int)me->query("kee") <= 50) {
	        		message_vision("山冰如镜,狂风似刀,惊魂未定之间,$N但觉脚下一空,摔了下来......\n\n",me);
	        		me->unconcious();
	        	}
	        	else {
	        		me->start_busy(5);
	        		me->receive_damage("kee",50);
	        		me->set_temp("last_damage_from","在喜马拉亚峰失足落下,尸骨无存。\n");
	          		message_vision("山冰如镜,狂风似刀,$N只觉脚下无根,立足不稳......\n\n",me);
	          	}
	          	return notify_fail("\n");
	    }
		else {
	            switch ( random(18) ) {
	            	case 1:		
				if ((int)me->query("gin") < dam_gin || (int)me->query("kee") < dam_kee || (int)me->query("sen") < dam_sen) {
					message_vision(HIW"$N突然觉得脚下流冰浮动,四处哗哗作响,脚底一滑,竟已仰天摔了下去。\n"NOR,me);
					me->unconcious();
				}
				else {
					me->receive_damage("gin", dam_gin);
					me->receive_damage("kee", dam_kee);
					me->receive_damage("sen", dam_sen);
					me->set_temp("last_damage_from","在喜马拉亚峰失足落下,尸骨无存。\n");
					message_vision(HIW"$N突然觉得脚底一滑,竟仰天摔了一跤。\n"NOR,me);
				}
				return notify_fail("\n");
				break;
			case 2:
	    			message_vision(HIW"骤然之间,无数巨大的冰柱冰岩,在狂风中呼啸,炸裂,铺天盖地向$N头顶上砸来。。。\n\n"NOR,me);
				if ( random(2) )
				{
	        		message_vision(HIW"一块巨大无匹的冰石从天而降,砸向$N的额角,“轰。。。”\n"NOR,me);
					me->unconcious();
				}
				else
				{
	        		message_vision(HIW"$N全身紧贴在岩石下,紧紧抓着凸出来的冰笋,终于躲过冰块,却不由得惊出一身冷汗!\n\n"NOR,me);
				}
				return notify_fail("\n");
				break;
			case 3:
	    		message_vision(HIW"募地“轰隆”一声巨响,山摇地晃,闷雷阵阵,山崩了!\n\n"NOR,me);
				me->unconcious();
				return notify_fail("\n");
				break;
			case 4:
	    		message_vision(HIW"远处隐隐传来轰轰巨响,响声愈来愈近,愈来愈猛,转瞬之间竟\n然是一个愈来愈大的雪球从山上滚下!\n\n"NOR,me);
	   			message_vision(HIW"\n$N躲避不及,被大雪球紧紧的压在下边!\n\n"NOR,me);
	    		if( me->query_kar()<12 )
				{
					message_vision(HIW"$N浑身被压在冰块之中,血液都已被冻僵,眼前只是白芒芒的一片....\n\n"NOR,me);
					me->set_temp("last_damage_from","在喜马拉亚峰遭遇雪崩,尸骨无存。\n");
					me->die();
				}
	    			else if ( me->query_kar()<16)
				{
					message_vision(HIW"$N气若游丝,渐渐奈不住稀薄的空气,神智逐渐模糊起来....\n\n"NOR,me);
					me->unconcious();
				}
				else
				{
					message_vision(HIW"$N咬紧牙关,用尽全力往雪堆外挤,一寸,两寸......\n终于$N从雪堆里摇摇晃晃爬了出来......\n\n"NOR,me);
					me->start_busy(3);
				}
				return notify_fail("\n");
				break;
			}	
		}
	}
	return 1;
}
示例#10
0
void do_fkill(object me,object target)
{
      object env, weapon;
      object *inv;
      int i, bel;
      if(!me || !target) return ;
      bel=(int)me->query("bellicosity");
// 由于现在能赌杀气又杀手赌杀气输还能用 cmd bc 所以
// 杀手杀气都能赌无限且只要杀气超过10万以上都有必杀
// 能力故设限  By Swy
      if( bel > 30000 ) bel=30000;
if( me->is_fighting(target) )
{
  if ( bel < 20 ) { 
       tell_object(me,HIY"你的杀气不够喔!\n"NOR);
       return 0; }
  if ( me->query("force") < 20 ) {
        tell_object(me,HIY"你的内力不够喔!\n"NOR);
       return 0;   }
  if ( me->is_busy() ) {
       tell_object(me,HIY"你的还没有准备好做下一波的刺杀。\n"NOR);
      return 0; }

   if(target !=me )
   {
     message_vision(HIM+"\n$N拿匕首,见人就刺。\n"+NOR,me,target);
     if (  random(10) > 2 ) {
   switch(random(3))
    {
      case 0:
     message_vision(HIW+"$N对着$n疯狂的大叫~杀杀杀~,连续往$n身上乱刺去。\n"+NOR,me,target);
          target->receive_wound("kee", bel/25 );
          me->add("force",-20);
      break;
      case 1:
    message_vision(HIW+"$N大喝一声~杀ㄚ~对$n快速冲过去,胡乱地对$n刺了几下。\n"+NOR,me,target);
          target->receive_wound("kee", bel/20 );
          me->add("force",-20);
      break; 
      case 2:
    message_vision(HIW+"$N眼露凶光,猛地对准$n直戳过去,口中还~哈哈~大笑着。\n"+NOR,me,target);
          target->receive_wound("kee", bel/15 );
          me->add("force",-20);
      break;
     }
    COMBAT_D->report_status(target);
    me->start_busy(random(3)); 
   }
  else {
    message_vision(HIW+"\n$n侧身一躲,$N的刺杀被$n闪过了。\n"+NOR,me,target);
         me->add("force",-20);
         inv = all_inventory(environment(target));

       for(i=0;i<sizeof(inv);i++)
       {
      if(inv[i]->is_character() && inv[i]!=target && inv[i]!= me 
         && !inv[i]->is_corpse() && inv[i]->query("id")!=me->query("sub_id")
         && inv[i]->query("sub_id")!=me->query("id")  )
          {
            if(random(2)==0)
            {
               target = inv[i];
    message_vision(HIC+"$N刺中了在旁边观看热闹的的$n。\n"+NOR,me,target);
    message_vision(HIC+"$n告诉$N说道: 可恶! 竟敢打我,我要你出代价。\n"+NOR,me,target);
         target->receive_wound("kee", bel/25 );
         target->fight_ob(me);
            }
          }
       }
    }
  }
}
        if(!target) return ;
      if ( (int)target->query("kee") < 0  )
      target->die();
}
示例#11
0
void do_kill(object me,object target)
{
      object env, weapon;
      object *inv;
      int i;
if(!me || !target) return ;
if( !me->is_fighting() && target->query("kee") > 0 ) {     
   if( !me->query_temp("invis") ) {
       tell_object(me,HIY"你没藏匿起来,会被发现的。\n"NOR);
       return 0;    } 
   if (me->query("max_sen")!=me->query("sen")  ) {
      tell_object(me,HIY"你没有足够的神,去做再一次的刺杀。\n"NOR);
      return 0;    }
       
    if(target !=me )
   {
      message_vision(HIC+"$N偷偷摸摸地走到$n背后。\n"+NOR,me,target); 
  if(random(10) > 2)
    {
       switch(random(3))
       {
         case 0:
      message_vision(HIW+"\n$N以极快的速度,瞄准$n用力一刺,使$n受到极大的伤害。\n"+NOR,me,target);     
             target->receive_wound("kee", (int)target->query("max_kee")*20/100);
         break;
         case 1:
      message_vision(HIW+"\n$N对着$n的背部狠狠一捅,使$n血流不止。\n"+NOR,me,target);
             target->receive_wound("kee", (int)target->query("max_kee")*15/100);
         break;
         case 2:
     message_vision(HIW+"\n$N无声无息的以暗器手法,把匕首往$n身上一扔,使$n受到极大的打击。\n"+NOR,me,target);
             target->receive_wound("kee", (int)target->query("max_kee")*25/100);
        break;
       }
    message_vision(HIR+"\n$n见身上插着$N的匕首,忿怒地想杀死$N。\n"+NOR,me,target);

    // 双手武器  以副为先
      if (weapon=me->query_temp("secondary_weapon"))           
      { weapon=me->query_temp("secondary_weapon"); }
      else { 
      weapon=me->query_temp("weapon"); 
            }

      weapon->unequip();
      weapon->move(target);

    //改变名字 
      if ( weapon->query("BAK")!="USED" ) {
       weapon->set("name","染血的"+weapon->name()+"");   }

    //每用一次 武器就变坏       
      if ( weapon->query("weapon_prop/damage") >= 3 )
      { weapon->add("weapon_prop/damage", -3 ); }
      else { 
       weapon->set("value", 0 );
       weapon->set("no_sell",1);
       weapon->set("weapon_prop", 0); 
      }
 
      weapon->set("BAK","USED");
      me->reset_action();
      me->kill_ob(target); 
      target->kill_ob(me);
      me->delete_temp("invis");
      me->receive_damage("sen", (int)me->query("sen")/10  );
      target->apply_condition("bleeding",random(10)+1);
    }
   else {
      message_vision(HIW+"\n$n突然发现了$N的存在,使$N找不到下手的机会。\n"+NOR,me,target);
      me->add("sen",-10);
      me->delete_temp("invis");
        }
     }
  }
}
示例#12
0
int perform(object me, object target)
{
        int ap,dp,damage,chance;
        string msg;
        object weapon;
                
        if( !target ) target = offensive_target(me);

        if( !target
        ||      !target->is_character()
        ||      target->is_corpse()
        ||      target==me)
                return notify_fail("你要对谁施展「断水无痕」?\n");

        if(!me->is_fighting())
                return notify_fail("「断水无痕」只能在战斗中使用!\n");
        if(me->query("family/family_name")!="蜀山剑派")
                return notify_fail("不是蜀山的不能用「断水无痕」!\n");
                if(me->query("shushan/duanshui_master")!=1)
                return notify_fail("你还没领会「断水无痕」!\n");

        if((int)me->query("max_force") < 500 )
                return notify_fail("你的内力不够!\n");

   if((int)me->query("force") < 500 )
     return notify_fail("你的内力不足!\n");

        if((int)me->query("sen") < 300 )
                return notify_fail("你的精神不足,没法子施用外功!\n");

        if((int)me->query_skill("shushan-jianfa", 1) < 100)
                return notify_fail("你的蜀山剑法修为还不够,使用这一招会有困难!\n");


        msg = CYN"\n$N手腕晃动如疾风,以砍断三千尺飞流的速度,直逼$n!\n"NOR;
        ap = me->query_skill("sword");
        ap = ap*ap*ap / 20;
        dp = target->query("combat_exp"); 
        chance = (int)(random( ap + dp ) / dp * 100);
        if (target->is_busy()) chance *= 3;
        if( chance > 40 ) {
                damage = me->query_skill("sword") * 2 + me->query("force_factor");
                if (damage > 800) damage = 750+random(75);
                target->receive_damage("kee",damage);
                target->receive_wound("kee",damage/3);
target->start_busy(random(1)+1);
                msg += CYN"结果$n被$N的「断水无痕」拦腰而过!\n"NOR;
        }
        
        else 
                msg += "但是被$n躲开了。\n"NOR;
        message_vision(msg, me, target);
        if( damage > 0 ) COMBAT_D->report_status(target);
   
        if( !target->is_fighting(me) ) {
                if( living(target) ) {
                        if( userp(target) ) target->fight_ob(me);
                        else target->kill_ob(me);
                }
        }
        me->add("force",-200-me->query("force_factor"));
        me->start_busy(3);
        return 1;
}
示例#13
0
文件: qisuck.c 项目: gongfuPanada/jy
int exert(object me, object target)
{
	int sp, dp;

       if ( target == me ) target = offensive_target(me);
	if( !objectp(target) || target->query("id") == "mu ren" )
		return notify_fail("你要吸取谁的真气?\n");


	if ( me->query_temp("sucked") )
		return notify_fail("你刚刚吸取过真气!\n");

	if( objectp(me->query_temp("weapon")) )
		return notify_fail("你必须空手才能施用化功大法吸人真气!\n");

//        if( !me->is_fighting() || !target->is_fighting())

	if( (int)me->query_skill("huagong-dafa",1) < 30 )
		return notify_fail("你的化功大法功力不够,不能吸取对方的真气。\n");

	if( (int)me->query("neili",1) < 10 )
		return notify_fail("你的内力不够,不能使用化功大法。\n");

        if( (int)target->query("qi") < 30 )
		return notify_fail( target->name() +
			"已经真气涣散,你已经无法从他体内吸取真气了!\n");

	message_vision(
		HIR "$N突然诡异的一笑,双手一扬,拇指对准$n的掌心按了过来!\n\n" NOR,
		me, target );

        if ( living(target) )
           { if( !target->is_killing(me) ) target->kill_ob(me); }

        sp = me->query_skill("force") + me->query_skill("dodge") + me->query_skill("zhaixinggong",1)/2;
        dp = target->query_skill("force") + target->query_skill("dodge");

	me->set_temp("sucked", 1);		

        if (( random(sp) > random(dp) ) || !living(target) )
	{
		tell_object(target, HIR "你突然觉得全身真气自手掌奔涌而出,四肢无力,再也使不出劲来!\n" NOR);
		tell_object(me, HIG "你觉得" + target->name() + "的真气自手掌源源不绝地流了进来。\n" NOR);

		target->receive_damage("qi", (int)me->query_skill("huagong-dafa", 1) );
		me->add("qi", (int)me->query_skill("huagong-dafa", 1) );
		me->add("eff_qi", (int)(me->query_skill("huagong-dafa", 1)*2/3) );
            if ( me->query("eff_qi") > me->query("max_qi") )
                 me->set("eff_qi", me->query("max_qi"));

		if( target->query("combat_exp") >= me->query("combat_exp") )
			me->add("combat_exp",1);

                me->start_busy(2);
                target->start_busy(random(2));
		me->add("neili", -5);

		call_out("del_sucked", 2, me);
	}
	else
	{	
		message_vision(HIY "可是$p看破了$P的企图,机灵地闪了开去。\n" NOR, me, target);
                me->start_busy(2);
		call_out("del_sucked", 4, me);
	}

	return 1;
}
示例#14
0
void attempt_apprentice(object me)
{
      	message_vision(CYN"$N冷冷地看了$n一眼,一语不发。\n"NOR, this_object(), me);
      	return;	
}
示例#15
0
文件: niutou.c 项目: mudchina/fy2
int accept_object(object who, object ob)
{
		message_vision("$N对$n怪叫一声:在阳间做亏心事了吧!\n",this_object(),who);
		return 1;
}
示例#16
0
文件: recruit.c 项目: cosin/XYJ
int main(object me, string arg)
{
	object ob, old_rec;
	mapping family;
	int i;

	if( !arg ) return notify_fail("指令格式:recruit [cancel]|<对象>\n");

	if( arg=="cancel" ) {
		old_rec = me->query_temp("pending/recruit");
		if( !objectp(old_rec) )
			return notify_fail("你现在并没有收录任何人为弟子的意思。\n");
		write("你改变主意不想收" + old_rec->name() + "为弟子了。\n");
		tell_object(old_rec, me->name() + "改变主意不想收你为弟子了。\n");
		me->delete_temp("pending/recruit");
		return 1;
	}

	if( !(ob = present(arg, environment(me))) )
		return notify_fail("你想收谁作弟子?\n");

	if( ob==me ) return notify_fail("收自己为弟子?好主意...不过没有用。\n");

	if( ob->is_apprentice_of(me) ) {
		message_vision("$N拍拍$n的头,说道:「好徒儿!」\n", me, ob);
		return 1;
	}

	if( !me->query("family") )
		return notify_fail("你并不属于任何门派,你必须先加入一个门派,或自己创一个才能收徒。\n");

	if (!me->query("family/generation"))
		return notify_fail("你乃弃徒,先求哪一位本门师父将你重列门墙再说吧。\n");
	if ( (ob->query("family")) && (me->query("family/family_name") != ob->query("family/family_name")) )
		return notify_fail(ob->name()+"乃"+ob->query("family/family_name") +"弟子,未经其师尊同意就挖人家墙角不太好吧。\n\n");
	if (me->query("family/master_id") == ob->query("id"))
		return notify_fail("开什么玩笑?人家是你师父,还有什么要从你这里学的?\n");

        if ( userp(me) && userp(ob) && (wizardp(me) != wizardp(ob)) ) 
                return notify_fail("巫师玩家之间不能有师徒关系。\n");
/*
	if( ob->query("family")){
	if ((int)me->query("family/generation") >= (int)ob->query("family/generation"))
		return notify_fail("你只能收辈份比你低的同门派弟子为徒。\n");
	}
*/
	// If the target is willing to apprentice us already, we do it.
	if( (object)ob->query_temp("pending/apprentice") == me ) {

		if( !living(ob) ) {
			message_vision(
				"$N决定收$n为弟子。\n\n"
				"不过看样子$n显然没有办法行拜师之礼。\n\n",
				me, ob);
			return 1;
		}
	// follow modified by elon 09-10-95 to fix a bug in 1st time recruit
		if((ob->query("family")) && ( (string)me->query("family/family_name") != (string)ob->query("family/family_name") ) ) {
			message_vision(
				"$N决定投入$n门下!!\n\n"
				"$N跪了下来向$n恭恭敬敬地磕了四个响头,叫道:「师父!」\n\n",
				ob, me);
			ob->set("score", 0);
			ob->add("betrayer", 1);
		} else
			message_vision(
				"$N决定收$n为弟子。\n\n"
				"$n跪了下来向$N恭恭敬敬地磕了四个响头,叫道:「师父!」\n",
				me, ob);

		me->recruit_apprentice(ob);
		ob->delete_temp("pending/apprentice");

		write("恭喜你新收了一名弟子!\n");
		family = ob->query("family");
		tell_object( ob, sprintf("恭喜您成为%s的第%s代弟子。\n", family["family_name"],
			chinese_number(family["generation"]) ));

		return 1;
	

	} else {

		old_rec = me->query_temp("pending/recruit");
		if( ob==old_rec )
			return notify_fail("你想收" + ob->name() + "为弟子,但是对方还没有答应。\n");
		else if( objectp(old_rec) ) {
			write("你改变主意不想收" + old_rec->name() + "为弟子了。\n");
			tell_object(old_rec, me->name() + "改变主意不想收你为弟子了。\n");
		}

		me->set_temp("pending/recruit", ob );
		message_vision("\n$N想要收$n为弟子。\n", me, ob);
		tell_object(ob, YEL "如果你愿意拜" + me->name() + "为师父,用 apprentice 指令。\n" NOR);
		return 1;
	}
}
示例#17
0
int main(object me, string arg)
{
	object ob, old_app;
	mapping family, skills;
	int i;
	string *skname;

	if( !arg ) return notify_fail("指令格式:apprentice [cancel]|<对象>\n");

	if( arg=="cancel" ) {
		old_app = me->query_temp("pending/apprentice");
		if( !objectp(old_app) )
			return notify_fail("你现在并没有拜任何人为师的意思。\n");
		write("你改变主意不想拜" + old_app->name() + "为师了。\n");
		tell_object(old_app, me->name() + "改变主意不想拜你为师了。\n");
		me->delete_temp("pending/apprentice");
		return 1;
	}

	if( !(ob = present(arg, environment(me)))
	||	!ob->is_character() )
		return notify_fail("你想拜谁为师?\n");

	if( !living(ob) ) return notify_fail("你必须先把" + ob->name() + "弄醒。\n");

	if( ob==me ) return notify_fail("拜自己为师?好主意...不过没有用。\n");

	if( me->is_apprentice_of(ob) ) {
		message_vision("$N恭恭敬敬地向$n磕头请安,叫道:「师父!」\n", me, ob);
		return 1;
	}

	if( !mapp( ob->query("family") ) )
		return notify_fail(ob->name() + "既不属于任何门派,也没有开山立派,不能拜师。\n");

	if ( (me->query("family")) && (me->query("family/family_name") != ob->query("family/family_name")) )
		return notify_fail(ob->name()+"是"+ob->query("family/family_name")+"师傅,未经本派师门同意不能改换门派!\n\n");

	if (ob->query("family/master_id") == me->query("id"))
		return notify_fail("开什么玩笑?拜自己的徒弟为师?\n");

 if ( userp(me) && userp(ob) && (wizardp(me) != wizardp(ob)) )
  return notify_fail("巫师玩家之间不能有师徒关系。\n");
/*
	if( me->query("family") ){
	if((int)ob->query("family/generation") >= (int)me->query("family/generation") )
		return notify_fail("你只能拜比自己辈份高的人为师。\n");
	}
*/
	// If the target is willing to recruit us already, we do it.
	if( (object)ob->query_temp("pending/recruit") == me ) {

		if( (string)me->query("family/family_name") != (string)ob->query("family/family_name") ) {
			message_vision(
				"$N决定投入$n门下!!\n\n"
				"$N跪了下来向$n恭恭敬敬地磕了四个响头,叫道:「师父!」\n\n",
				me, ob);
			me->set("score", 0);
			me->add("betrayer", 1);
		} else
			message_vision(
				"$N决定拜$n为师。\n\n"
				"$N跪了下来向$n恭恭敬敬地磕了四个响头,叫道:「师父!」\n\n",
				me, ob);

		ob->recruit_apprentice(me);
		ob->delete_temp("pending/recruit");

		tell_object(ob, "恭喜你新收了一名弟子!\n");
		family = me->query("family");
		printf("恭喜您成为%s的第%s代弟子。\n", me->query("family/family_name"),
			chinese_number( me->query("family/generation")));

		return 1;
	
	} else {

		old_app = me->query_temp("pending/apprentice");
		if( ob==old_app )
			return notify_fail("你想拜" + ob->name() + "为师,但是对方还没有答应。\n");
		else if( objectp(old_app) ) {
			write("你改变主意不想拜" + old_app->name() + "为师了。\n");
			tell_object(old_app, me->name() + "改变主意不想拜你为师了。\n");
		}

		message_vision("$N想要拜$n为师。\n", me, ob);
		me->set_temp("pending/apprentice", ob );
		if( userp(ob) ) {
			tell_object(ob, YEL "如果你愿意收" + me->name() + "为弟子,用 recruit 指令。\n" NOR);
		} else 
			ob->attempt_apprentice(me);
	
		return 1;
	}
}
示例#18
0
int fliping(object me)
{
        me->move(__DIR__"west_garden.c");
        message_vision("$N用手一撑墙头儿,轻巧的跳了过来。\n", me);
        return 1;
}
示例#19
0
文件: juanbi.c 项目: jackfnx/xyj-ali
int cast(object me, object target)
{
    string msg;
    int ap, dp, dg, damage;

    if (!target) target = offensive_target(me);
    if (!target
    ||  !target->is_character()
    ||  target->is_corpse()
    ||  target==me)
        return notify_fail("你要对谁用扭转乾坤?\n");
    if (!me->query("cast_juanbi"))
        return notify_fail("「扭转乾坤」是白象小王的绝活,没有他的亲传谁也用不了!\n");
    if (!target->is_fighting(me))
        return notify_fail("只有在战斗中才能使用扭转乾坤!\n");
    if ((int)me->query("kee") < 100)
        return notify_fail("你体力不足,用不了扭转乾坤!\n");
    if ((int)me->query("force") < 100)
        return notify_fail("你须运足内力才能使用扭转乾坤!\n");
    if ((int)me->query_skill("dengxian-dafa", 1) < 40)
        return notify_fail("你的登仙大法还不够纯熟。\n");
    if ((int)me->query("mana") < 300)
        return notify_fail("你的法力不足以变作神象伤敌!\n");

    if (me->query("cast_juanbi") > 0)
        msg = HIW"\n$N趁$n不备,怒吼一声,转瞬间化作一只黄牙老象,"
                +"伸出蛟龙般的鼻子向$n卷去!\n" NOR;
    else // cast_juanbi == -1, it's baixiang-xiaow himself
        msg = HIW"\n$N趁$n不备,怒吼一声,现出白色巨象的原形,"
                +"伸出蛟龙般的鼻子向$n卷去!\n" NOR;

    ap = (int)me->query_skill("spells");

    dp = target->query_skill("spells");
    dg = target->query_skill("dodge");
    if (dp!=0) dp=100*ap/dp/3+random(100*ap/dp)/2; else dp=100;
    if (dg!=0) dg=100*ap/dg/3+random(100*ap/dg)/2; else dg=100;

    damage = me->query("max_mana")/20+1;
    damage = (me->query("mana_factor")+me->query("str")+random(damage))*2;
    if (dp < 30) {
        msg += HIW"不料$n早有准备,扭转身形轻舒猿臂一把抓住了$N的鼻子!\n"
                +"$N疼得一声闷哼,身不由己的被$n拖了过去!\n"NOR;
        message_vision(msg, me, target);
        me->add("kee", me->query("str") * 2);
        me->start_busy(30-dp+random(10));
    } else if (dp<60 && dp>30) {
        msg += HIW"$n连忙扭转身形运转神功将$N的长鼻荡开。\n"NOR;
        message_vision(msg, me, target);
        me->start_busy(1+random(2));
    } else if (dg<50) {
        msg += HIW"$n纵身向后一跃,闪过了这一击。\n"NOR;
        message_vision(msg, me, target);
        me->start_busy(1+random(2));
        target->start_busy(random(3));
    } else {
        msg += HIW"$n促不击防,被$N的长鼻高高卷起,$N用力一甩,"
                +"$n如断了线的风筝般飞了出去!\n"NOR;
        message_vision(msg, me, target);
        target->receive_damage("kee",damage,me);
        me->start_busy(random(2));
        target->start_busy(1+random(3));
        COMBAT_D->report_status(target); 
    }

    me->add("force", -30);
    me->add("mana", -30);

    target->kill_ob(me);
    return 1;
}
示例#20
0
文件: sing2.c 项目: heypnus/xkx2001
int exert(object me, object target)
{
	object obj, weapon;
	int ap, dp; 

        seteuid(getuid());

        if( userp(me) )
                return notify_fail("it is only for npcs.\n");
        if( me->is_busy() )
                return notify_fail("you are busy now.\n");

	if( !objectp(weapon = me->query_temp("weapon"))
        ||  (string)weapon->query("id") != "lubo" )
                return notify_fail("��δִ���������������󳪡�\n");

	if( !objectp(obj = present("kulou guan", me))
        ||  !obj->query("equipped") )
		return notify_fail("��δ�����ùڣ����������󳪡�\n");

	if( !objectp(obj = present("rentou lian", me))
        ||  !obj->query("equipped") )
                return notify_fail("��δ����ͷ�������������󳪡�\n");

	if( !living(target) )
                return notify_fail("�����һ�㣬�Dz����ǻ��\n");

	if( target->query("race") != "����" )
		return notify_fail(target->query("name") + "������������\n");

	if( (int)me->query("neili") < 300 )
		return notify_fail("�������������\n");

	if( (int)me->query_skill("necromancy", 1) < 30 )
                return notify_fail("��Ľ���������������\n");

	if( (int)me->query_skill("lamaism", 1) < 30 )
                return notify_fail("��������ķ�����������\n");

	if( (int)me->query_skill("longxiang-banruo", 1) < 30 )
		return notify_fail("����������������������\n");

	if( environment(me)->query("no_fight") )
		return notify_fail("�����ﲻ�ܳ���\n");

	if( target->query_temp("cursed", 1) || target->query_temp("block_msg/all", 1))
		return notify_fail("�����ѱ�������\n");

	if( (int)me->query_temp("curser") ) 
                return notify_fail("�㽵������һ���ˣ�\n");

	me->add("neili", -50);
	me->receive_damage("jingli", 50);

	message_vision(
		BLU "$Nҡͷ���ԣ����б��д�˷𾭣����������������䡣���������ٴ죬�����з����������ɡ�\n" NOR, me);

	tell_object(target,  "�����������ȹ�޻��������Դ���һ�����ң���ǰһ�ѹ�Ӱ��������������������֫��������Ȼ��˯��\n");
		
	ap = (int)me->query("neili") + (int)me->query("max_neili") +
             (int)me->query_skill("necromancy", 1) * 10 +
             (int)me->query_skill("lamaism", 1) * 10;
	dp = (int)target->query_skill("force") * 10;

	ap *= (int)me->query("combat_exp")/1000 + 1;
        dp *= (int)target->query("combat_exp")/1000 + 1;

        if( random(ap + dp) > dp ) {
		tell_object(target, HIR"\n��ֻ������ǰ��һ����������Զȥ����Ļ�����Ҫ���ϣ������������ס�\n"NOR);

                target->start_busy(2 + random(2));
		target->set_temp("cursed", 1);
                target->set_temp("yield", 1);
	    //  target->set_temp("block_msg/all", 1);
		me->set_temp("curser", 1);

		message_vision(HIR"\n$NͻȻ��ʼ���۷�ֱ������������ǰ����\n"NOR, target);

                remove_call_out("del_sung");
                call_out("del_sung", 3 + random(3), me, target);
	} else{
	        me->start_busy(1 + random(3));
	        if( !target->is_killing(me->query("id")) ) 
                        target->kill_ob(me);
	}

        return 1;
}
示例#21
0
void start_zhuochan (object who, int i)
{
  message_vision ("\n$N念道:"+msgs[i]+"\n",who); 
  message_vision ("\n片刻,$N开始低首坐禅。\n",who); 
  who->set_temp("obstacle/biqiu_zuochan",i+1);
}
示例#22
0
int perform(object me, object target)
{
	string msg;
	int myexp,yourexp,lvl,extra, mod, x;

	if (userp(me))
	if (me->query("class")!= "shaolin" && me->query("class")!="bonze")
		return notify_fail("『千手千变』是佛门武功。\n");
	
	extra=me->query_skill("dabei-strike",1);		
	if(extra<20)
		return notify_fail("『千手千变』需要20级的大慈大悲千叶式。\n");

	if( !target ) target = offensive_target(me);
	if( !target
	||	!target->is_character()
	||	!me->is_fighting(target) )
		return notify_fail("『千手千变』只能对战斗中的对手使用。\n");
		
	if ((target->query("boss") || target->query("big_boss"))&& me->query("class")!="shaolin")
		return notify_fail(HIW"此人功力深湛,不会被此手法迷惑的。\n"NOR);
		
	mod = COMBAT_D->can_busy(me, target, "dabei-strike");	
	if (!mod)
		return notify_fail(HIW"此人功力深湛,不会被此手法迷惑的。\n"NOR);
			
	if(target->is_busy())
		return notify_fail(target->name()+"已经手忙脚乱了!\n");
			
	myexp = (int) me->query("combat_exp");
	yourexp = (int) target->query("combat_exp")* mod/10;

// 	(180/2+1.2x180)	= 306/40+1 = 8
	lvl = (int) me->query_skill("unarmed") / 40 + 1;

	// 兴国的BUSY效率不高
	if (lvl > 5 && me->query("class")=="bonze")	lvl = 5;
			
	msg = HBRED+HIW "$N"HIW"使出大悲千叶掌法中的『千手千变』,幻出无数掌影击向$n!" NOR;
			
	if (COMBAT_D->do_busy_attack(me, target, "dabei-strike", "unarmed", lvl* 100, mod)) 
	{
		message_vision(msg + "\n", me, target);
		msg = YEL"结果$n被$N攻了个手忙脚乱!\n"NOR;
		message_vision(msg, me, target);
		target->force_busy(2);
		target->set_temp("busy_timer/dabei-strike",time());
		me->perform_busy(1);
	}
	else
	{
		me->add_temp("apply/attack",extra/2);
		COMBAT_D->do_attack(me,target, TYPE_PERFORM,msg);
		me->add_temp("apply/attack",-extra/2);
		me->perform_busy(2);
	}
	
	// INherently, Every busy has 4*level hate, unarmed makes it 10x you/target level every 2 turn.
	if (target && !userp(target)){
		x = me->query("combat_exp")> target->query("combat_exp") 
			? target->query("combat_exp"): me->query("combat_exp");
		target->add_hate(me, F_LEVEL->get_level(x)*6);
	}
	
	return 1;
}
示例#23
0
文件: mist.c 项目: jackfnx/xyj-ali
int cast(object me, object target)
{
    string msg;
    int damage, ap, dp;

    if (!target) target = offensive_target(me);
    if (!target
    ||  !target->is_character()
    ||  target->is_corpse()
    ||  target==me)
        return notify_fail(HIR "你要对谁使用黑雾?\n" NOR);
    if ((int)me->query_skill("necromancy", 1) < 30)
        return notify_fail("你的勾魂术火候不够,哪里用得出这招!\n");
    if ((int)me->query("mana") < 40 + (int)me->query("mana_factor"))
        return notify_fail("你的法力不够!\n");
    if ((int)me->query("force") < 200)
        return notify_fail("你的内力不够,无法喷出黑雾。\n");
    if ((int)me->query("sen") < 40)
        return notify_fail("你现在神智不清,别把自己迷倒了!\n");

    me->add("mana", -50-(int)me->query("mana_factor"));
    me->add("force", -150);
    me->receive_damage("sen", 50);

    if (random(me->query("max_mana")) < 150) {
        write("这一次好象不灵。\n");
        return 1;
    }

    msg = HIG "$N突然腾空而起,口中高呼念念有词,张口喷出黑雾将$n团团围住!\n" NOR;

    ap = me->query_skill("spells");
    ap = (ap * ap * ap / (4 * 400)) * (int)me->query("sen");
    ap += (int)me->query("combat_exp");
    dp = target->query("combat_exp");
    if (random(ap + dp) > dp) {
        damage = (int)me->query("max_mana") / 10 + random((int)me->query("eff_sen") / 10);
        damage -= (int)target->query("max_mana") / 10 + random((int)me->query("eff_sen") / 5);
        damage += (int)me->query("mana_factor") - random((int)target->query("mana_factor"));
        //here we can see if 2 players are at same status, the attacker has higher chance.
        if (damage > 0) {
            //finally damage also depends on enabled spells level.
            damage += damage+random((damage*(int)me->query_skill("spells"))/240);
            msg += HIM "结果$n分不清东西了!\n" NOR;
            target->receive_damage("sen", damage, me);
            target->receive_wound("sen", damage*2, me);
            target->receive_damage("kee", damage*2, me);
            target->receive_wound("kee", damage*3, me);
            target->start_busy(1);
            me->improve_skill("necromancy", 1, 1);
            me->start_busy(2);
        } else {
            //here, cast failed and the target's mana_factor will be added to the previous 
            //damage to hurt yourself:(...note, damage<0.
            msg += HIC "结果黑雾$n以法力一逼,反向$N回卷而去!\n" NOR;
            damage -= (int)target->query("mana_factor");
            damage -= random((-damage*(int)target->query_skill("spells"))/100);
            me->receive_damage("sen", -damage, target);
            me->receive_wound("sen", -damage*2, target);
            me->receive_damage("kee", -damage, target);
            me->receive_wound("kee", -damage*3, target);
        //  me->improve_skill("necromancy", 1, 1);
        }
    } else
        msg += "但是被$n躲开了。\n";

    message_vision(msg, me, target);
    if (damage > 0) COMBAT_D->report_status(target);
    else if (damage < 0) COMBAT_D->report_status(me);
    //damage=0 corresponding to "但是被$n躲开了。\n"--no report.   

    if (!target->is_fighting(me)) {
        if (living(target)) {
            if (userp(target)) target->fight_ob(me);
            else target->kill_ob(me);
        }
        me->kill_ob(target);
    }

    me->start_busy(1+random(2));
    return 3+random(5);
}
示例#24
0
文件: huakai.c 项目: heypnus/xkx2001
int perform(object me, object target)
{
	object ob;
	string msg;
	int skill;
	
	        if (! wizardp(me)) 
                return notify_fail("目前这功能还不开放!\n");

	if( !target ) target = offensive_target(me);
	if( !target
        ||      !target->is_character()
        ||      !me->is_fighting(target) )
                return notify_fail("花开并蒂只能带动战斗中的对手。\n");
                
        if( me->query_temp("yield") )
                return notify_fail("你不出掌,怎么能出「花开并蒂」?\n");
        
        if( objectp(ob = me->query_temp("double_huakai")) )
	{
                if( ob->is_fighting(me) )
                	return notify_fail("你已经在出「花开并蒂」了。\n");
        }
        
        if( (int)me->query_temp("huakai"))
        	return notify_fail("你已经在出「花开并蒂」了。\n");
        	
        if( (int)me->query_skill("mian-zhang", 1) < 99)
        	return notify_fail("你的绵掌不够纯熟,尚未能出此绝招。\n");
        
        if( (int)me->query_skill("taiji-shengong", 1) < 79)
        	return notify_fail("你的太极神功修为不够,不能出「花开并蒂」。\n");
        	
        if( (int)me->query("jiali") > 2 || (int)me->query("jiajin") > 2)
        	return notify_fail("你发现加力后无法把绵掌中若有若无,借力打力的要决发挥出来。\n");
                
        msg = HIM "\n$N深深吸了一口气,一招「花开并蒂」左手挥掌猛击$n的右颊,右手出指疾点$n的“缺盆穴”。\n"NOR;
        
        me->add("neili", -30 +random(-20));
        me->add("jingli", -15 +random(-15));
        
	
        if( random(me->query("combat_exp") * me->query_int() / 100) 
		> (int)target->query("combat_exp") * target->query_int() / 300 )
        {
		me->start_busy(2);
		me->set_temp("huakai", 1);
		call_out("huakai", 1, me, target);
	}
	else
	{
		msg += YEL"可是$p已看破此招,不慌不忙的避开了。\n"NOR;
		me->start_busy(1+random(3));
		}
	
		message_vision(msg, me, target);
	
	return 1;
	

}	
示例#25
0
文件: fen2.c 项目: heypnus/xkx2001
int perform(object me, object target)
{
	object armor;
	int damage;
	string *limb, type, result, str;

	type = "内伤";

	if( !target ) target = offensive_target(me);

	if( !target
	||	!target->is_character()
	||	!me->is_fighting(target) )
		return notify_fail("你不在战斗中。\n");

	if ( objectp(me->query_temp("weapon")) )
		return notify_fail("你不是空手。\n");

/*
	if( target->is_busy() )
		return notify_fail(target->name() + "目前正自顾不暇,放胆攻击吧。\n");
*/
	
	if( (int)me->query_skill("huoyan-dao", 1) < 120 )
		return notify_fail("你的火焰刀修为不够。\n");

	if ( me->query_skill_mapped("force") != "xiaowuxiang"
	&& me->query_skill_mapped("force") != "longxiang-banruo")
                return notify_fail("你所用内功不对!\n");

	if( me->query("neili") <= 500 )
                return notify_fail("你的内力不够!\n");

	if( me->query("jingli") <= 150 )
                return notify_fail("你的精力不够!\n");

	message_vision(HIR "$N长吸一口气,身上衣衫缓缓涨起,两掌变得通红,射出一股灼人热气。$n的身影被笼罩在一团火焰之中。\n\n" NOR, me,target);
	//tell_object(target, BLU "你只觉一股热浪扑面,霍的胸口一阵剧痛。\n"NOR);
	me->add("neili", -100);
	me->add("jingli", -100);

	if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/2){ 
		if( target->query_temp("armor/cloth")){
		armor = target->query_temp("armor/cloth");
		if( armor->query("armor_prop/armor") < 150){
		message_vision(HIY"只见$N身上的$n"+HIY+"已被震得粉碎,变成一块块破布掉在地上。\n"NOR, target, armor);
		armor->unequip();
                armor->move(environment(target));
                armor->set("name", "破碎的" + armor->query("name"));	
		armor->set("value", 0);
                armor->set("armor_prop/armor", 0);
                target->reset_action();
		}
	}
		damage = random((int)me->query_skill("strike"))*5;
                target->receive_damage("qi", damage,  me); 
		target->receive_wound("qi", (int)me->query_skill("huoyan-dao", 1), me);
		target->start_busy(1+random(3));
		
	limb = target->query("limbs");
   	result = COMBAT_D->damage_msg(damage, type);
   	result = replace_string( result, "$l", limb[random(sizeof(limb))]);
   	result = replace_string( result, "$p", target->name() );
   	message_vision(result, me, target);

   	str = COMBAT_D->status_msg((int)target->query("qi") * 100 /(int)target->query("max_qi"));
   	message_vision("($N"+str+")\n", target);
	}

	else 
	{
	message_vision(HIY "$p赶紧向後跃开数丈,躲开$P的攻击。\n" NOR, me, target);
	}
	me->start_busy(1+random(3));
	return 1;
}
示例#26
0
文件: guanfuzi.c 项目: aricxu/xkx100
void die()
{
	message_vision("\n$N大怒道:“你敢砍老子!兄弟们会替我报仇的!”说完倒地死了。\n", this_object());
	::die();
}
示例#27
0
文件: zhen.c 项目: huangleon/fy2005
int perform(object me, object target)
{
        string msg;
        int level,extra,kee,i;
        if( !target ) target = offensive_target(me);
        if( !target
        ||      !target->is_character()
        ||      !me->is_fighting(target) )
                return notify_fail("[棉里藏针]只能对战斗中的对手使用。\n");
        level = (int)me->query_skill("unarmed");
        extra = (int)me->query("wudang/level");
        extra = (extra >=2000)? 2000:extra;
        if(!me->query("wudang/zhen")){ 
                me->add_temp("apply/attack",extra/20);
                COMBAT_D->do_attack(me,target,TYPE_PERFORM, 0);
                me->add_temp("apply/attack",-extra/20);
                me->start_busy(1);
                if (me->query("wudang/level") < 3000){
                        me->add("wudang/level",1);
                        if ((int)me->query("wudang/level")%100==0)
                                tell_object(me, HIW "由於你勤习棉里藏针,你的熟练度提高了。\n" NOR);
                }
                else if (me->query("family/master_id") == "master shi"){
                        me->set("wudang/zhen",1);
                        tell_object(me, HIW "由於你勤习棉里藏针,你悟出了新的变化!\n" NOR);
                        me->set("wudang/level",0);
                }
                return 1;
        }else {
                if ( me->query_skill_mapped("force") != "taijiforce")
                        return notify_fail("棉里藏针必须和太极心法配和!\n");
                me->add_temp("apply/damage",level/10);
                me->add_temp("apply/attack",level/20);
                kee = target->query("kee");
                msg = HIR "\n$N"+HIR"双手猛然一抖一拢,一股气劲向$n"+HIR"撞到!" NOR;
                COMBAT_D->do_attack(me,target,TYPE_PERFORM,msg);
                me->add_temp("apply/damage",- level/10);
                me->add_temp("apply/attack",- level/20);
                msg =  HIW "气劲呼的一声,散开消失...\n" NOR;
                message_vision(msg, me, target);
                for (i=0; i< (int)level/50 ;i++){
                        if( (int)target->query("kee") < kee ) { 
                                if (level>300){
                                        msg = HIY"$N"+HIY"一击命中,双手顺势向外一拨,引开了$n"+HIY"的守势!\n"NOR;
                                        message_vision(msg, me, target);
                                        target->start_busy(1);
                                        me->start_busy(1);
                                        call_out("nextattack",1,me,target);
                                        break;
                                }else{
                                        msg = HIY"$N"+HIY"一击命中,但$n"+HIY"立刻将自己护住!\n"NOR;
                                        message_vision(msg, me, target);
                                        me->start_busy(2);
                                        break;
                                }
                        }else {
                                kee = target->query("kee");
                                msg = HIY"$N"+HIY"双手一翻一抖,一股气劲又向$n"+HIY"撞到!" NOR;
                                me->add_temp("apply/damage",level/10);
                                me->add_temp("apply/attack",level/20);
                                COMBAT_D->do_attack(me,target,TYPE_PERFORM,msg);
                                me->add_temp("apply/damage",- level/10);
                                me->add_temp("apply/attack",- level/20);
                                msg =  HIW "气劲呼的一声,散开消失...\n" NOR;
                                message_vision(msg, me, target);
                        }
                }
                if (i == (int)level/50 ){
                        message_vision(HIY"$N"+HIY"一招"+chinese_number(i)+"式居然全部未中,立刻露出破绽。\n"NOR,me);
                        me->start_busy(5);
                }
                return 1;
        }
}
示例#28
0
文件: luoying.c 项目: heypnus/xkx2001
int perform(object me, object target)
{
	object weapon;
	int speed, damage, hand;

	weapon = me->query_temp("weapon");

	if( !target && me->is_fighting() ) target = offensive_target(me);

	if( !target
	||  !target->is_character()
	||  !me->is_fighting(target) )
		return notify_fail("落英神剑掌和兰花拂穴手的搭配攻击只能对战斗中的对手使用。\n");
	if( me->query("gender") != "女性")
		return notify_fail("你不是女儿身,跟这一招的优雅姿态有点格格不入。\n");

	if( objectp(weapon))
		return notify_fail("你必需先放下武器。\n");

	if( me->query_temp("luoying_lanhua") )
		return notify_fail("你已经使出了落英神剑掌和兰花拂穴手的搭配攻击!\n");
	
	if( me->query_skill("lanhua-fuxue",1) < 90 )
		return notify_fail("你的兰花拂穴手修为不足。\n");

	if( me->query_skill("luoying-shenjian",1) < 90 )
		return notify_fail("你的落英神剑掌修为不足。\n");

	if( me->query_skill("bitao-xuangong", 1) < 100 )
		return notify_fail("你的碧涛玄功修为不足,无法同时施展落英神剑掌和兰花拂穴手!\n");

	if( me->query_skill_mapped("force") != "bitao-xuangong")
		return notify_fail("你必需先运使碧涛玄功!\n");
	if( me->query_skill_mapped("strike") != "luoying-shenjian")
		return notify_fail("你所施展的掌法并非落英神剑掌,如何能与兰花拂穴手搭配?\n");

	if( me->query("max_neili") <= 1000 )
		return notify_fail("你的内力修为不足!\n");

	if( me->query("neili") <= 400 )
		return notify_fail("你的内力不够!\n");

	if( me->query("jingli") <= 400 )
		return notify_fail("你的精力不够!\n");

	damage = (me->query_skill("lanhua-fuxue",1) + me->query_skill("luoying-shenjian",1))/6;
	hand = (me->query_skill("hand",1)+me->query_skill("strike",1) )/6;
	speed = (me->query_skill("hand",1)+me->query_skill("strike",1) )/200;
	me->add("neili", -80);
	me->add("jingli", -80);

	
	//命中率增加
	me->add_temp("apply/speed", speed);
	me->add_temp("apply/attack", damage);
	me->add_temp("apply/damage", damage/2);

	me->set_temp("luoying_lanhua", 1); 	

	message_vision(HIY"\n$N突然变招,使出「落英神剑掌」来,掌影飘忽於四方八面,或五虚一实,或八虚一实,真如桃林中狂风忽起、万花齐落一般,妙在姿态飘逸,宛若翩翩起舞。\n"NOR, me,target);

	if(me->is_fighting(target) ){
	COMBAT_D->do_attack(me, target, me->query_temp("weapon"));
	}

	message_vision(HIC"\n但见$N指化为掌,掌化为指,「落英神剑掌」与「兰花拂穴手」交互为用,当真是掌来时如落英缤纷,指拂处若春兰葳蕤,不但招招凌厉,而且丰姿端丽。\n"NOR, me,target);

	if(me->is_fighting(target) ){
	COMBAT_D->do_attack(me, target, me->query_temp("weapon"));
	}

	me->set_temp("fuxue", 1); 
	me->start_busy(1);

	call_out("checking", 1, me, weapon,speed,damage);

	return 1;
}
示例#29
0
文件: duanyun.c 项目: heypnus/xkx2001
int duo2(object me, object target){
	
	int amount1, amount2;

	if( !target || !me->is_fighting(target) ) return;

        if( !living(me) || me->is_ghost() ) return;

        if( !target || environment(me) != environment(target) || !me->is_fighting() ) return;

	if((me->query("neili")<(me->query_skill("force",1)*15) || target->query("neili")<(target->query_skill("force",1)*15))){

		if(me->query("neili")>target->query("neili")){
		
			message_vision(HIG"\n$N运足了气力,猛地将"+me->query_temp("weapon")->query("name")+HIG"夺回,顺手就是一招,向$n击去。"NOR,me,target);

			me->add("jiali", me->query_skill("whip",1));
			me->add_temp("apply/attack",me->query_skill("whip",1));
			me->add_temp("apply/damage",me->query_skill("whip",1));
		
			COMBAT_D->do_attack(me, target, me->query_temp("weapon"));
	
			//printf("\n");
					
			me->add("jiali", -me->query_skill("whip",1));
			me->add_temp("apply/attack",-me->query_skill("whip",1));
			me->add_temp("apply/damage",-me->query_skill("whip",1));
		
			target->start_busy(random(3));
		
		} else {
	
			message_vision(HIG"\n$n运足了气力,猛地将$N手中的"+me->query_temp("weapon")->query("name")+HIG"拉得脱手而出,掉在了地上。\n"NOR,me,target);

			me->query_temp("weapon")->move(environment(me));
		
			me->start_busy(2+random(3));
		}
	
	} else {
		
		message_vision(WHT"\n只见$N和$n运足了内力用力回夺,两人的衣服在内力鼓荡下如遇骤风。\n"NOR, me, target);
		
		amount1=me->query_skill("force",1);
		amount2=target->query_skill("force",1);
		
		if(random(amount1)>random(amount2)){
			message_vision(YEL"\n只见$n身子一晃,似乎有些支持不住。\n"NOR, me, target);
			target->add("neili",-amount1);
		} else {
		
			message_vision(YEL"\n只见$N身子一晃,似乎有些支持不住。\n"NOR, me, target);
			me->add("neili",-amount2);
		}
		me->add("neili", -50);
		target->add("neili", -50);
		
		me->start_busy(4);
		target->start_busy(4);
		
		remove_call_out("duo2");
 		call_out("duo2", 3, me, target);        
 		        
 		return 1;
	}

	remove_call_out("duo2");
	return 1;
}
示例#30
0
void leave_room()
{
	message_vision(HIW"仿佛在白雪红梅间渐渐融化了一个淡淡的影子,白衣如雪的身影消失在视野中。 \n"NOR,this_object());
	destruct(this_object());
}