铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 2119|回复: 2

[新手指南] 少林韦陀杵代码

[复制链接]
发表于 2009-9-15 12:49 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
#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[skill];
                        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[i-1]["lvl"])
                         return action[NewRandom(i, 20, level/5)];
}
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;
}

[发帖际遇]: hxsd参与红花会陈家洛的计划:叛变勾结清廷,得到赏赐银两19.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2009-9-15 12:49 | 显示全部楼层

打属性的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");

        if (random(2)==0) target->start_busy(2);
        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", -500);
                  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") > 25 && target->query("qi") < 800)
{
                   message_vision(HIY"\n$n脑中一片悬晕!一片空白!\n" NOR, me,target);
target->add("int",-1);
}
else if (random(6)==0 && target->query("str") > 25 && target->query("qi") < 800)
{
                   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", -500);
                  me->add("jing", -100);
                  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;
}

[发帖际遇]: hxsd在海边沙滩上捡到一支圣火令,当废铜卖了,获得银两8.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
头像被屏蔽
发表于 2009-9-17 07:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-12-19 05:49

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表