找回密码
 注册
搜索
查看: 4901|回复: 13

关于skills平衡,别人的做法

  [复制链接]
yezhu@zy 该用户已被删除
发表于 2008-8-2 02:12:33 | 显示全部楼层 |阅读模式
下面是一个 perform 的具体实例
// Copyright (C) 2003, by Lonely. All rights reserved.
// This software can not be used, copied, or modified
// in any form without the written permission from authors.

#include <ansi.h>
#include <combat.h>
#include <perform.h>

#define YI "「" HIY "剑意" NOR "」"

inherit F_SSERVER;

int perform(object me, object target)
{
        object weapon;
        string msg;
        int ap, dp, skill;
        int damage;

        skill = me->query_skill("dugu-jiujian", 1);

        if (skill < 90)
                return notify_fail("你所使用的外功中没有这种功能。\n");

        if (userp(me) && ! me->query("can_perform/dugu/yi"))
                return notify_fail("你还没有受过高人指点,无法施展" YI "。\n");
               
        if (! target)
        {
                me->clean_up_enemy();
                target = me->select_opponent();
        }

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

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

        if (me->query_skill_mapped("sword") != "dugu-jiujian")
                return notify_fail("你没有激发独孤九剑,难以施展" YI "。\n");

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

        switch (random(3))
        {
        case 0:
                msg = HIY "$N" HIY "随手一剑指向$n" HIY ",落点正是$n"
                      HIY "破绽所在,神剑之威,当真人所难测。\n" NOR;
                break;

        case 1:
                msg = HIY "$N" HIY "剑招大开大阖,看似杂乱无章,但招"
                      "招皆击$n" HIY "攻势中破绽,有如神助。\n" NOR;
                break;

        default:
                msg = HIY "$N" HIY "反手横剑刺向$n" HIY ",这似有招似"
                      "无招的一剑竟然威力奇大,令人匪夷所思。\n" NOR;
                break;
        }
        
        // 从 perform.h 中计算攻击值大小,传入的攻击类型为剑法和特殊剑法
        ap = ap_power(me, "sword");     
        
        // 从 perform.h 中计算防御值大小,传入的防御类型为招架和特殊招架
        // dp 中加入 dugu-jiujian 的等级一半,主要是因为判断对手是否会独
        // 孤,如果会,那么攻击成功率要降低。
        dp = dp_power(target, "parry") +
             target->query_skill("dugu-jiujian");

        // 把攻击值和防御值做对比,计算是否命中
        if (ap / 2 + random(ap) > dp)
        {
                // 从 perform.h 中计算伤害大小,传入的是剑法的伤害
                damage = da_power(me, "sword");
                msg += COMBAT_D->do_damage(me, target, WEAPON_ATTACK, damage, 50,
                                           HIR "$n" HIR "全然无法领会$N" HIR "剑"
                                           "招中的奥妙,一个疏神,登遭重创!\n" NOR);
                me->start_busy(2);
        } else
        {
                msg += CYN "可$n" CYN "淡然处之,并没将$N"
                       CYN "此招放在心上,随手架开,不漏半点破绽。\n" NOR;
                me->start_busy(3);
        }
        message_combatd(msg, me, target);

        return 1;
}

评分

1

查看全部评分

门派:不明
发表于 2008-8-4 23:31:04 | 显示全部楼层
他山之石,可以攻玉
可以借鉴一下.
门派:不明
发表于 2008-8-7 14:00:51 | 显示全部楼层
顶一下 3分
门派:不明
发表于 2008-10-13 21:02:09 | 显示全部楼层
这跟平衡有个什么关系?
门派:不明
发表于 2008-12-8 15:39:04 | 显示全部楼层
楼主请 附加说明一下
门派:不明
发表于 2008-12-9 23:19:24 | 显示全部楼层
翻译下最好,很多象我这样的新人哦
门派:不明
发表于 2008-12-12 10:18:11 | 显示全部楼层
看不懂哈。。。。。。。。。。。
yezhu@zy 该用户已被删除
 楼主| 发表于 2009-7-30 00:36:01 | 显示全部楼层
说实话,我也看不懂!!!
门派:不明
发表于 2009-7-30 06:27:43 | 显示全部楼层
日啊,这哪是平衡?明明就是一个skill的设定。。
darken@ts 该用户已被删除
发表于 2009-7-30 12:53:26 | 显示全部楼层
budong.........
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-5-29 04:29 , Processed in 0.036390 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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