mmg@zy 发表于 2008-4-28 11:02:17

hmg 的一些perform

// nizhuan.c 逆转九阴
// by snowman@SJ

#include <ansi.h>

inherit F_CLEAN_UP;

void remove_effect(object me);

string exert_name(){ return HIW"逆转九阴"NOR; }

int exert(object me, object target)
{
      int skill;

      if( !target ) target = me;
      
      if(!(int)me->query_skill("hamagong", 1) )
                return 0;
      if( me->query("oyf/hamagong") < 2 )
                return notify_fail("逆运蛤蟆功使经脉倒转?找死啊?\n");
      if((int)me->query("neili") < 300)
                return notify_fail("你的内力不够。\n");
      if((int)me->query("jingli") < 200)
                return notify_fail("你的精力不够。\n");
      if((int)me->query_temp("hmg_nizhuan") )
                return notify_fail("你已经逆运了九阴。\n");

      skill = me->query_skill("force") / 2 + me->query_skill("hamagong", 1);
      skill /= 2;
      me->add("neili", -200);
      me->add("jingli", -20);

      message_vision(HIW "\n$N双手撑地,口中发出一连窜低喉声,一股股内劲勃发使$N双足离地,呈头下足上之势。\n" NOR, me);
      tell_object(me, HIW "你感觉体内蛤蟆功随九阴逆转,好像有股巨大的力量要崩发出来一样。\n" NOR);

      me->add_temp("apply/dexerity", skill/4);
      me->add_temp("apply/strength", skill);
      me->add_temp("apply/attack", skill/4);
      me->set_temp("hmg_nizhuan", skill);

      me->start_call_out( (: call_other, this_object(), "remove_effect", me :), skill);

      if( me->is_fighting() ) me->start_busy(1);

      return 1;
}

void remove_effect(object me)
{
        int amount;
        if(!me) return;
       
        if( !intp(amount = me->query_temp("hmg_nizhuan")) )
                return;
               
      me->add_temp("apply/strength", - amount);
      me->add_temp("apply/dexerity", - amount/4);
      me->add_temp("apply/attack", - amount/4);
      me->delete_temp("hmg_nizhuan");
      tell_object(me, HIW "你逆转九阴运功过久,经脉又渐渐复原。\n" NOR);
}

int help(object me)
{
        write(WHT"\n蛤蟆功「逆转九阴」:"NOR"\n");
        write(@HELP
        欧阳锋的独门绝技蛤蟆功乃是天下武学中的绝顶功夫。自从他逆练九阴成疯
        而又夺得天下第一的称号后,这蛤蟆功更大逆寻常武功,更加怪异无伦。这
        逆转九阴之法,便是当年他传与杨过的绝技!
       
        要求:        内力 300 以上;
                解开蛤蟆功秘题二。   
HELP
        );
        return 1;
}

mmg@zy 发表于 2008-4-28 11:04:58

继续,perform hama
// hama.c 蛤蟆功
// by snowman@SJ

#include <ansi.h>

inherit F_SSERVER;

int perform(object me, object target)
{
      int damage, p;
      string msg, dodge_skill;

      if( !target ) target = offensive_target(me);
      
      if( !objectp(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("parry") != "hamagong")
                return notify_fail("你必须先将蛤蟆功运用于掌法之中才行。\n");

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

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

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

      if (me->query_str(1) < 30 )
                return notify_fail("你的力量太小,使不出用蛤蟆绝招!\n");
      
      msg = BLU "\n$N身子蹲下,左掌平推而出,使的正是$N生平最得意的「蛤蟆功」绝招,掌风直逼$n而去!\n"NOR;      
      me->set_temp("hmg_hama", 1);
      me->start_perform(4, "「蛤蟆功」");
      me->start_busy(2);
      
      if (random(me->query_skill("force")) > target->query_skill("force") /3 ){
                target->start_busy(2);
                me->add("neili", -200);
                me->add("jingli", -20);
                damage = (int)me->query_skill("hamagong", 1);               
                damage = damage*2 + random(damage)*2;
                if(me->query("neili") > target->query("neili")*2 ) damage += random(damage);
                target->receive_damage("qi", damage, me);
                target->receive_wound("qi", damage/2, me);
                p = (int)target->query("eff_qi")*100/(int)target->query("max_qi");
                msg += COMBAT_D->damage_msg(damage, "内伤");
                msg += "( $n"+COMBAT_D->eff_status_msg(p)+" )\n";
                call_out("perform2", 1, me, target, p, damage);   
                }
      else {
                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);
      }
      message_vision(msg, me, target);
      return 1;
}

int perform2(object me, object target, int p, int damage)
{
      string msg, dodge_skill;

      if( !target || !me || !living(me)
         || !me->is_fighting(target)
         || environment(target)!=environment(me) || !living(target)
         || (int)me->query("neili") < 500)
                return 0;
               
      msg = BLU "\n$N左掌劲力未消,右掌也跟着推出,功力相叠,「蛤蟆功」掌风排山倒海般涌向$n!\n"NOR;
      me->start_perform(5, "「蛤蟆功」");
      me->start_busy(2);
      if (random(me->query_skill("force")+50) > target->query_skill("force") / 3 &&
            me->query_skill("hamagong", 1) > 124 ){
                target->start_busy(2);
                me->add("neili", -300);
                me->add("jingli", -30);                              
                damage = damage*2 + random(damage)*3;
                if(me->query("neili") > target->query("neili")*2 ) damage += random(damage);
                target->receive_damage("qi", damage, me);
                target->receive_wound("qi", damage/2, me);
                p = (int)target->query("qi")*100/(int)target->query("max_qi");
                msg += COMBAT_D->damage_msg(damage, "内伤");
                msg += "( $n"+COMBAT_D->eff_status_msg(p)+" )\n";               
                call_out("perform3", 1, me, target, p, damage);
      }
      else
      {
              target->start_busy(1);
                me->add("neili", -200);
                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);
      }
      message_vision(msg, me, target);
      return 1;
}

int perform3(object me, object target, int p, int damage)
{
      string msg, dodge_skill;

      if(!me || !target || !living(target) || !living(me)
         || !me->is_fighting(target)
         || environment(target)!=environment(me)
         || (int)me->query("neili") < 700)
            return 0;

      msg = BLU "\n$N双腿一登,双掌相并向前猛力推出,$n连同身前方圆三丈全在「蛤蟆功」劲力笼罩之下!\n"NOR;
      me->start_perform(6, "「蛤蟆功」");
      me->start_busy(2);
      if (random(me->query_skill("force")+70) > target->query_skill("force") / 3 &&
            me->query_skill("hamagong", 1) > 149 )
      {
                target->start_busy(2);
                me->add("neili", -400);
                me->add("jingli", -40);                              
                damage = damage*3 + random(damage)*3;
                if(me->query("neili") > target->query("neili")*2 ) damage += random(damage);
                target->receive_damage("qi", damage, me);
                target->receive_wound("qi", damage/2, me);
                p = (int)target->query("eff_qi")*100/(int)target->query("max_qi");
                msg += COMBAT_D->damage_msg(damage, "瘀伤");
                msg += "( $n"+COMBAT_D->eff_status_msg(p)+" )\n";   
      } else
      {
                target->start_busy(1);
                me->add("neili", -300);
                target->add("jingli", -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);
      }
      message_vision(msg, me, target);
      return 1;
}

string perform_name(){ return BLU"蛤蟆功"NOR; }

int help(object me)
{
        write(WHT"\n蛤蟆功「蛤蟆功」:"NOR"\n");
        write(@HELP
        欧阳锋的独门绝技蛤蟆功乃是天下武学中的绝顶功夫。

        要求:        内力 500 以上;
                最大内力 1500 以上;
                蛤蟆功 100 以上;
                基本掌法 100 以上;
                空手备掌法为蛤蟆功。

HELP
        );
        return 1;
}

mmg@zy 发表于 2008-4-28 11:05:33

最后是 yun qudu

// qudu.c for hamagong
// Modified by snowman@SJ

#include <ansi.h>

int exert(object me)
{
        mapping poison;

        if( me->is_fighting() )
                return notify_fail("战斗中运功驱毒?找死吗?\n");

        if ((int)me->query_skill("hamagong", 1) < 50)
                return notify_fail("你的蛤蟆功功修为还不够。\n");

        if ((int)me->query_skill("poison", 1) < 50)
                return notify_fail("你对“毒”还不是很精通。\n");

      if( me->query("oyf/hamagong") < 2 )
                return notify_fail("你的蛤蟆功功修为还不够。\n");

        if( (int)me->query("neili") < 500 )
                return notify_fail("你的真气不够。\n");

        poison = me->query_conditions_by_type("poison");
        if (!mapp(poison))
                return notify_fail("你深深吸了口气,口中“咕咕。。。”地叫了几声。\n");
                   
        write( HIW"\n你倒运气息,头下脚上,气血逆行,将毒气从进入身子之处逼了出去。\n" NOR);
        message("vision", HIW+me->name()+"身上白气一现即消,张口哼了一声。\n"NOR, environment(me), me);
        me->clear_conditions_by_type("poison");
        me->add("neili", -500);
        me->start_busy(6);
        return 1;
}

string exert_name(){ return HIW"驱毒"NOR; }

int help(object me)
{
        write(WHT"\n蛤蟆功「驱毒」:"NOR"\n");
        write(@HELP
        欧阳锋的独门绝技蛤蟆功乃是天下武学中的绝顶功夫。

        要求:        内力 500 以上;
                基本毒技 50 以上;
                解开蛤蟆功秘题二。   
HELP
        );
        return 1;
}

qimen@zy 发表于 2008-12-13 10:35:03

有用吗 也解不了 有用吗 也解不了 有用吗 也解不了

xiaoying@zy 发表于 2008-12-19 23:25:27

本站无HAMA。。。。。。。。。。

dingdang@zy 发表于 2008-12-19 23:31:48

hmg开了啊??:lol :lol

darken@zy 发表于 2008-12-27 09:04:02

蛤蟆猛在哪里?。。。

zhx@zy 发表于 2008-12-27 20:48:26

看着不错,也只能看看:lol :lol :lol :lol

wesee@ts 发表于 2010-3-5 14:57:10

都是旧版本里面的,hmg的 珍贵就在于加爆多的后天str con和dex,现在本在强调所有skills都不加后天,那就没什么实际意义了

panix@ts 发表于 2010-3-11 13:28:49

pfm hama还是很猛,同级别三连击中了了肯定挂了!
命中很高啊!
页: [1] 2
查看完整版本: hmg 的一些perform