jion 发表于 2011-9-29 14:31:12

申请个公共特殊类武功

本帖最后由 jion 于 2011-9-29 14:46 编辑

锤法
作为特殊的存在
虽然稀有
但是怎么可以没有一门公共武功呢
强力要求阿姨开放一门以上....公共锤法
名称
开天辟地杵(锤)
开天式
辟地式
毁灭式

是开碧落 发表于 2011-10-7 17:03:44

你想达到什么目标?

jion 发表于 2011-10-7 19:45:48

好武功废动态武器嘿嘿

jion 发表于 2011-10-14 09:42:13

参考代码
#include <ansi.h>
inherit SKILL;

mapping *action = ({
([
"action":"$N跃在半空,一招「仙鹤展翅入灵山」,手中$w已化成无数棍影,令$n眼花缭乱,不知所措,连连倒退",
         "force" : 380,
         "dodge" : 20,
         "parry" : 20,
      "damage": 620,
         "lvl" : 0,
         "skill_name" : "仙鹤展翅入灵山",
         "damage_type":"挫伤"
]),
([
"action":"$N挺$w将$n的招式架住,顺势一招「玉马衔环拜仙宫」,$w上下左右飞快搅动,身随棍走,向$n压了下来",
         "force" : 300,
         "dodge" : 10,
         "parry" : 15,
      "damage": 630,
         "lvl" : 30,
         "skill_name" : "玉马衔环拜仙宫",
         "damage_type":"挫伤"
]),
([
"action":"$N一招「鸣鹿踏蹄觅仙草」,屈膝俯身,手中$w连点$n下盘,却未等招数用老,猛的一提,向$n的胸腹间戳去",
         "force" : 320,
         "dodge" : 15,
         "parry" : 20,
      "damage": 640,
         "lvl" : 60,
         "skill_name" : "鸣鹿踏蹄觅仙草",
         "damage_type":"挫伤"
]),
([
"action":"$N突然滚到在地,$n错愕间,一招「金鲤跃水潜天池」,竟从$n的裆下窜过,更不回头,$w反手扫向$n的$l",
         "force" : 640,
         "dodge" : 120,
         "parry" : 25,
      "damage": 660,
         "lvl" : 80,
         "skill_name" : "金鲤跃水潜天池",
         "damage_type":"挫伤"
]),
([
"action":"$N一招「灵猿献果赴蓬莱」,身形如电,绕着$n飞快奔跑,手中$w一招快似一招,刹那间向$n连打出十六棍",
         "force" : 680,
         "dodge" : 130,
         "parry" : 30,
      "damage": 680,
         "lvl" : 100,
         "skill_name" : "灵猿献果赴蓬莱",
         "damage_type":"挫伤"
]),
([
"action":"$N大踏步上前,劲贯双臂,手中$w大开大阖,呼呼风声中一招「飞鹰盘旋扫乾坤」扫向$n的腰间",
         "force" : 660,
         "dodge" : 130,
         "parry" : 40,
      "damage": 600,
         "lvl" : 120,
         "skill_name" : "飞鹰盘旋扫乾坤",
         "damage_type":"挫伤"
]),
([
"action":"$N大喝一声,一招「天龙出水腾宇宙」,$w脱手飞出,夹着劲风射向$n的前心,随即抢到$n的身后,伸手又把$w抄在手中",
         "force" : 600,
         "dodge" : 120,
         "parry" : 30,
      "damage": 680,
         "lvl" : 130,
         "skill_name" : "天龙出水腾宇宙",
         "damage_type":"挫伤"
]),
([
"action":"$N双目圆睁,口中默诵真言,一招「白象卷云憾天柱」,$w似有千斤,缓缓举起,又缓缓向$n的当头砸落",
         "force" : 550,
         "dodge" : 120,
         "parry" : 30,
      "damage": 500,
         "lvl" : 150,
         "skill_name" : "白象卷云憾天柱",
         "damage_type":"挫伤"
]),
});

int valid_enable(string usage) { return(usage == "club") || (usage =="parry"); }

int valid_learn(object me)
{
         mapping fam= me->query("family");
         if ((int)me->query("max_neili") < 1500)
                return notify_fail("你的内力不够。\n");
         if ((int)me->query_skill("yijinjing", 1) < 160)
                return notify_fail("你的易筋经内功火候太浅。\n");
         if((int)me->query_skill("zui-gun",1) <120)
                      return notify_fail("你的醉棍火候不足,难以领悟韦陀杵。\n");
         if((int)me->query_skill("zui-gun",1) <120)
                      return notify_fail("你的醉棍火候不足,难以领悟韦陀杵。\n");

         if((int)me->query_skill("longzhua-gong",1) <120)
                      return notify_fail("你的龙爪功不足,难以领悟韦陀杵。\n");

         if((int)me->query_skill("weituo-gun",1) <120)
                      return notify_fail("你的韦驮棍不足,难以领悟韦陀杵。\n");
         return 1;
}

string perform_action_file(string action)
{
      return __DIR__"weituo-chu/" + action;
}
string query_skill_name(int level)
{
         int i;
         for(i = sizeof(action)-1; i >= 0; i--)
               if(level >= action["lvl"])
                         return action["skill_name"];
}

mapping query_action(object me, object weapon)
{
         int i, level, lvl;
         object target;
         mapping pre;
         string *skill, a, b;
         
         level   = (int) me->query_skill("weituo-chu",1);
         lvl = (int)me->query_skill("longzhua-gong", 1);
         
         
         if ( level >= 200 && lvl >= 200 && random(level) > lvl / 2
         &&!me->is_busy()
         && objectp(target = me->select_opponent())
         && objectp(weapon = me->query_temp("weapon"))
         && me->query_skill_mapped("claw") == "longzhua-gong"
         && me->query_skill_prepared("claw") == "longzhua-gong"
         && me->query("neili") > 300 && me->query("jing") > 100 ) {
                 pre = me->query_skill_prepare();
              skill = keys(pre);   
              for (i=0; i<sizeof(skill); i++){
                        if(skill=="claw") continue;
                        a = skill;
                        b = pre];
                        me->prepare_skill(skill);
              }
             
                weapon->unequip();
                COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 2);
                COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 2);
                COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 2);
                weapon->wield();
                me->prepare_skill(a,b);
                me->add("neili", -25);

         }
      


         for(i = sizeof(action); i > 0; i--)
               if(level >= action["lvl"])
                         return action;
}
mixed hit_ob(object me, object victim, int damage_bonus, int factor)
{
        int level, jiali, time,level2,damage;
        object weapon;
        weapon = me->query_temp("weapon");
      level = (int) me->query_skill("unarmed",1);
      level2= (int) me->query_skill("yijinjing",1);
damage= (int) me->query("neili",1)/10;
if (random(8)==0 && level2>=300 && me->query_skill_mapped("force") == "yijinjing")
{
if (victim->query("qi")>= damage )
{
victim->receive_damage("qi", damage);
        victim->receive_wound("qi", damage);
}
        return HIR"只见$n$l闷哼一声,吐出一口鲜血,已被易筋经的护体真气给击伤!\n"NOR;
}
if (damage_bonus <80) damage_bonus=80;
      if( random(me->query_skill("weituo-chu",1)) > 50 )
{
          victim->receive_wound("qi", (damage_bonus)/2+120);
      return HIR "$n被棍风的巨力打中,发出一阵骨碎的声音!\n" NOR;
}
}

int practice_skill(object me)
{
         object weapon;
         if((int)me->query_skill("zui-gun",1) <=120)
                      return notify_fail("你的醉棍火候不足,难以领悟韦陀杵。\n");

         if((int)me->query_skill("longzhua-gong",1) <=120)
                      return notify_fail("你的龙爪功不足,难以领悟韦陀杵。\n");

         if((int)me->query_skill("weituo-gun",1) <=120)
                      return notify_fail("你的韦驮棍不足,难以领悟韦陀杵。\n");
                     
         if (!objectp(weapon = me->query_temp("weapon"))
                  || (string)weapon->query("skill_type") != "club")
                return notify_fail("你使用的武器不对。\n");
         if ((int)me->query("jing") < 70)
                return notify_fail("你的体力不够练韦陀棍。\n");
         if ((int)me->query("neili") < 40)
                return notify_fail("你的内力不够练韦陀棍。\n");
               
me->receive_damage("jing", 30);         
         if((int)me->query_skill("weituo-chu",1)> 200)
me->add("neili",-10);

         return 1;
}

jion 发表于 2011-10-14 09:42:53

pfm 代码参考
#include <ansi.h>
#include <combat.h>
inherit F_DBASE;
inherit F_SSERVER;

int perform(object me, object target)
{
      object weapon;
      int damage, club, i,ap,pp;

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

      if( !target
         || !target->is_character()
         || !me->is_fighting(target) )
                return notify_fail("「超度极乐」只能对战斗中的对手使用。\n");

      if( !objectp(weapon = me->query_temp("weapon"))
         || weapon->query("skill_type") != "club" )
                return notify_fail("你手中无棍,怎能运用「超度极乐」?!\n");

      if( me->query_temp("sl_chaodu") )
               return notify_fail("「超度极乐」是少林密技,太过刚猛有违天和,不可多用!\n");



      if((int)me->query_skill("weituo-chu", 1) < 300 )
               return notify_fail("你「韦陀杵」修为还不够,还未能领悟「超度极乐」!\n");

        if((int)me->query_str()-(int)me->query_temp("apply/strength")<50)
             return notify_fail("你的膂力不够,无法用出「超度极乐」\n");

        if((int)me->query("con")+(int)me->query_skill("force",1)/10<50)
             return notify_fail("你的根骨不够,无法承受「超度极乐」的金刚大力。\n");

      if((int)me->query_skill("buddhism",1) < 200)
               return notify_fail("你禅宗修为还不够,还未能领悟「超度极乐」!\n");


      if( me->query_skill("yijinjing", 1) < 300 )
                return notify_fail("你的内功修为火候未到,施展只会伤及自身!\n");

      if( me->query_skill_mapped("force") != "yijinjing")
                return notify_fail("你所用的内功与「超度极乐」心法相悖!\n");

      if (me->query_skill_mapped("club") != "weituo-chu"
         )
                return notify_fail("你现在无法使用「超度极乐」进行攻击。\n");

      if( me->query("max_neili") < 5000 )
                return notify_fail("你的内力修为不足,劲力不足以施展「超度极乐」!\n");

      if( me->query("neili") <= 2000 )
                return notify_fail("你的内力不够,劲力不足以施展「超度极乐」!\n");

      if( me->query("jing") <= 500 )
                return notify_fail("你的精力有限,不足以施展「超度极乐」!\n");

      message_vision(BLU"\n突然$N面露佛光:「超度极乐」,身形暴涨,如同韦陀尊者再世一般,右拳突出击在"+weapon->name()+BLU"当中,“哄”的一声,"+weapon->name()+"被打的粉碎象千颗流星飞向$n!\n" NOR, me,target);
      weapon->move(environment(me));
      weapon->set("name", weapon->query("name")+"的碎片");
      weapon->unequip();
      weapon->set("value", 0);
      weapon->set("weapon_prop", 0);
      damage = (int)me->query_skill("club") + (int)me->query_skill("buddhism",1);
      club = me->query_skill("club")/3;
      i = 10+random(me->query_skill("buddhism",1)/20);
      damage = damage*i;
      if(me->is_killer(target->query("id")))
                       damage = damage *2/3;
      if(!target->is_killer(me->query("id")))
                       damage = damage *2/3;
      if (wizardp(me))
                 write(sprintf("damage = %d\n",damage));
      ap = COMBAT_D->skill_power(me,"club",SKILL_USAGE_ATTACK);
      pp = COMBAT_D->skill_power(me,"parry",SKILL_USAGE_DEFENSE);
      if(target->is_busy())
              pp /= 2;
      if(me->query("real_yjj"))
              {
                      damage *=2;
                      ap *= 2;
                      pp /= 2;
              }
        me->set_temp("sl_chaodu",1);
        if(random(ap+pp)>pp)
        {
                  me->add("neili", -1000);
                  me->add("jing", -200);
                  target->receive_damage("qi",damage);
                  target->receive_wound("qi",damage/2);
                    message_vision(HIY"\n$n哪里见过这么刚猛霸道的招式,招架不及,被拳力击中,肋骨当即根根断裂!\n" NOR, me,target);
                    COMBAT_D->report_status(target);
if (random(6)==0 && target->query("int") > 30 && target->query("qi") < 200)
{
                 message_vision(HIY"\n$n脑中一片悬晕!一片空白!\n" NOR, me,target);
target->add("int",-1);
}
else if (random(6)==0 && target->query("str") > 30 && target->query("qi") < 200)
{
                 message_vision(HIY"\n$n全身一阵麻木!身体一松!\n" NOR, me,target);
target->add("str",-1);
}

                    me->start_busy(1+random(2));
                    call_out("remove_effect2", club*2/3, me);
       }
       else {
                  message_vision(HIY"\n$n眼见$N来势凶狠,不及招架,身体贴地滑行,倒滑出数丈,躲过了这致命一击!\n" NOR, me,target);
                  me->add("neili", -1000);
                  me->add("jing", -200);
                  me->start_busy(1+random(2));
                  call_out("remove_effect2", club*2/3, me);
       }
       return 1;
}

void remove_effect2(object me)
{
      if (!me) return;
      me->delete_temp("sl_chaodu");
      tell_object(me, HIG"\n你经过一段时间修心养性,又可以再使用「超度极乐」了。\n"NOR);
}

int help(object me)
{
      write(
@HELP
超度极乐
       是佛门神功--「韦陀杵」的特殊攻击,将手中兵器击碎,化成千万片碎片攻击对手。
       乃是「韦陀杵」的终极招式。
HELP
      );
      return 1;
}

代码来自海洋三

是开碧落 发表于 2011-10-14 10:01:19

雷霆锤法?

雷霆斧 改造

有武功, 没有绝招哦

jion 发表于 2011-10-14 10:11:05

好吧.. 如果可能就加个pfm...thank
膜拜阿姨
页: [1]
查看完整版本: 申请个公共特殊类武功