Example #1
0
int exert(object me, object target)
{
        string force;

        if (userp(me) && ! me->query("can_exert/yijin-duangu/heal"))
                return notify_fail("你所学的内功中没有这种功能。\n");

        if (! target)
                return notify_fail("你要用真气为谁疗伤?\n");

        if (target == me)
                return notify_fail(HEAL "只能对别人施展。\n");

        if (me->is_fighting() || target->is_fighting())
                return notify_fail("战斗中无法运功疗伤。\n");

        if (target->query("not_living"))
                return notify_fail("你无法给" + target->name() + "疗伤。\n");

        if ((int)me->query_skill("yijin-duangu", 1) < 100)
                return notify_fail("你的易筋锻骨不够娴熟,难以施展" HEAL "。\n");

        if (me->query_skill_mapped("force") != "yijin-duangu")
                return notify_fail("你没有激发易筋锻骨,难以施展" HEAL "。\n");
                
        if ((int)me->query("max_neili") < 1500)
                return notify_fail("你的内力修为太浅,难以施展" HEAL "。\n");

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

        if ((int)me->query("jing") < 100)
                return notify_fail("你现在的状态不佳,难以施展" HEAL "。\n");

        if (target->query("eff_qi") >= target->query("max_qi") &&
            target->query("eff_jing") >= target->query("max_jing"))
                return notify_fail("对方没有受伤,不需要接受治疗。\n");

        message_sort(HIY "\n只见$N" HIY "默默运转" + to_chinese(force) +
                     HIY ",深深吸进一口气,头上隐隐冒出白雾,陡然施展开"
                     "易筋锻骨,以纯阴内力瞬时点遍了$n" HIY "全身七十二"
                     "处大穴。过得一会,便见得$n" HIY "“哇”的一下吐出"
                     "几口瘀血,脸色登时看起来红润多了。\n" NOR, me, target);

        me->add("neili", -800);
        me->receive_damage("qi", 100);
        me->receive_damage("jing", 50);

        target->receive_curing("qi", 100 + (int)me->query_skill("force") +
                                     (int)me->query_skill("yijin-duangu", 1) * 3);

        if (target->query("qi") <= 0)
                target->set("qi", 1);

        target->receive_curing("jing", 100 + (int)me->query_skill("force") / 3 +
                                       (int)me->query_skill("yijin-duangu", 1));

        if (target->query("jing") <= 0)
                target->set("jing", 1);

        if ((int)target->query_condition("hamagong_poison"))
        {
                target->clear_condition("hamagong_poison");
                tell_object(target, HIC "\n你只觉体内残存的蛤蟆功伤慢慢"
                                    "消退,感觉好多了。\n" NOR);
        }

        if (! living(target))
                target->revive();

        if (! target->is_busy())
                target->stary_busy(2);

        message_vision("\n$N闭目冥坐,开始运功调息。\n", me);
        me->start_busy(10);
        return 1;
}
Example #2
0
int kee_out(object me,object target)
{
    int mkilluse,cor,maxskee;
    int magic_lv,makee_lv;
    int sha_lv,rain_lv;
    int mix_power;
    int ext_power=0;

    if (me->query("quest/worldpill") == 1)
        ext_power=120;  //吃下绝世丹药后的威力增幅
    cor=me->query("cor");
    maxskee   =me->query("max_s_kee");
    magic_lv  =me->query_skill("magic",1);
    sha_lv    =me->query_skill("shadow-kill",1)*2;         //max lv 90
    rain_lv   =me->query_skill("rain-throwing",1);       //max lv 100
    makee_lv  =me->query("/functions/manakee/level")*2;    //max lv 150
    mix_power=sha_lv+rain_lv+makee_lv+ext_power;

    //如果magic lv 80的话,最多可以使用10单位的杀气
    //加1是避免出现零次的机会
    //用于控制持续回数
    if (magic_lv > 80)
        magic_lv=80;
    mkilluse=random(magic_lv /8)+1;

        if(me->query("class") != "killer")
        {
         tell_object(me,"自从你离开杀手后,就发现心中的魔气逐渐消失...\n");
                return 1;
        }
        if(me->query("quest/head-kill") != 1)
        {
                tell_object(me,"ㄟ......你想用什么气呀?要用?自己放屁会快一点\n");
                return 1;
        }
        if(me->query("s_kee")< 20)
        {
                tell_object(me,"你的杀意魔气修练不够精深,多练一下再用吧!\n");
                return 1;
        }

      if( !target   ||   !target->is_character()   ||      !me->is_fighting(target) )
                return notify_fail("‘杀意魔气’只能对战斗中的对手使用。\n");

        if(target->query_temp("mkill")==1)
        {
                tell_object(me,"敌人目前被杀意魔气纠缠着,先攻击等会再放杀气\n");
                return 1;
        }
        if (me->query("bellup") != 1)
        {
                tell_object(me, "感觉起来你还不够想杀人嘛!怎么不用杀意升这一招\n");
                return 1;
        }
        if (me->query("bellicosity") < 500)
        {
                tell_object(me, "杀气不够啦!那要怎么用杀气来威吓对手呢?\n");
                return 1;
        }
        if (me->query_skill("magic") < 10)
        {
                tell_object(me, "连点法术也不学,那怎么会有足够的灵力来控制杀气\n");
                return 1;
        }
        if (me->query("atman") < 30)
        {
                tell_object(me, "灵力不够啦,这样你会自灭哦!?\n");
                return 1;
        }
    //以下是花费
    me->add("bellicosity",-(mkilluse*5));  //因为使用杀气恫吓对方
    me->add("atman",-30);                      //使用灵力来结合杀气与灵气
    me->add("s_kee",-20);                      //所需花去的灵气量


//持续回数最高mkilluse可能到10,威力以最大灵气量来分等级
//这根本是变态,把灵气练到lv 250以上,由lv200->lv 250最少需要230000的atman值
//所以给予一击必杀的威力,但把灵气等级降30,使玩家不能练比lv 250更高
 if (maxskee > 250)
 {
   me->add("max_s_kee",-30);                   //所需花去的灵气等级
   message_vision(HIM"  杀      意      魔      气\n\n"NOR,me);
   message_vision(HIM"超顶级威力        **紫**级**魔**气**      \n\n"NOR,me);
   message_vision(HIM"超精纯的杀意魔气化成真元由$N体内射出,这是具有无比威力的魔气\n"NOR,me);
   message_vision(HIM"$N的魔气真元在瞬间射入$n体内,无比的威力在其体内爆发!\n"NOR,me,target);
   target->start_busy(2);
   target->receive_damage("gin",random(mix_power*2));
   target->receive_damage("sen",random(cor*40));   //胆识30*40=1200 一般是一击必杀,重要NPC不会有问题
   //且杀手的胆识大约在20-25之间, 20*20=400,也就是只要胆识低一些,威力就降很多
 }
 else if (maxskee > 200)
 {
   message_vision(HIM"  杀      意      魔      气\n\n"NOR,me);
   message_vision(HIG"顶级威力          *绿*级*魔*气*   \n\n"NOR,me);
   message_vision(HIG"$N由自身爆出强烈的杀气,这是一种带有魔力的杀气\n"NOR,me);
   message_vision(HIG"$N地狱般的魔气瞬间笼罩$n,令其感到剧烈的恐惧感!\n"NOR,me,target);
   target->start_busy(2);
   target->receive_damage("gin",random(mix_power));
   target->receive_damage("sen",random(cor*20));                  //胆识30*20=600
 }
 else if (maxskee > 150)
 {
   message_vision(HIM"  杀      意      魔      气\n\n"NOR,me);
   message_vision(HIR"超上级威力        *红*级*魔*气*   \n\n"NOR,me);
   message_vision(HIR"$N由自身爆出强烈的杀气,这是一种带有魔力的杀气\n"NOR,me);
   message_vision(HIR"$N地狱般的魔气瞬间笼罩$n,令其感到剧烈的恐惧感!\n"NOR,me,target);
   target->start_busy(2);
   target->receive_damage("gin",random(mix_power));
   target->receive_damage("sen",random(cor*10));                          //胆识30*10=300
 }
 else if (maxskee > 100)
 {
   message_vision(HIM"  杀      意      魔      气\n\n"NOR,me);
   message_vision(HIY"上级威力          *黄*级*魔*气*   \n\n"NOR,me);
   message_vision(HIY"$N由自身爆出强烈的杀气,这是一种带有魔力的杀气\n"NOR,me);
   message_vision(HIY"$N地狱般的魔气瞬间笼罩$n,令其感到剧烈的恐惧感!\n"NOR,me,target);
   target->start_busy(2);
   target->receive_damage("gin",random(mix_power*0.9)); //max 249
   target->receive_damage("sen",random(cor*8));                         //胆识30*8=240
 }
 else if (maxskee > 70)
 {
   message_vision(HIM"  杀      意      魔      气\n\n"NOR,me);
   message_vision(HIB"中级威力          *蓝*级*魔*气*   \n\n"NOR,me);
   message_vision(HIB"$N由自身爆出强烈的杀气,这是一种带有魔力的杀气\n"NOR,me);
   message_vision(HIB"$N地狱般的魔气瞬间笼罩$n,令其感到剧烈的恐惧感!\n"NOR,me,target);
   target->start_busy(1);                                     //busy 1
   target->receive_damage("gin",random(mix_power*0.8)); //max 249
   target->receive_damage("sen",random(cor*7));                         //胆识30*6=180
 }
 else if (maxskee > 40)
 {
   message_vision(HIM"  杀      意      魔      气\n\n"NOR,me);
   message_vision(RED"          *泛*级*魔*气*   \n\n"NOR,me);
   message_vision(RED"$N由自身爆出强烈的杀气,这是一种带有魔力的杀气\n"NOR,me);
   message_vision(RED"$N地狱般的魔气瞬间笼罩$n,令其感到剧烈的恐惧感!\n"NOR,me,target);
   target->start_busy(1);                                     //busy 1
   target->receive_damage("gin",random(mix_power*0.7)); //max 150
   target->receive_damage("sen",random(cor*6));                         //胆识30*6=180
 }
 else if (maxskee > 10)
 {
   message_vision(HIM"  杀      意      魔      气\n\n"NOR,me);
   message_vision(MAG"          *初*级*魔*气*   \n\n"NOR,me);
   message_vision(MAG"$N由自身爆出强烈的杀气,这是一种带有魔力的杀气\n"NOR,me);
   message_vision(MAG"$N地狱般的魔气瞬间笼罩$n,令其感到剧烈的恐惧感!\n"NOR,me,target);
   target->start_busy(1);                                     //busy 1
   target->receive_damage("gin",random(mix_power*0.5)); //max 120
   target->receive_damage("sen",random(cor*4));                         //胆识30*5=120
 }
   target->set_temp("mkill",1);
   target->apply_condition("mkill_out",mkilluse);
   return 1;
}
Example #3
0
void ningxie_result(object me, object target)
{        
           int afp,vfp,mod_val;
           object weapon;
           string str;
           weapon=me->query_temp("weapon");
           
            message_vision(HIB"\n随着$N手中"+weapon->name()+HIB"的舞动,周围的空气越来越冷了。\n"NOR,me);
            
            afp = COMBAT_D->skill_power(me, "force", SKILL_USAGE_DEFENSE);
            if( afp < 1) afp = 1;
            vfp = COMBAT_D->skill_power(target, "force", SKILL_USAGE_ATTACK);
            if( vfp < 1 ) vfp = 1;
            if( me->query("force_factor") && (me->query("force") > me->query("force_factor")) )   
                   mod_val = (100+me->query("force_factor")/10);
                   else mod_val=100;
            if( afp > 1000000 )     mod_val = afp / 100 * (100 + mod_val);
                     else   mod_val = (100 + mod_val) * afp / 100;
            if( mod_val < 1 ) mod_val = 1;
            
            if( random(mod_val + vfp) < vfp )
                  {message_vision(YEL"$N运气一转,全不把寒冷放在心上!\n"NOR,target); 
                   target->add_temp("ningxie_effect",-1);
                   if ( target->query_temp("ningxie_effect") < 0 )  target->set_temp("ningxie_effect",0);
                  }      
                
                else{      if( me->query("force_factor") && (me->query("force") > me->query("force_factor")) )   
                                 me->add("force",-me->query("force_factor"));
                        
                        switch (target->query_temp("ningxie_effect"))
                          {
                                case 0: {message_vision(WHT"$N打了一个寒颤。\n"NOR,target);
                                         me->set_temp("ex_ningxie",7);
                                         COMBAT_D->do_attack_damage(me, target, me->query_temp("weapon"));
                                         COMBAT_D->report_status(target);
                                         target->receive_damage("sen",random(me->query_skill("force")));
                                         COMBAT_D->report_sen_status(target);
                                         target->add_temp("ningxie_effect",1);
                                         me->delete_temp("ex_ningxie");
                                         break;
                                        }
                                        
                                case 1: { message_vision(WHT"$N冷的浑身颤抖!\n"NOR,target);
                                          me->set_temp("ex_ningxie",8);
                                          COMBAT_D->do_attack_damage(me, target, me->query_temp("weapon"));
                                          COMBAT_D->report_status(target);
                                          target->receive_damage("sen",random(me->query_skill("force")));
                                          COMBAT_D->report_sen_status(target);
                                          target->add_temp("ningxie_effect",1); 
                                          me->delete_temp("ex_ningxie");
                                          break;
                                         }    
                                
                                case 2:  {message_vision(WHT"$N冷得脸色惨白!\n"NOR,target);
                                          me->set_temp("ex_ningxie",9);
                                          COMBAT_D->do_attack_damage(me, target, me->query_temp("weapon"));
                                          COMBAT_D->report_status(target);
                                          target->receive_wound("sen",random(me->query_skill("force")));
                                          COMBAT_D->report_sen_status(target);
                                          target->add_temp("ningxie_effect",1); 
                                          me->delete_temp("ex_ningxie");
                                          break;
                                         }    
            
                                case 3:  {message_vision(WHT"$N冷得像一条冰棍了!\n"NOR,target);
                                          me->set_temp("ex_ningxie",10);
                                          COMBAT_D->do_attack_damage(me, target, me->query_temp("weapon"));
                                          COMBAT_D->report_status(target);
                                          target->receive_wound("sen",random(me->query_skill("force")));
                                          COMBAT_D->report_sen_status(target);
                                          me->delete_temp("ex_ningxie");
                                         }                        

                        }
                    if (target->query("eff_kee")<0 || target->query("eff_sen")<0 || (!living(target) && ((target->query("sen")<0) || target->query("kee")<0)) )  
                       {str=target->name()+"被"+me->name()+"手中"+weapon->name()+HIM"所带出的寒气活活冻死了,听说连尸体也青一块紫一快的!"NOR;
                        CHANNEL_D->do_channel(me, "rumor",str);
                        target->die();
                        me->delete_temp("last_channel_msg");
                       }
                    }
 
             if ( me->query_temp("ningxie") )  call_out("ningxie_result",3+random(6),me,target);
}
Example #4
0
int perform(object me, object target)
{
	object weapon;
	string msg;
	int ap, dp;
        int i, attack_time;

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

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

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

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

	if ((int)me->query_skill("guxing-jian", 1) < 100)
		return notify_fail("你的孤星剑法不够娴熟,难以施展" LIAN "。\n");

        if (me->query_skill_mapped("sword") != "guxing-jian")
                return notify_fail("你没有激发孤星剑法,难以施展" LIAN "。\n");

	if (me->query("neili") < 300)
		return notify_fail("你目前的真气不够,难以施展" LIAN "。\n");

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

	msg = HIW "\n$N" HIW "蓦的一声清啸,施出绝学「" HIM "九星连珠"
              HIW "」,手中" + weapon->name() + HIW "呼呼作响。霎时间"
              "孤星剑法剑招连绵涌出,此起彼伏,剑气笼罩$n" HIW "全身。" NOR;

        message_sort(msg, me, target);

        attack_time = 4;

	ap = me->query_skill("sword");
	dp = target->query_skill("dodge");

        attack_time += random(ap / 40);

        if (attack_time > 8)
                attack_time = 8;

	me->add("neili", -attack_time * 20);

	if (ap / 2 + random(ap) > dp)
	{
		msg = HIY "$n" HIY "见$P" HIY "剑势汹涌,寒意顿生,竟"
                      "被逼得连连后退,狼狈不已。\n" NOR;
        } else
        {
                msg = HIC "$n" HIC "见$N" HIC "这几剑来势迅猛无比,毫"
                      "无破绽,只得小心应付。\n" NOR;
        }

        message_combatd(msg, me, target);

        for (i = 0; i < attack_time; i++)
        {
                if (! me->is_fighting(target))
                        break;

                COMBAT_D->do_attack(me, target, weapon, 0);
        }

	me->start_busy(1 + random(attack_time));

        return 1;
}
Example #5
0
int valid_leave(object me, string dir)
{
        me->add("mana", -10);

	return ::valid_leave(me, dir);
}
Example #6
0
int perform(object me, object target)
{
        object weapon;
        int damage;
        string msg;
        int ap, dp;

        if (userp(me) && ! me->query("can_perform/hujia-daofa/zhui"))
                return notify_fail("你还没有受过高人指点,无法施展" ZHUI "。\n");

        if (! target)
        {
                me->clean_up_enemy();
                target = me->select_opponent();
        }

        if (! target || ! me->is_fighting(target))
                return notify_fail(ZHUI "只能对战斗中的对手使用。\n");
 
        if (! objectp(weapon = me->query_temp("weapon")) ||
            (string)weapon->query("skill_type") != "blade")
                return notify_fail("你使用的武器不对,难以施展" ZHUI "。\n");

        if ((int)me->query_skill("force") < 200)
                return notify_fail("你的内功火候不够,难以施展" ZHUI "。\n");

        if ((int)me->query_skill("hujia-daofa", 1) < 140)
                return notify_fail("你的胡家刀法还不到家,难以施展" ZHUI "。\n");

        if (me->query_skill_mapped("blade") != "hujia-daofa")
                return notify_fail("你没有激发胡家刀法,难以施展" ZHUI "。\n");

        if ((int)me->query("neili") < 200)
                return notify_fail("你的真气不够,难以施展" ZHUI "。\n");

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

        msg = HIR "$N" HIR "手中的" + weapon->name() +  HIR "一振,施出「卸"
              "甲锥心势」,顿时一股凌厉无比的无形刀气破空袭向$n" HIR "!\n"NOR;

        ap = ap_power(me, "blade");
        dp = dp_power(target, "parry");
             
        if (ap / 2 + random(ap) > dp)
        {
                damage = da_power(me, "blade");
                me->add("neili", -150);
                msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 65,
                                           HIR "只见$n" HIR "一声惨叫,整个人如遭"
                                           "电击,刀气穿心,口中鲜血狂喷而出!\n" NOR);
                me->start_busy(2);
        } else 
        {
                msg += CYN "可是$p" CYN "默运内力,硬是抵挡了$P"
                       CYN "的这记无形刀气。\n"NOR;
                me->add("neili", -50);
                me->start_busy(3);
        }
        message_combatd(msg, me, target);

        return 1;
}
Example #7
0
int perform(object me, object target)
{
                object weapon, weapon1 ;
                string msg;
                int extra, dodge, speed, parry ,damage;

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

                if (me->query_skill_mapped("force") != "kurong-changong" &&
                    me->query_skill_mapped("force") != "duanshi-xinfa")
                return notify_fail(HIW"你所用得内功心法不对,无法跃起身形。\n" NOR);

                if (!target
                ||      !target->is_character()
                ||      !me->is_fighting(target))
                        return notify_fail( HIW "「凤舞九天」只能在战斗中使用。\n" NOR);

                if (me->query("gender") !="女性") 
                        return notify_fail( HIW "「凤舞九天」只有女性能舞!\n" NOR);

                if (me->query_temp("jiutian"))
                        return notify_fail( HIW "你正在舞「凤舞九天」!\n" NOR);

                if (!objectp(weapon = me->query_temp("weapon"))
                || (string)weapon->query("skill_type") != "whip")
                        return notify_fail("你使用的武器不对。\n");

                if ((int)me->query_skill("kurong-changong", 1) < 130 &&
                    (int)me->query_skill("duanshi-xinfa",1) < 130)
                        return notify_fail( HIW "你的内功修为未到,无法施展「凤舞九天」。\n" NOR);

                if ((int)me->query_skill("feifeng-whip", 1) < 150) 
                        return notify_fail( HIW "你的飞凤鞭法修为还不够,尚未领悟到「凤舞九天」。\n" NOR); 

                if (me->query("max_neili") <= 1000)
                        return notify_fail( HIW "你的内力修为不足,劲力不足以施展「凤舞九天」!\n" NOR);
           
                if ((int)me->query("neili", 1) < 500)
                        return notify_fail( HIW "你现在内力不够,劲力不足以施展「凤舞九天」!\n" NOR);

                if (me->query("jingli") <= 300)
                        return notify_fail( HIW "你的精力不足,无法施展「凤舞九天」!\n" NOR);

                if (me->query("combat_exp")*3 > target->query("combat_exp")*4) 
                        return notify_fail( HIW "想用「凤舞九天」欺负弱小?不太好吧!\n" NOR);

                if (! living(target))
                        return notify_fail( HIW "对方都已经这样了,还舞给谁看啊!\n" NOR);

                message_vision(MAG"$N向后纵身一跃,翩翩起舞,手中的"NOR+weapon->name()+NOR MAG"响起阵阵凤鸣,舞姿奇诡莫测,变化无端,宛如凤凰一般刹是好看。\n\n" NOR, me);

        if (random(me->query("per"))+8 > 20)
        {
                message_vision(HIR"突然$n一个失神,被$N的动作所吸引,顿感心旷神怡,心猿意马,被$N的舞姿迷的神魂颠倒!\n\n"NOR, me, target);
                target->start_busy(random(5)+5);

                if (target->query_temp("weapon")) {
                        weapon1 = target->query_temp("weapon");
                        if (me->query("combat_exp") < random(target->query("combat_exp")*8/5)) {
                                message_vision(HIW"$n手指一松,"NOR+weapon1->name()+NOR HIW"险些脱手!\n" NOR, me, target);
                        }
                        else {
                                message_vision(HIW"$n手上一松,不由自主的丢下了"NOR+weapon1->name()+NOR HIW"!\n" NOR, me, target);
                                weapon1->unequip();
                                weapon1->move(environment(target));
                                target->reset_action();
                        }
                }
                extra = (int)me->query_skill("feifeng-whip",1);
                dodge = extra*3/4 + random(extra/2);
                damage = extra/3 + random(extra/2);
                parry = extra*3/4 + random(extra/5);

                me->add_temp("apply/dodge", dodge);
                me->add_temp("apply/damage", damage);
                target->add_temp("apply/parry", -parry);

                me->set_temp("jiutian", 25+extra/6);
                call_out("checking", 1, me, target, weapon, dodge, damage, parry);

                me->start_busy(1+random(2));
                me->add("neili", -250);
                me->add("jing", -50);
        }
        else
        {
                message_vision(RED"就看$n收敛心神,心如明镜,全神贯注,并未被$N的舞姿所迷。\n"NOR, me, target);
                me->start_busy(random(5)+2);
        }
        return 1;
}
Example #8
0
File: zhan.c Project: mudchina/sjsh
int perform(object me, object target)
{
        object weapon;
        int damage =0, dragon;
        int myhammer;
        string msg;

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

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

        if (!objectp(weapon = me->query_temp("weapon"))
        || (string)weapon->query("skill_type") != "blade")
                return notify_fail("你使用的武器不对。\n");
        if(me->query("family/family_name") != "天空界")
                return notify_fail("不是天界弟子的也想用天狼斩?\n");
             
        if( (int)me->query_skill("tianlang-blade", 1) < 150 )
                return notify_fail("你的天狼夜摩刀不够娴熟,不能发出「天狼斩」。\n");
                                
        if( (int)me->query_skill("shouya-force", 1) < 150 )
                return notify_fail("你的兽牙魔经不够高,不能够运起那股劲气。\n");
                        
        if( (int)me->query("force", 1) < 600 )
                return notify_fail("你现在内力太弱,不能发出「雷霆三击」。\n");
                        
        msg = HIG "$N撮嘴尖啸,猛吸一口气,快速运转兽牙魔经,浑圆霸气散布四周五丈范围
随后将浑圆内力灌注于刀上,
一连三刀带起三道劲风,从上,中,下三路带着撕晋烈帛般的声音扫向$n。
这正是黑幕凯的绝学"HIR"「天狼斩」\n"NOR;

        if( !target->is_killing(me) ) target->kill_ob(me);

        if (random(me->query_skill("shouya-force", 1)) > target->query_skill("force", 1)/4)
        {
                target->start_busy(1);
                
                damage += (int)me->query_skill("tianlang-blade", 1);
                damage = damage +  (int)me->query_skill("shouya-force", 1);
                damage = damage +  (int)me->query_skill("shanbishu", 1);
                
                  if (damage < 600) {
                        dragon = 1;
                   } else if (damage < 900) {
                        damage = damage/3*4;
                        dragon = 2;
                   } else {
                        damage = damage/5*8;
                        dragon = 3;
                   }                    
                
                if (damage >= target->query("max_kee")) damage = target->query("max_kee")-1;
                target->receive_damage("kee", damage);
                target->receive_wound("kee", damage/3);
                me->add("force", -300);
                msg += HIC"$n被$N的兽牙魔经的劲力牵制动弹不得,身中"+chinese_number(dragon)+"刀!\n$n只觉兵刃对身体造成的疼痛似乎已经不算什么,强大的霸气,只震的$n的五脏六腑都在颤抖!\n"NOR;
                me->start_busy(1+random(2));
        } else 
        {
                msg += MAG"$p识得这招的厉害,向后几个纵身跳出了$P浑圆霸气散布的范围。\n"NOR;
                me->add("force", -350);
                me->start_busy(1+random(2));
        }

        message_vision(msg, me, target);
        if (damage > 0) COMBAT_D->report_status(target);
        return 1;
}
Example #9
0
int perform(object me)
{
	int force, sword;
	object weapon = me->query_temp("weapon");
	string shape = weapon->query("id");

	if( !me->is_fighting() )
		return notify_fail("「绕指柔剑」只能在战斗中使用。\n");

	if( !me->query("wudang/raozhi") )
		return notify_fail("你未得高人指点,不知该如何施展「绕指柔剑」。\n");

	if( !objectp(weapon) || weapon->query("skill_type") != "sword" )
		return notify_fail("你手中无剑,怎能使出「绕指柔剑」?!\n");

	if( me->query_temp("yield") )
		return notify_fail("你不出剑,如何使出「绕指柔剑」?\n");

	if( me->query_temp("wudang/raozhi") )
		return notify_fail("你已经将内力贯注入剑中了!!\n");

	if( me->query_skill_mapped("force") != "wudang-jiuyang" )
		return notify_fail("你所用的内功与「绕指柔剑」心法相悖!\n");

	if( me->query_skill("sword") < 200 )
		return notify_fail("你的剑法修为还不够,难以施展「绕指柔剑」!\n");

	if( me->query_skill("force") < 200 )
		return notify_fail("你的内功修为火候未足,无法以内力逼弯剑刃!\n");

	if( me->query("max_neili") <= 1500 )
		return notify_fail("你的内力不够浑厚,劲力不足以逼弯剑刃!\n");

	if( me->query("neili") <= 500 )
		return notify_fail("你的内力不够,劲力不足以逼弯剑刃!\n");

	if( me->query("jingli") <= 200 )
		return notify_fail("你的体力有限,难以施展「绕指柔剑」!\n");

	if( shape == "xuantie jian" )
		return notify_fail("你所持之剑质地过於坚硬,难以用内力将其逼弯!\n");

	if( shape == "tie di" || shape == "tie xiao" || shape == "zhu xiao"
	 || shape == "yu xiao")
		return notify_fail("箫笛形状不适合施展「绕指柔剑」!\n");

	if( shape == "xiuhua zhen" || shape == "qijue zhen" || shape == "emei ci"
	 || shape == "duanjian" || shape == "bishou" )
		return notify_fail("你所持之剑太短,不适合施展「绕指柔剑」!\n");

	me->add("neili", -100);
	me->add("jingli", -150);

	if( (string)weapon->query("material") != "steel" )
	{
		message_vision(HIW "\n猛地里$N一声清啸,剑法忽变。可是手中"+ weapon->name() 
			+HIW"却已经不住内力冲击,裂成碎片!!\n"NOR, me);
		destruct(weapon);
		me->set_temp("apply/damage", 0);
		me->reset_action();
		me->start_busy(1);

		return 1;
	}

	force = me->query_skill("force")/2;
	sword = me->query_skill("sword")/3;

	weapon->add("rigidity", force);
	me->add_temp("apply/attack", sword);
	me->set_temp("wudang/raozhi", sword);

	message_vision(HIG "\n猛地里$N一声清啸,剑法忽变,那柄"+ weapon->name()
		+HIG"竟似成了一条软带,轻柔曲折,飘忽不定。\n正是武当派绝技"+
		HIW +"「绕指柔剑」"+ HIG +"!\n"NOR, me);

	call_out("checking", 1, me, weapon, sword, force);
	return 1;
}
Example #10
0
int cast(object me, object target)
{
	string msg;
	int success, ap, dp, ap2, ap3, dp2, dp3, damage;
	
	if( !target ) target = offensive_target(me);

	if((int)me->query_skill("spells") < 100 || (int)me->query_skill("pingtian-dafa",1) < 60)
		return notify_fail("你还没学会妖火。。。\n");

	if( !target
	||      !target->is_character()
	||      target->is_corpse()
	||      target==me)
		return notify_fail("你想对谁喷火?\n");  

	if( target->is_busy() )
		return notify_fail(target->name()+"已经够忙了。\n");

	if(target->query_temp("no_move"))
		return notify_fail(target->query("name")+"已经动弹不得了!\n");
	if((int)me->query("mana") < 200 )
		return notify_fail("你的法力不够!\n");

	if((int)me->query("sen") < 10 )
		return notify_fail("你无法集中精力!\n");

	me->add("mana", -100);
	me->receive_damage("sen", 20);

	msg = HIG
"$N凸腹鼓腮,咬破舌尖,张口一喷,一团碧磷磷的妖火直朝$n喷去!\n\n" 
NOR;

	success = 1;
	ap = me->query_skill("spells");
	ap = ap * ap * ap /12 ;
	ap += (int)me->query("daoxing");
	dp = target->query("daoxing");

//呵呵,看你怕不怕,比胆识
	ap2 = (int)me->query_cor();
	dp2 = (int)target->query_cor();


	ap3 = (int)me->query("mana");
	dp3 = (int)target->query("mana");
	if( random(ap + dp + 2500*(ap2+dp2)+200*(ap3+dp3)) < (dp+2500*dp2+200*dp3) ) success = 0;
// 哈哈,中招了,没这么简单,我pingtian-dafa高低,你惨的程度不一样
	if(success == 1 && (int)me->query_skill("pingtian-dafa",1) < 100){
		msg +=  HIR "$n看着$N那鄙陋相正想抢攻,不料一团碧火袭来,顿时手忙脚乱。\n" NOR;
		target->start_busy(2+random(2));
		if( living(target) ) target->kill_ob(me);
		
		
	}
	
	else if(success == 1 && (int)me->query_skill("pingtian-dafa",1) > 100){
// 难道就这么结束了,没呢!还有更厉害要你致命的!
// 不过得看我运气,就是福缘了		
		if(random(me->query("kar"))>18){
		msg +=  HIR "$n被妖火袭中,一股火毒直冲入脑髓、骨髓、血髓、脉髓。。。。\n" NOR;
		target->apply_condition("yaohuo_poison",((int)me->query_skill("pingtian-dafa",1)/5));
		target->start_busy(3+random(2));
		damage = (int)me->query_skill("force", 1);
                damage = damage +  (int)me->query_skill("pingtian-dafa",1);
                
                target->receive_damage("sen", damage);
                target->receive_wound("sen", damage/3);
		
		          
		}	    
		msg +=  HIR "$n一个不防,被妖火笼罩了全身。只听见$n在碧磷般的妖火中惨叫连连!\n" NOR;
		target->start_busy(1+random(2));
		damage = (int)me->query_skill("force", 1);
                damage = damage +  (int)me->query_skill("pingtian-dafa",1);
                
                target->receive_damage("sen", damage);
                target->receive_wound("sen", damage/3);
		if((int)me->query("mana") > 100 )
                me->add("mana", -100);
                if( living(target) ) target->kill_ob(me);
                me->start_busy(2+random(2));
                
	}
	
	else {
		msg +=  HIR "$n显然觑出$N这招的厉害,后掠三步,躲过了妖火!\n" NOR;	
		me->start_busy(2+random(2));
		if((int)me->query("mana") > 100 )
		me->add("mana", -100);        
        	if( living(target) ) target->kill_ob(me);
        	
        	
	} 
	
	message_vision(msg, me, target);

	return 1;
}
Example #11
0
int perform(object me, object target)
{
        string msg;
        int count;
        int lvl;
        int i;

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

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

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

        if ((lvl = (int)me->query_skill("lianhuan-mizongtui", 1)) < 120)
                return notify_fail("你的连环迷踪腿不够娴熟,难以施展" LIAN "。\n");

        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))
                return notify_fail(LIAN "只能空手施展。\n");
                
        if (me->query("max_neili") < 1800)
                return notify_fail("你的内力的修为不够,现在无法使用" LIAN "。\n");

        if ((int)me->query_skill("force") < 150)
                return notify_fail("你的内功火候不够,难以施展" LIAN "。\n");

        if ((int)me->query_skill("dodge") < 150)
                return notify_fail("你的轻功火候不够,难以施展" LIAN "。\n");

        if (me->query_skill_prepared("unarmed") != "lianhuan-mizongtui")
                return notify_fail("你现在没有准备使用连环迷踪腿,难以施展" LIAN "。\n");

        if ((int)me->query("neili", 1) < 200)
                return notify_fail("你现在真气太弱,难以施展" LIAN "。\n");

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

        msg = HIW "陡见$N" HIW "全身飞速旋转,双腿忽前忽后,接连贯出数腿,流星般疾射$n"
              HIW "胸口。\n" NOR;

        me->add("neili", -150);

        if (random(me->query_skill("dodge") + me->query_skill("unarmed")) >
            target->query_skill("parry"))
        {
                msg += HIR "$n" HIR "顿时觉得眼花缭乱,无数条腿"
                       "向自己奔来,只得拼命运动抵挡。\n" NOR;
                count = lvl / 5;
                me->add_temp("apply/attack", count);
        } else
        {
                msg += HIC "可是$n" HIC "凝神顿气,奋力抵挡,丝"
                       "毫不受腿影的干扰,。\n" NOR;
                count = 0;
        }
        message_combatd(msg, me, target);

        for (i = 0; i < 5; i++)
        {
                if (! me->is_fighting(target))
                        break;
                COMBAT_D->do_attack(me, target, 0, 0);
        }
        me->start_busy(random(5));
        me->add_temp("apply/attack", -count);
        return 1;
}
Example #12
0
int perform(object me, object target)
{
    string msg,*limbs;
    int i,size,damage;
    object my_w,target_w;
    my_w = me->query_temp("weapon");
    target_w = target->query_temp("weapon");
    if( !target ) target = offensive_target(me);


    if( target->is_busy() )
    return notify_fail(target->name() + "Ŀǰ��ãȻ��֪���룬�ӽ������ɡ�\n"
);
    if( (int)me->query_skill("duanyun-fu",1) < 50)
    return notify_fail("��Ŀǰ������ʹ�����������ҡ���\n");
    if( (int)me->query("neili") < 100 )
    return notify_fail("�������������\n");
    me->add("neili", -60);
msg = CYN"$NͻȻ����һ���������ң����ң��������ң��������о޸���Ȼ����$p���б��У�\n"NOR;
    me->start_busy(1);

    if (target->query_temp("weapon") ||
   target->query_temp("secondary_weapon")) {

    if( random(me->query("combat_exp")) >
   (int)target->query("combat_exp")/3 ) {
    if( target_w->weight() > 2 * random(my_w->weight()) ) {
msg += "���$p���е�"+target_w->query("name")+"��$P�ĺ������Ҹ����ţ���Ҳ���ղ��
ס���������ַɳ���\n" NOR;
    target_w->unequip();
    target_w->move(environment(target));
    target->reset_action();
    target->start_busy( (int)me->query_skill("duanyun-fu") / 20 );
}
   msg += HIC
"ֻ��$n���е�"+target_w->query("name")+"��Ȼ���Ҷ������Σ�����
�ܵ�$N�ľ����ļ�������$nѸ����ȥ��\n"NOR;
    message_combatd(msg,me,target);
    target_w->unequip();
    target_w->move(environment(target));
    target_w->set("name", target_w->query("name") + "����Ƭ");
    target_w->set("value", target_w->query("value")/10);
    target_w->set("weapon_prop", 0);
    target->reset_action();
    target->start_busy( (int)me->query_skill("duanyun-fu") / 20 );
    limbs=target->query("limbs");
    me->start_busy(1);
    msg += "���$p���������������˸����ֲ�����\n" NOR;
    size=(int)(me->query_skill("duanyun-fu")/10);
    damage=random(size)+size;
damage=damage+me->query_str()/3+random(me->query_temp("apply/damage"));
    for(i=0;i<=random(size);i++)
   {
   msg =HIB"���͡�����Ƭ����$p"+limbs[random(sizeof(limbs))]+"��\n"NOR;
   message_combatd(msg,me,target);
   target->receive_damage("qi",damage,me);
   target->receive_wound("qi",damage/3,me);
   }
    COMBAT_D->report_status(target);
    } else {
    msg += "����$p��æ���Լ��ı�����������û����$P�ļ�ı�óѡ�\n" NOR;
    }
    return 1;
    }
    return notify_fail(target->name() + "Ŀǰ�ǿ��֣�������ʲô��\n");
}
Example #13
0
int cast(object me, object target)
{
    int success_adj, damage_adj;

    success_adj = 180;
    damage_adj = 170;

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

    if (me->query("family/family_name")!="火云洞")
        return notify_fail("“三味真火”只有火云洞门人才可以用!\n");
    if (!target
            ||  !target->is_character()
            ||  target->is_corpse()
            ||  target==me)
        return notify_fail("你要对谁喷三味真火?\n");

    if ((int)me->query_skill("pingtian-dafa", 1) < 30)
        return notify_fail("你的平天大法火候不够,哪里喷得出真火!\n");

    if ((int)me->query("mana") < 25+(int)me->query("mana_factor"))
        return notify_fail("你的法力不够,喷出的真火恐怕没有什么用!\n");

    if ((int)me->query("force") < 100)
        return notify_fail("你的内力不够,无法将真火喷出。\n");

    if ((int)me->query("sen") < 10)
        return notify_fail("你现在神智不清,别把自己烧伤了!\n");

    me->add("mana", -25-2*(int)me->query("mana_factor"));
    me->receive_damage("sen", 50);

    if (random(me->query("max_mana")) < 50) {
        message_vision(HIM"$N口中念念有词。。。但什么也没有发生!\n"NOR,me);
        return 1;
    }

    me->receive_wound("kee", 10);

    msg = HIC "$N伸手在鼻子上砸了两,顿时鲜血直冒,突然红橙黄三道火焰呼!地一声向$n卷去!\n" NOR;

    message_vision(msg, me, target);

    ap = (int)me->query_skill("spells");
    ap = ap * ap / 1000 * ap;
    ap = ap * (1 + (int)me->query("combat_exp")/5000000);
    ap = ap + (int)me->query("combat_exp");
    ap = ap/100*180;

    dp = (int)target->query("combat_exp");

    if (random(ap+dp) < dp) {
        msg = HIC"\n结果被$n躲开了。\n"NOR;
        message_vision(msg, me, target);
    }
    else {
        a_damage = me->query("mana")/40;
        d_damage = target->query("mana")/40;
        a_damage += random(me->query("eff_sen")/20);
        d_damage += random(target->query("eff_sen")/20);
        a_damage += me->query("mana_factor")*170/100;
        d_damage += random(target->query("mana_factor")*170/100);

        if (a_damage > d_damage) {
            damage = a_damage - d_damage;
            damage += me->query("mana_factor")*170/100;
            damage = damage*170/100;
            damage_bonus = (int)me->query_skill("spells")/200;
            if (damage_bonus > 3) damage_bonus = 3;
            damage += damage*damage_bonus;
            if (damage > 3000) damage = 3000;

            msg = HIC "结果$n被烧得焦头烂额!\n" NOR;
            message_vision(msg, me, target);
            target->receive_damage("kee", damage*3/5, me);
            target->receive_wound("kee", damage/2, me);
            COMBAT_D->report_status(target);
        } else if (a_damage < d_damage) {
            msg = HIC "结果火焰被$n以法力一逼,反向$N回卷而去!\n" NOR;
            message_vision(msg, me, target);

            damage = d_damage;
            if (damage > 400) damage = 400;
            damage -= target->query("mana_factor");
            damage = damage*170/100;
            damage_bonus = (int)me->query_skill("spells")/200;
            if (damage_bonus < 1) damage_bonus = 1;
            if (damage_bonus > 10) damage_bonus = 10;
            damage += damage/damage_bonus;

            msg = HIR "\n结果$n躲避不及,被烧得焦头烂额!\n" NOR;
            message_vision(msg, me, target);
            me->receive_damage("kee", damage*3/5, target);
            me->receive_wound("kee", damage/2, target);
            COMBAT_D->report_status(me);
        } else
            message_vision(HIB "结果正好被$N以法力逼住,谁也没有吃亏。\n" NOR, target);
    }

    me->start_busy(1+random(2));
    target->kill_ob(me);

    return 3+random(5);
}
Example #14
0
//inherit F_YAO;
int main(object me, string arg)
{
        object ob;
        object ob1, ob2,ob3,ob4,ob5,ob6;
        int lv;
        lv=me->query_skill("medical",1);

        seteuid(getuid());

        if( me->is_busy() )
        return notify_fail("你正忙着呢。\n");

        if( !arg )
        return notify_fail("你要制什么药?\n");
        
        if( me->is_fighting() )
        return notify_fail("你正在战斗,制什么药啊?\n");

        if(me->query("sen")<=50)
	return notify_fail("你现在太累了,休息休息吧!\n");

        if(me->query("force")<50) 
	return notify_fail("你的真气不够,不能做什么了。\n");
        
        if( me->is_busy() || me->query_temp("pending/exercising"))
        return notify_fail("你正忙着呢,没时间制药。\n");
//制作的药品
     switch (arg)
      {
case "jinchuang":
        ob1 = present("hong hua", me) ;
        ob2 = present("tian qi", me) ;
        if (!ob1 || !ob2)
              return notify_fail("你的药材不齐全。\n");
        if( lv < 20 )
        return notify_fail("你的医术不足制出金疮药。\n");
        ob1->set("done", 1);
        ob2->set("done", 1);
done(me);
        ob=new("/obj/jineng/obj2/jinchuang.c");
        ob->move(me);
        me->add("sen",-20);
        me->add("force",-50);
        me->start_busy(1);

        break;

case "hunyuandan":
        ob1 = present("hu gu", me) ;
        ob2 = present("du huo", me) ;
        if (!ob1 || !ob2)
              return notify_fail("你的药材不齐全。\n");
        if( lv < 25 )
        return notify_fail("你的医术不足制出混元丹。\n");
        ob1->set("done", 1);
        ob2->set("done", 1);
done(me);
        ob=new("/obj/jineng/obj2/hunyuandan.c");
        ob->move(me);
        me->add("sen",-20);
        me->add("force",-50);
        me->start_busy(1);

        break;

       default:   notify_fail("你没有能力制这种药。\n");       
        }
        return 1;
}
Example #15
0
int main(object me, string arg)
{
        string skill, teacher, master;
        object ob;
        int master_skill, my_skill, sen_cost;
        int time, upper, sen1;
        int amount, qskill, qlearned, i;

        if(!arg) return notify_fail
                    ("指令格式:learn <技能> from <某人> for <次数>\n");

        if(sscanf(arg, "%s for %d", arg, time)!=2 ) 
            time=1;
        
        if(time<1) time=1;
        if(time>50) time=50;

        if(!arg || sscanf(arg, "%s from %s", skill, teacher)!=2 )
            return notify_fail
                    ("指令格式:learn <技能> from <某人> for <次数>\n");

        if( me->is_fighting() )
                return notify_fail("临阵磨枪?来不及啦。\n");

        if(me->is_busy())
            return notify_fail("你正忙着呢。\n");

        if( !(ob = present(teacher, environment(me))) || !ob->is_character())
                return notify_fail("你要向谁求教?\n");

        if( !living(ob) )
                return notify_fail("嗯...你得先把" + ob->name() + "弄醒再说。\n");

        if( !me->is_apprentice_of(ob) && getuid(ob)!=me->query("couple/id") 
                                                           ) {
//              && getuid(ob)!=me->query("bonze/dadangid") ) {

                notify_fail( ob ->name() + reject_msg[random(sizeof(reject_msg))] );
                if( (string)me->query("family/family_name") != 
                        (string)ob->query("family/family_name")
                ||      (int)ob->query("family/privs") != -1 ) {
                        if( !(ob->recognize_apprentice(me)) ) return 0;
                } else return 0; // mon add this return 0. 5/6/98
        }

    if (getuid(ob) == me->query("couple/id") && !userp(ob) )
                return notify_fail("你这个家伙,想干什么?\n");

        if( ob->is_fighting())
                return notify_fail("你的师傅暂时没空指点你武功。\n");

        if( !master_skill = ob->query_skill(skill, 1) )
                return notify_fail("这项技能你恐怕必须找别人学了。\n");

        notify_fail(ob->name() + "不愿意教你这项技能。\n");
        if( ob->prevent_learn(me, skill) )
                return 0;

        my_skill = me->query_skill(skill, 1);

        if( my_skill < 1&& userp(ob) )
                return notify_fail("你还是先把基础打好再说吧!\n");// xintai 2/5/01
                

        notify_fail("依你目前的能力,没有办法学习这种技能。\n");
        if( !SKILL_D(skill)->valid_learn(me) ) return 0;

        sen_cost = 300 / (int)me->query_int();

        if( !my_skill ) {
                sen_cost *= 2;
                me->set_skill(skill,0);
        }
        
        upper= (int)me->query("potential")-(int)me->query("learned_points");
        if(time>upper) time=upper;

        if(upper<=0)
                return notify_fail("你的潜能已经发挥到极限了,没有办法再成长了。\n");

        qskill=me->query_skills()[skill]+1;
        qskill*=qskill;
        qlearned=me->query_learned()[skill];
        amount = qlearned;

        // for those level higher than master's
        if( amount > qskill )  {
           for(i=0; i<time; i++)
               amount += random(me->query_int())+1;
        }
        else {
           for(i=0; i<time; i++)   {
              amount += random(me->query_int())+1;
              if( amount > qskill )  {i++;break;}
       }        
        }
        
        amount -= qlearned;
        time = i;
        
        sen_cost *= time;

        printf("你向%s请教有关「%s」的疑问。\n", ob->name(),
                to_chinese(skill));

        if( ob->query("env/no_teach") )
                return notify_fail("但是" + ob->name() + "现在并不准备回答你的问题。\n");

        // can't learn from another player if oneself
        // don't have the skill.
/*        if(userp(ob) && (int)my_skill<1) {
            return notify_fail("可是你怎么也弄不明白。\n");
        }*/

        // can't learn above 100 level from a player.
        // mon 3/7/98
        if(userp(ob) && my_skill>=100)
          return notify_fail("可是"+
            ob->name()+"已经无力指导你进一步提高了。\n");

        tell_object(ob, sprintf("%s向你请教有关「%s」的问题。\n",
                me->name(), to_chinese(skill)));

    sen1=(int)ob->query("sen");
    if(userp(ob) || sen1<50)
        if(sen1 > sen_cost + 1 ) {
                if( userp(ob) ) ob->receive_damage("sen", sen_cost+1);
        } else {
                write("但是" + ob->name() + "显然太累了,没有办法教你什么。\n");
                tell_object(ob, "但是你太累了,没有办法教" + me->name() + "。\n");
                return 1;
        }
                

        if( (int)me->query("sen") > sen_cost ) {
                if( (string)SKILL_D(skill)->type()=="martial"
                &&      my_skill * my_skill * my_skill / 10 > (int)me->query("combat_exp") ) {
                        printf("也许是实战经验不够,你对%s的回答总是无法领会。\n", ob->name() );
                }
                else if( (string)SKILL_D(skill)->type()=="magic"
                &&      my_skill * my_skill * my_skill / 10 > (int)me->query("daoxing") ) {
                           printf("也许是道行不够,你对%s的回答总是无法领会。\n", ob->name() );
                }
                
                else {

                     //added by mon. 7/24/97
                     //to learn beyond NPC master's skill with an added cost.
                     me->add("learned_points", time);
                     if( my_skill < master_skill ) {
                        printf("你听了%s的指导,似乎有些心得。\n", ob->name());
                        me->improve_skill(skill, amount);
                     } else {
                        if(qlearned<me->query_int())
                          message_vision("$N对$n说道:"+
                            "你的「"+to_chinese(skill)+
                            "」已经不输为师了,咱们一起切磋切磋吧!"
                            +"\n",ob,me);
                        printf("%s和你切磋了一会儿%s,你似乎有所领悟。\n",
                          ob->name(),to_chinese(skill));
                        me->improve_skill(skill, amount,
                          (qlearned>4*qskill && !userp(ob)) ?0:1);
                          //can't learn beyond a player master's level.
                     }
                }
        } else {
//              sen_cost = me->query("sen");
//              if(sen_cost<0) sen_cost=0;
                write("你今天太累了,结果什么也没有学到。\n");
                me->start_busy(1);
                return 1;
        }

        me->receive_damage("sen", sen_cost );
//      me->start_busy(1);

        return 1;
}
Example #16
0
void remove_effect(object me, object weapon, int sword, int force)
{
	me->delete_temp("wudang/raozhi");
	me->add_temp("apply/attack", -sword);
	weapon->add("rigidity", -force);
}
Example #17
0
int perform(object me, object target)
{
        int damage, p, ap, dp;
        string msg, dodge_skill;

        if (userp(me) && ! me->query("can_perform/hamagong/hama")) 
                return notify_fail("你还没有受过高人指点,无法施展「蟾震九天」。\n");  
                
        if( !target ) target = offensive_target(me);
        
        if( !target || !target->is_character()
           || !me->is_fighting(target) || !living(target) )
                return notify_fail("蟾震九天绝招只能对战斗中的对手使用。\n");

        if( (int)me->query_skill("hamagong", 1) < 100 )
                return notify_fail("你的蛤蟆功还不够熟练,不能使用蟾震九天对敌!\n");

        if( me->query_temp("weapon") )
                return notify_fail("你必须空手才能使用「蟾震九天」!\n");

        if (me->query_skill_mapped("force") != "hamagong")
                return notify_fail("你的内功中无此功夫。\n");

        if (me->query_skill_prepared("strike") != "hamagong" ||
            me->query_skill_mapped("strike") != "hamagong")
                return notify_fail("你必须先将蛤蟆功运用于掌法之中才行。\n");

        if( (int)me->query("max_neili") < 1500 )
                return notify_fail("你现在内力不足,使不出蛤蟆功的绝招蟾震九天!\n");     

        if( (int)me->query("neili") < 400 )
                return notify_fail("你现在内力不足,使不出蛤蟆功的绝招蟾震九天!\n");     

        if( (int)me->query_skill("strike", 1) < 100 )
                return notify_fail("你的掌法不够娴熟,使不出蛤蟆功的绝招蟾震九天!\n");

        if (me->query_str() < 30 )
                return notify_fail("你的力量太小,使不出用蛤蟆绝招蟾震九天!\n");

        /*
        if( me->query_temp("hmg_hama") )
                return notify_fail("你刚使完「蛤蟆功」绝招,目前气血翻涌,无法再次运用!\n");
        */
        
        msg = BLU "\n$N身子蹲下,左掌平推而出,使的正是$N生平最得意的「蟾震九天」绝招,掌风直逼$n而去!\n"NOR;        
        me->set_temp("hmg_hama", 1);
        
        ap = ap_power(me, "force"); 
        dp = dp_power(target, "force"); 

	if (ap / 2 + random(ap) > dp)
	{                
                me->start_busy(1);
                if (! target->is_busy()) 
                target->start_busy(1); 
                me->add("neili", -200);
                damage = da_power(me, "force");
                if(me->query("neili") > target->query("neili")*2 ) 
                        damage += random(damage);
                target->receive_damage("qi", damage, me);
                target->receive_wound("qi", damage/2, me);
                msg += COMBAT_D->damage_msg(damage, "内伤");
                call_out("perform2", 0, me, target, p);    
        } else 
        {
                me->start_busy(2);
                if (! target->is_busy()) 
                target->start_busy(1);
                me->add("neili", -100);
                tell_object(target, HIY"你但觉一股微风扑面而来,风势虽然不劲,然已逼得自己呼吸不畅,知道不妙,连忙跃开数尺。\n" NOR);
                dodge_skill = target->query_skill_mapped("dodge");
	        if( !dodge_skill ) dodge_skill = "dodge";
	        msg += SKILL_D(dodge_skill)->query_dodge_msg(target, 1);
                call_out("remove_effect", me->query_con()/6, me);
        }
        message_combatd(msg, me, target); 
        return 1;
}
Example #18
0
int perform(object me, object target)
{
        string msg;
        object weapon;
        int skill, ap, dp, damage;

        if (! target)
        {
                me->clean_up_enemy();
                target = me->select_opponent();
        }

        if (userp(me) && ! me->query("can_perform/pili-shou/hun"))
                return notify_fail("你还没有受过高人指点,无法施展" WU "。\n"); 

        if (! me->is_fighting(target))
                return notify_fail(WU "只能对战斗中的对手使用。\n");
 
        skill = me->query_skill("pili-shou", 1);

        if (skill < 140)
                return notify_fail("你的混元霹雳手等级不够, 不能施展" WU "!\n");

        if (me->query_skill("force", 1) < 160)
                return notify_fail("你内功修为不够,无法施展" WU "!\n");

        if (me->query("max_neili") < 2400)
                return notify_fail("你内力修为不足,无法施展" WU "!\n");

        if (me->query("neili") < 340)
                return notify_fail("你的内力不够,无法施展" WU "!\n");
 
        if (me->query_skill_prepared("hand") != "pili-shou")
                return notify_fail("你没有准备使用混元霹雳手,无法施展" WU "!\n");

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

        msg = HIC "$N" HIC "怒喝一声,施出绝招「" HIW "天地混元" HIC "」,双掌交错"
              "袭向$n" HIC ",掌风凌厉,隐隐带有风雷之势。\n" NOR;
 
        ap = ap_power(me, "hand") +
             me->query_skill("force");

        dp = dp_power(target, "parry") +
             target->query_skill("force");
             
        if (ap / 2 + random(ap) > dp)
        {
                me->add("neili", -300);
                damage = da_power(me, "hand");
                msg += COMBAT_D->do_damage(me, target, UNARMED_ATTACK, damage, 70,
                                           HIR "$n" HIR "只觉得胸前一阵剧痛,“哇”的一"
                                           "声喷出一口鲜血!\n" NOR);
                me->start_busy(1 + random(2));
        } else
        {
                me->add("neili", -200);
                msg += CYN "只见$n" CYN "不慌不忙,轻轻一闪,躲过"
                       "了$N" CYN "的必杀一击!\n" NOR;
                me->start_busy(3);
        }
        message_combatd(msg, me, target);

        return 1;
}
Example #19
0
int perform(object me, object target)
{
	int sp, dp, time;

	if( !me->is_fighting() ) 
		return notify_fail("你必须在战斗中才能使用惊魔一指!\n");

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

	if( !target || !target->is_character() || target->query("race") != "人类" )
		return notify_fail("你要点谁的穴?\n");

	if( environment(target)->query("no_fight") )
		return notify_fail("在这里你不能偷袭点穴!\n");

	if( me->query_str() < 30 )
		return notify_fail("你在臂力上先天禀赋不足,点穴反受其害!\n");
	
	if( me->query_skill("yizhi-chan", 1) < 90 )
		return notify_fail("你在一指禅上下的功夫还不够,不会惊魔一指!\n");

	if( me->query_skill("hunyuan-yiqi", 1) < 60 )
		return notify_fail("你的内功修为火候未到,无法点穴!\n");

	if( me->query("max_neili") <= 500 )
		return notify_fail("你的内力修为不足,劲力不能贯透,无法使惊魔一指!\n");

	sp = me->query_skill("dodge") + me->query_skill("parry") ;
	dp = target->query_skill("dodge") + target->query_skill("parry") ;
		
	time = (me->query_skill("force") - target->query_skill("force") + me->query_skill("finger"))/10;
	if (time > 10) time = 10;

	if( me->query("neili") <= time )
		return notify_fail("你的内力不够,劲力不能贯穿穴道!\n");

	if( random(sp) > dp/2 && time > 0 )
	{
		if( me->query_skill("finger") >=  90 && me->query_skill("finger") < 115)
		message_vision(HIR "\n$N五指并拢,身形闪动间,已点中了$n的" + xuedao1[random(5)] + "!\n\n" NOR, me, target);

		if( me->query_skill("finger") >= 115 && me->query_skill("finger") < 140)
		message_vision(HIR "\n$N伸出三根手指,一挥手点中了$n的" + xuedao2[random(6)] + "!\n\n" NOR, me, target);

		if( me->query_skill("finger") >= 140 && me->query_skill("finger") < 165)
		message_vision(HIR "\n$N双指如刀如戟,着着进逼,唰地一声,已戳在了$n的" + xuedao3[random(6)] + "上!\n\n" NOR, me, target);

		if( me->query_skill("finger") >= 165 && me->query_skill("finger") < 190)
		message_vision(HIR "\n$N伸出一根中指,一道青气破空而出,嗤地射中了$n的" + xuedao4[random(5)] + "!\n\n" NOR, me, target);

		if( me->query_skill("finger") >= 190 )
		message_vision(HIR "\n$N指端微伸,劲力无影无踪地发出,$n顿时全身酸麻,已被点中了" + xuedao5[random(7)] + "!\n\n" NOR, me, target);

		me->add("neili", (-50)*time);
		target->start_busy(time);
        }
	else
	{	
		message_vision(HIW "\n$N一指点去,可是$n早已料敌机先,一闪身避了开去! \n\n$N身前顿时空门大露,狼狈地招架着 .... \n" NOR, me, target);
                // if( !target->is_killing(me) ) target->kill_ob(me);
                me->start_busy(time/5);
        }
        return 1;
}
Example #20
0
int perform(object me, object target)
{
        string msg;
        int count, ap, dp;
        int lvl;
        int i;

        if (userp(me) && ! me->query("can_perform/wuluo-zhang/bian"))
                return notify_fail("你还没有受过高人指点,无法施展" BIAN "。\n");

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

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

        if (objectp(me->query_temp("weapon")))
                return notify_fail(BIAN "只能空手施展。\n");

        if ((lvl = (int)me->query_skill("wuluo-zhang", 1)) < 100)
                return notify_fail("你五罗轻烟掌不够娴熟,难以施展" BIAN "。\n");

        if (me->query_skill_mapped("strike") != "wuluo-zhang")
                return notify_fail("你没有激发五罗轻烟掌,难以施展" BIAN "。\n");

        if (me->query_skill_prepared("strike") != "wuluo-zhang")
                return notify_fail("你没有准备五罗轻烟掌,难以施展" BIAN "。\n");

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

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

        msg = HIC "$N" HIC "施出五罗轻烟掌绝技,单掌轻轻一抖,登时化出五道掌"
              "影,轻飘飘向$n" HIC "拍去。\n" NOR;
        me->add("neili", -50);

        ap = ap_power(me, "strike");
        dp = dp_power(target, "force");
             
        if (ap / 2 + random(ap) > dp)
        {
                msg += HIR "$n" HIR "顿时觉得眼花缭乱,全然分辨"
                       "不清真伪,只得拼命运动抵挡。\n" NOR;
                count = lvl / 10;
                me->add_temp("apply/attack", count);
        } else
        {
                msg += HIC "可是$n" HIC "凝神顿气,奋力抵挡,丝"
                       "毫不受掌影的干扰,。\n" NOR;
                count = 0;
        }
        message_combatd(msg, me, target);

        for (i = 0; i < 5; i++)
        {
                if (! me->is_fighting(target))
                        break;
                COMBAT_D->do_attack(me, target, 0, 0);
        }
        me->start_busy(1 + random(5));
        me->add_temp("apply/attack", -count);
        return 1;
}
Example #21
0
int perform(object me, object target)
{
        object anqi;
        int damage;
        string msg;
        int ap, dp;

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

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

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

        if (objectp(me->query_temp("weapon")))
                return notify_fail(XIAN "只能空手施展。\n");

        if (! objectp(anqi = me->query_temp("handing"))
           || (string)anqi->query("skill_type") != "throwing")
                return notify_fail("你现在手中并没有拿着暗器。\n");

        if (me->query_skill_mapped("strike") != "bagua-zhang") 
                return notify_fail("你没有激发八卦掌,难以施展" XIAN "。\n");

        if (me->query_skill_prepared("strike") != "bagua-zhang") 
                return notify_fail("你没有准备八卦掌,难以施展" XIAN "。\n");

        if (me->query_skill_mapped("throwing") != "bagua-biao") 
                return notify_fail("你没有激发八卦镖诀,难以施展" XIAN "。\n");

        if ((int)me->query_skill("bagua-zhang", 1) < 120)
                return notify_fail("你的八卦掌不够娴熟,难以施展" XIAN "。\n");

        if ((int)me->query_skill("bagua-biao", 1) < 120)
                return notify_fail("你的八卦镖诀不够娴熟,难以施展" XIAN "。\n");

        if ((int)me->query_skill("force") < 150)
                return notify_fail("你的内功火候不够,难以施展" XIAN "。\n");

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

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

        msg = HIY "突然只听$N" HIY "喝道:“$n" HIY "看招!”"
              "说完单手一扬,袖底顿时窜出一道金光,直射$n" HIY
              "而去!\n" NOR;

        ap = me->query_skill("strike", 1) +
             me->query_skill("throwing");

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

        me->start_busy(3);
        if (anqi->query_amount() > 0)anqi->add_amount(-1);

        if (ap / 2 + random(ap) > dp)
        { 
                damage = ap / 3 + random(ap / 2);
                me->add("neili", -100);
                msg += COMBAT_D->do_damage(me, target, UNARMED_ATTACK, damage, 30,
                                           HIY "可只见$n" HIY "哈哈一笑,身子一矮"
                                           ",躲了过去。\n" NOR + HIR "哪知方才的"
                                           "暗器竟是虚招,等$p" HIR "反应时$N" HIR
                                           "已至跟前,双掌齐施,重重的印在$n" HIR
                                           "胸前。\n" NOR);
        } else
        {
                msg += HIY "可是$p" HIY "看破了$P" HIY "的企图,没"
                       "有受到迷惑,招手将暗器全部揽了下来。\n" NOR;
        }
        message_combatd(msg, me, target);

        return 1;
}
Example #22
0
int exert(object me, object target)
{
	string msg;
	int success, ap, dp;


  if ( userp(me) && !wizardp(me) && 
  !me->query("perform/bx_arrow") &&
  !me->query("can_perform/wudu-shengong/bx_arrow") && 
  !me->query_temp("murong/xingyi"))
   return notify_fail("你所使用的外功中没有这种功能。");

	if( !objectp(target) ) target = offensive_target(me);
	
	if( !target || !target->is_character() || target == me ||	
	  	!me->is_fighting(target) ||
  	  !living(target) || target->query_temp("noliving") )
		return notify_fail("碧血箭只能在战斗中使用。\n");
	if( !userp(me))
		return notify_fail("只有玩家才能玩命。\n");

	if((int)me->query("max_neili") < 400 )
		return notify_fail("你的内力不够,不能有效施展碧血箭!\n");

	if((int)me->query_skill("force",1) < 50 ||
		(int)me->query_skill("wudu-shengong",1) < 50 )
		return notify_fail("你的内功修为不够,不能有效施展碧血箭!\n");

	if((int)me->query("combat_exp") < (int)target->query("combat_exp")/10)
		return notify_fail("对方武功强你十倍,不会有用的,还是快跑吧!\n");

	message_combatd( HIC
 "$N双目血红,披头散发,仰天发出一声悲啸!\n\n$N把心一横,在自己舌尖狠命一咬,将毕生功力化做一道奇毒血箭向$n喷了过去!\n" NOR,me,target);

	success = 1;
	ap = me->query_skill("force",1)+me->query_skill("wudu-shengong",1);
	ap = ap /2 ;
	ap = ap * ap * ap/10;
	ap = ap+(int)me->query("combat_exp");
//	ap = ap * ap;
	dp = target->query("combat_exp");
//	dp = dp * dp;
	if( random(ap+dp) < random(dp) ) success = 0;

	ap = (int)me->query("max_neili");
	dp = (int)target->query("max_neili");
	if( ap < random(dp) ) success = 0;

	if(success == 1 )
	{
		message_combatd(HIR"结果$n促不及防被血箭射个正着,顿时发出一声惨叫!$N见状哈哈大笑一声,眼前一黑倒在地上。\n" NOR,me,target);

		target->kill_ob(me);
		me->kill_ob(target);
		me->add("max_neili", -50);
		me->save();

		target->receive_wound("qi", (int)target->query("max_qi")+1, me);
		target->receive_wound("jing", (int)target->query("max_jing")+1,me);
		COMBAT_D->report_status(target);

		me->receive_wound("qi", (int)me->query("max_qi")+1, target);
		me->receive_wound("jing", (int)me->query("max_jing")+1, target);
		COMBAT_D->report_status(me);
	}
	else {
		message_combatd(HIR"但是血箭被$n内力反震,化做一蓬血雾四散飘去!\n$N一声惨笑,长叹一声,眼前一黑倒在地上。\n" NOR,me,target);
		target->kill_ob(me);
		me->kill_ob(target);

		me->add("max_neili", -30);
		me->save();

		me->receive_wound("qi", (int)me->query("max_qi")+1, target);
		me->receive_wound("jing", (int)me->query("max_jing")+1, target);
		COMBAT_D->report_status(me);
	}

	return 1;
}
Example #23
0
int perform(object me, object target)
{
object weapon;
int damage;
      string msg,str; 
        if( !target ) target = offensive_target(me);
        if( !target
        ||      !target->is_character()
        ||      target->is_corpse()
        ||      target==me)
                return notify_fail("你要对谁施展这一招「暴雪天威」?\n");
    if(!wizardp(me)&&(string)me->query("family/family_name") != "大雪山" )
   return notify_fail("你的冰魄寒刀是从哪里偷学来的?\n");
        if(!me->is_fighting())
                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") < 500 )
                return notify_fail("你的精神不足,没法子施用外功!\n");
        if((int)me->query_skill("bingpo-blade", 1) < 100)
                return notify_fail("你的冰魄寒刀级别还不够,使用这一招会有困难!\n");
        if (me->query_temp("xs_pfm_busy")) return notify_fail("绝招用的太多太滥就不灵了。\n");
 message_vision(HIW"\n$N运起寒气,身形一转,四周顿时冰冻数尺,空气中寒气逼人$n只冻的忘记的抵抗!\n"NOR,me,target);
 me->set_temp("noauto",1);
 target->start_busy(random(2));
 damage=random(((int)me->query_skill("blade")));
// target->receive_wound("kee",damage);
//没有判断不应该有这样的直接伤害
 message_vision(HIW"\n$N嘿嘿一声冷笑,竟然隐入雪花之中。$n大急,四下找寻$N,忽然背后一阵寒气随着\n"NOR,me,target);
 message_vision(HIW"\n刀光狂袭过来!!!\n"NOR,me,target);
        COMBAT_D->do_attack(me, target, me->query_temp("weapon"));
        COMBAT_D->do_attack(me, target, me->query_temp("weapon")); 
        COMBAT_D->do_attack(me, target, me->query_temp("weapon")); 
 if(random(me->query("combat_exp"))>random(target->query("combat_exp"))/4)
 {
message_vision(HIY"\n打斗中,一只金色大鹏鸟远远飞来!$N和$n都看呆了!\n"NOR,me,target);
message_vision(HIY"\n突然大鹏鸟用翅膀一扇,顿时狂风大作!\n"NOR,me,target);
if(random(me->query("force_factor"))>target->query("force_factor")/4)
{
 message_vision(HIR"\n$N见机不可失,连忙攻出一招!\n"NOR,me,target);
 target->receive_damage("kee",damage*2); 
 target->receive_damage("sen",damage*2); 
 message_vision(HIR"\n狂风夹杂着碎石漫天飞舞,把$n砸得遍体鳞伤!\n"NOR,me,target);
 target->receive_wound("kee",damage);
 target->receive_wound("sen",damage);
 COMBAT_D->report_status(target);
}  
 else if(random(me->query("force_factor"))>target->query("force_factor")/2)
{
message_vision(HIR"\n狂风夹杂着碎石漫天飞舞,把$n砸得遍体鳞伤!\n"NOR,me,target);
target->receive_wound("kee",damage);
COMBAT_D->report_status(target);
}
else  
{
message_vision(HIR"\n狂风夹杂着碎石漫天飞舞,把$N和$n砸得遍体鳞伤!\n"NOR,me,target); 
target->receive_wound("kee",damage);
target->receive_wound("sen",damage);
COMBAT_D->report_status(target);
me->receive_wound("kee",damage/10);
COMBAT_D->report_status(me);
}        
}
 me->delete_temp("noauto");
 me->receive_damage("sen", 100);
 me->add("force", -300);
/* if( !target->is_fighting(me) ) {
               if( living(target) ) {
                        if( userp(target) ) target->fight_ob(me);
                        else target->kill_ob(me);
                }
        }

*/
    if (target->query("eff_kee")<0 || (!living(target) && target->query("kee")<0))  
{str=target->name()+HIM"被"+me->name()+"用雪山秘传"NOR+HIW"「暴雪天威」"+HIM"杀死了,据说"+target->name()+"的尸体被封印在一个巨大的"NOR+HIW"冰棺"+HIM"里面!";
message("channel:rumor",HIM"【空穴来风】某人:"+str+"\n"NOR,users());
 }
          me->start_busy(2);
      me->set_temp("xs_pfm_busy",1);
//  me->set_temp("no_move",1);
//  call_out("remove_no_move",5,me);
        call_out("remove_effect",2+random(3),me);
        return 1;
}
Example #24
0
int perform(object me, object target)
{
	string weapon;
	object weapon1;
	int    lvl1, lvl2, amount;

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

	if( !target
	||	!target->is_character()
	||	!me->is_fighting(target) )
		return notify_fail("剑掌五连环只能对战斗中的对手使用。\n");

	weapon1 = me->query_temp("weapon");
        if( !objectp(weapon1) || weapon1->query("skill_type") != "sword" )
                return notify_fail("你手中无剑,如何使得剑掌五连环?\n");

	if( me->query_skill_mapped("strike") != "hunyuan-zhang" )
		return notify_fail("你所用的并非混元掌,不能与华山剑法配合施展剑掌五连环!\n");

	if( me->query_skill_prepared("strike") != "hunyuan-zhang" )
                return notify_fail("你所备的并非混元掌,不能与华山剑法配合施展剑掌五连环!\n");

	if( me->query_skill_mapped("force") != "zixia-gong" )
		return notify_fail("你所用的并非紫霞功,无法施展剑掌五连环!\n");

	if( me->query_skill("zixia-gong", 1) < 60 )
		return notify_fail("你的紫霞功火候未到,无法施展剑掌五连环!\n");

	if( (lvl1=me->query_skill("strike")) < 100 )
		return notify_fail("剑掌五连环需要精湛的混元掌配合,方能有效施展!\n");

	if( (lvl2=me->query_skill("sword")) < 100 )
		return notify_fail("你华山剑法修为不足,还不会使用剑掌五连环!\n");

	amount = (lvl1+lvl2) / 15;

	if ( amount < 40 ) amount = 40;
	if ( amount > 80 ) amount = 80;

	if( me->query("neili") <= amount*4 )
		return notify_fail("你的内力不够使用剑掌五连环!\n");
	if( me->query("jingli") <= amount*2 )
		return notify_fail("你的精力不够使用剑掌五连环!\n");

	if( me->query_skill_prepared("cuff") == "pishi-poyu" ) {
		me->set_temp("restore", 1);
		me->prepare_skill("cuff");
	}

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

	me->add_temp("apply/damage", amount);
	me->add_temp("apply/attack", amount*2);
	me->add_temp("apply/dodge", amount*2);

	message_vision(HIR "\n突然间$N身形电闪,瞬间逼近$n,剑掌交替中向$n奋力击出三剑两掌!\n\n" NOR, me, target);

	COMBAT_D->do_attack(me, target, me->query_temp("weapon"));
	weapon->unequip();
	COMBAT_D->do_attack(me, target, me->query_temp("weapon"));
	weapon->wield();
	COMBAT_D->do_attack(me, target, me->query_temp("weapon"));
	weapon->unequip();
	COMBAT_D->do_attack(me, target, me->query_temp("weapon"));
	weapon->wield();
	COMBAT_D->do_attack(me, target, me->query_temp("weapon"));

	me->start_busy(1+random(3));
	me->add_temp("apply/damage", -amount);
	me->add_temp("apply/attack", -amount*2);
	me->add_temp("apply/dodge", -amount*2);
	me->add("neili", -amount*3);
	me->add("jingli", -amount*2);
	if( me->query_temp("restore") ) me->prepare_skill("cuff", "pishi-poyu");

	return 1;
}
Example #25
0
int perform(object me)
{
	string msg;
	object weapon, weapon2, target;
	int skill, ap, dp, wound, damage;

	if(me->query("family/master_id") != "feng qingyang")
	   return notify_fail("你不是风清扬的弟子,不能使用绝招!\n");

	me->clean_up_enemy();
	target = me->select_opponent();

	skill = me->query_skill("lonely-sword",1);

	if( !(me->is_fighting() ))
	    return notify_fail("「破索式」只能对战斗中的对手使用。\n");

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

	if (!objectp(weapon2 = target->query_temp("weapon"))
	|| (string)weapon2->query("skill_type") != "whip")
	    return notify_fail("对方没有使索,你用不了「破索式」。\n");

	if( skill < 60)
	    return notify_fail("你的独孤九剑等级不够, 不能使用「破索式」!\n");

	if( me->query("neili") < 50 )
	    return notify_fail("你的内力不够,无法运用「破索式」!\n");

	msg = HIC "$N使出独孤九剑之「破索式」,剑化流星,迅急无比地点向$n的手腕。\n";
	message_combatd(msg, me, target);

	damage = 10 + random(skill / 2);
	ap = me->query_skill("sword") + skill;
	dp = target->query_skill("whip") / 2;
	if( dp < 1 )
	    dp = 1;
	if( random(ap) > dp )
	{
	    if(userp(me))
		 me->add("neili",-50);
	    msg = "结果$n被$p攻了个措手不及,手腕一麻,手中";
	    msg += weapon2->name();
	    msg += "脱手而出!\n" NOR;

	    me->start_busy(random(2));
	    target->receive_damage("qi", damage);
	    target->start_busy(2);
	    weapon2->move(environment(me));
/*
	    if (weapon2->query("ownmake")==1)
	    {
		weapon2->move(target);
		msg += "那可是$n的随身家伙!$n手一伸将它捡回来。\n" NOR;
	    }
*/
       }
	else
	{
	    if(userp(me))
		 me->add("neili",-30);
	    msg ="可是$n看破了$N的企图,迅即退开,使$N的「破索式」没有起到作用。\n"NOR;
		 me->start_busy(4);
	}
	message_combatd(msg, me, target);

	return 1;
}
Example #26
0
int cast(object me, object target)
{
	object *member, victim = offensive_target(me);
        string msg;
        int a_fali, d_fali, damage, ap, dp, i, j;
        member = me->query_team();
 
	if( !victim
	||      !victim->is_character()
	||      victim->is_corpse()
	||      victim==me )
		return notify_fail("你想对谁使用「雷电怒涛」?\n");
	
	if( sizeof(member) != 2 )
                return notify_fail("「雷电怒涛」必须两个人使用!\n");
	j=sizeof (member);
	if( j > 2 ) j = 2;
	for (i=0;i<j;i++)
        {
        target=member[i];
	if( !target||!living(target)||!target->is_character())
		return notify_fail("你想与谁进行「雷电怒涛」?\n");
	if( victim->query("id") == target->query("id") )
		return notify_fail("不能与你的对手进行「雷电怒涛」。\n");
	if( !victim->is_character() || !target->is_fighting(victim) )
		return notify_fail("只能对你们正在战斗中的对手使用「雷电怒涛」。\n");
	if( target->is_busy() || target->query_temp("pending/meditating") 
	    || target->query_temp("qingwang")|| (int)target->query_temp("no_cast")==1 )
	        return notify_fail("你们现在不能用魔法!\n");	
	if( !target->is_fighting(victim) )
		return notify_fail("你的同伴不在与对手战斗中。\n");
	if(target->query_skill("dao", 1) < 120 || target->query_skill_mapped("spells") !="dao" )
		return notify_fail("你们的道家仙法等级不够!\n");
	if((int)target->query("mana") < 800+(int)target->query("mana_factor") )
		return notify_fail("你们的魔力不够!\n");
	if((int)target->query("sen") < 200 )
		return notify_fail("你们的精神不足,没法子施用法术!\n");
	}
	me->add("mana", -150-(int)me->query("mana_factor"));
	me->receive_damage("sen", 150);
	target->add("mana", -50-(int)target->query("mana_factor"));
	target->receive_damage("sen", 100);

	
 msg = HIC
"$N和$n口中同时念了几句咒文,半空中现出真武大帝,只见他十指箕张,一道惊雷带着数道闪电对着"+victim->query("name")+"当头击下!\n" NOR;

        ap = me->query_skill("spells");
        ap = ap / 10 * ap * ap ;
        ap = ap/500000*(1+me->query("daoxing"));
        ap += target->query("daoxing")/2;
        dp = victim->query("daoxing");
        if( random(ap + dp) > dp ) {
                a_fali = (int)me->query("max_mana") / 20 + random((int)me->query("eff_sen") / 10);
                d_fali = (int)victim->query("max_mana") / 20 + random((int)victim->query("eff_sen") / 10);  
                a_fali+= (me->query("mana_factor")+ target->query("mana_factor")/2)/100*150;    
     		d_fali+= random((int)victim->query("mana_factor"));
     		
     		damage = a_fali - d_fali;
                if( damage > 0 ) {
     msg += HIC "结果击个正着,"+victim->query("name")+"被雷电打的浑身焦黑,神智不清!\n" NOR;
     		damage += damage*(int)me->query_skill("spells")/120;
                        victim->receive_damage("sen", damage, me);
                        victim->receive_wound("sen", damage/2, me);
                        victim->receive_damage("kee", damage, me);
                        victim->receive_wound("kee", damage/2, me);
                        me->improve_skill("dao", 1, 1);
                        target->improve_skill("dao", 1, 1);
                }
       else {
     msg += HIC "结果雷电被"+victim->query("name")+"以法力反激,反而击中了$N和$n!\n" NOR;
     damage -= (int)victim->query("mana_factor");
     damage -= -damage*(int)target->query_skill("spells")/180;
                        me->receive_damage("sen", -damage, target);
                        me->receive_wound("sen", -damage/2, target);
                        me->receive_damage("kee", -damage, target);
                        me->receive_wound("kee", -damage/2, target);
                        target->receive_damage("sen", -damage, target);
                        target->receive_wound("sen", -damage/2, target);
                        target->receive_damage("kee", -damage, target);
                        target->receive_wound("kee", -damage/2, target);
                        me->improve_skill("dao", 1, 1);
                        target->improve_skill("dao", 1, 1);
       }
             } 
   else
                msg += "但是被"+victim->query("name")+"躲开了。\n";

        message_vision(msg, me, target, victim);
        if( damage > 0 ){
         COMBAT_D->report_status(victim);
        		COMBAT_D->report_sen_status(victim);
        } 		
        else if( damage < 0 ) {
        	COMBAT_D->report_status(me);
        		      COMBAT_D->report_sen_status(me);
               	COMBAT_D->report_status(target);
         		      COMBAT_D->report_sen_status(target);
        } 		      
    
        me->start_busy(2+random(2));
        target->start_busy(2+random(2));
        return 3+random(5);
}
Example #27
0
int perform(object me, object target)
{
        object weapon;
        int level, ap, dp;
        string msg;

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

        if (userp(me) && ! me->query("can_perform/huashan-jianfa/jie"))
                return notify_fail("你还没有受过高人指点,无法施展" JIE "。\n");

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

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

        if (target->is_busy())
                return notify_fail(target->name() + "目前正自顾不暇,放胆攻击吧!\n");
                
        if ((level = me->query_skill("huashan-jianfa", 1)) < 30)
                return notify_fail("你的华山剑法不够娴熟,无法施展" JIE " 。\n");

        if (me->query_skill_mapped("sword") != "huashan-jianfa")
                return notify_fail("你没有激发华山剑法,无法施展" JIE "。\n");

        if (me->query("neili") < 60)
                return notify_fail("你现在真气不够,无法使用「截手式」。\n");

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

        msg = HIW "\n但见$N" HIW "长剑一勒,使出华山剑法绝技之"
              "「" HIG "截手式" HIW "」,转折之际天衣无缝,一"
              "剑既出,后着源源倾泻,如大浪跃滩,层层叠叠,迅"
              "然扑向$n" HIW "!\n" NOR;

        me->add("neili", -50);
        ap = ap_power(me, "sword");
        dp = dp_power(target, "parry");

        if (ap / 2 + random(ap) > dp) 
        {
                msg += HIR "结果$p" HIR "瘁不及防,连连倒退"
                       "几步,一时间无法回手!\n" NOR;
                target->start_busy(level / 80 + 3);
//                target->start_busy(level / 30 + 2);^M
        } else
        {
                if (objectp(weapon = target->query_temp("weapon")))
                        msg += CYN "但是$p" CYN "识破了$P" CYN "的用意,"
                               "自顾将手中的" + weapon->name() +
                               CYN "舞成一团光花,$P"
                               CYN "一怔之下再也攻不进去。\n" NOR;
                else
                        msg += CYN "但是$p" CYN "双手戳点刺拍,将$P"
                               CYN "的来招一一架开。\n" NOR;

                me->start_busy(1);
        }
        message_sort(msg, me, target);

        return 1;
}
Example #28
0
void skill_improved(object me)
{
    tell_object(me, HIR "���Ȼ���ĵ�����һ�ɶ��ɱ��ɱ��ɱ����Ҫɱ�������ˣ�\n" NOR );
    me->add("shen", -200);
}
Example #29
0
File: sheshen.c Project: cosin/XYJ
int perform(object me, object target)
{
	string msg, str;
	int mydf;
	int ap, dp, pp;
	int yourint, myint, mystr, youstr;
	int damage_bonus, damage, wound;
	int delay;
	object ob;

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

	if( !target
	||	!target->is_character()
	||	!me->is_fighting(target) )
		return notify_fail("不在战斗中,舍什么身?\n");

	mydf=(int)me->query_skill("dragonfight",1);
	if(mydf<100) 
		return notify_fail("你的修为不够深,还不能领悟舍身技的精髓。\n");
	mydf=(int)me->query_skill("dragonforce",1);
	if(mydf<100) 
		return notify_fail("你的修为不够深,还不能领悟舍身技的精髓。\n");
	
	if((int)me->query("force")<500) return
	    notify_fail("你的内力不够了。\n");

	msg = CYN "$N右掌挥出,斩向$n的左肩,\n";
	ob=target->query_temp("weapon");
	str="右手";
	if(objectp(ob)) str="手中的"+ob->query("name");
	ap=COMBAT_D->skill_power(me, "unarmed", SKILL_USAGE_ATTACK);
	dp=COMBAT_D->skill_power(target,"dodge", SKILL_USAGE_DEFENSE);
	dp/=2;
	pp=COMBAT_D->skill_power(target,"unarmed", SKILL_USAGE_DEFENSE);
	if(objectp(ob)) pp/=2;

	damage_bonus=me->query_str()/2;

	if( random(ap+dp)>dp) {
		msg += "$n想用"+str+"挡开,不料却被$N一把抓住。\n";
		msg += "$N顺势上步,使出了「舍身技」!\n\n" NOR;
		msg += CYN "$N左脚铲向$n右腿膝盖,";
		if(random(ap+pp)>pp) {
			msg += "结果正铲在$n的小腿上。\n" NOR;
			damage=calculate_damage(me, target, 100, damage_bonus);
			wound=random(damage-(int)target->query_temp("apply/armor"));
			if(damage>0) {
				target->receive_damage("kee", damage, me);
				if(wound>0) target->receive_wound("kee", wound, me);
				msg+=COMBAT_D->damage_msg(damage, "内伤");
			}
		}
		else msg+="结果被$n提腿挡开了。\n" NOR;
		msg += CYN "\n紧跟着$N收左脚,提左膝撞向$n的软肋,\n";
		msg += "同时右手曲肘撞向$n的面门,";
		if(random(ap+pp)>pp) {
			msg += "结果正中$n。\n" NOR;
			damage=calculate_damage(me, target, 120, damage_bonus);
			wound=random(damage-(int)target->query_temp("apply/armor"));
			if(damage>0) {
				target->receive_damage("kee", damage, me);
				if(wound>0) target->receive_wound("kee", wound, me);
				msg+=COMBAT_D->damage_msg(damage, "内伤");
			}
		}
		else msg+="结果被$n挡开了。\n" NOR;
		msg += CYN "\n$N接着顺势用右手抓住$n右臂,半转身将$n摔了出去,";
		if(random(ap+pp)>pp) {
                        msg += "结果$n一跟头摔在地上。\n" NOR;
                        damage=calculate_damage(me, target, 150, damage_bonus);
			wound=random(damage-(int)target->query_temp("apply/armor"));
                        if(damage>0) {
                                target->receive_damage("kee", damage, me);
				if(wound>0) target->receive_wound("kee", wound, me);
                                msg+=COMBAT_D->damage_msg(damage, "内伤");
                        }
                }
                else msg+="结果被$n一个踉跄,却没摔倒。\n" NOR;
		message_vision(msg, me, target);
		msg+=COMBAT_D->report_status(target, 0);
	} else {
		msg += "可是$p看破了$P的企图,向后越开。\n" NOR;
		message_vision(msg, me, target);
	}
	delay = random(3)+2;
	me->start_busy(delay);
	me->add("force", -300);

	return 1;
}
Example #30
0
int cast(object me, object target)
{
        string msg;

        string tar_spells,tar_dodge;

        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 (!target->is_fighting(me))
               return notify_fail("只有在战斗中才能使用御剑伤敌!\n");

        if((int)me->query("kee") < 200 )
                return notify_fail("你体力不足,用不了御剑伤敌!\n");

        if((int)me->query("force") < 200 )
                return notify_fail("你须运足内力才能使用御剑伤敌!\n");

        if((int)me->query_skill("yujian-xianfa", 60) < 40 )
                return notify_fail("你的御剑大法还不够纯熟。\n");

        if((int)me->query("mana") < 500 )
                return notify_fail("你的法力不足以御剑伤敌!\n");

        msg = HIW"\n$N趁$n不备,怒吼一声,转瞬间你已站在武器上,"
                 +"飞过去向$n刺去!\n" NOR;

        ap=(int)me->query_skill("yujian-xianfa", 60)
              +(int)me->query_skill("spells", 1)/2;

        tar_spells=target->query_skill_mapped("spells");
        if (! tar_spells) dp=(int)target->query_skill("spells", 1)/2;
        else dp=(int)target->query_skill("spells", 1)/2
              +(int)target->query_skill(tar_spells, 1);

        tar_dodge=target->query_skill_mapped("dodge");
        if (! tar_dodge) dg=(int)target->query_skill("dodge", 1)/2;
        else dg=(int)target->query_skill("dodge", 1)/2
              +(int)target->query_skill(tar_dodge, 1);
        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;
//printf("dp=%5d dg=%5d",dp,dg);
        damage=me->query("max_mana")/100+1;
        damage=(me->query("mana_factor")+me->query("str")+random(damage))*2;
        if (dp<30)
          {           
          msg += HIW "不料$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", -100);
        me->add("mana", -100);

        target->kill_ob(me);
//        message_vision(msg, me, target);

        return 1;
}