背景:
阅读文章

skill的招式代码中,各值代表的意义

[日期:2009-06-19] 来源:  作者:非凡公子 [字体: ]

//
// 8, 接下来进行 skill level 额外加成,
// if (!objectp(weapon))
//   damage_bonus += (me->query_skill(attack_skill)/4
//    + me->query_skill("force")/2+1)/10* (damage_bonus /10);


// else damage_bonus += (me->query_skill(attack_skill)/4+1) /10* (damage_bonus /10);
//     意思是,空手攻击时,加成为:
//          ("攻击skill的等级" 的 1/4) + (内功等级的约 1/20 * damage_bonus 的 1/10)
//     那么说,一个 100 lv 的 skill, 内功即使为 0, 这里也可以得到 25 点的加成
//     但是如果是兵器类的 skill, 就只能得到几点的加成,如 100 lv sks, 甚至可能得到
//     两三点的加成而已,反差巨大。
//
// 9, 接下来看兵器里有没有特殊的加成。将调用兵器文件中的 hit_ob()
//     函数,该函数若返回一个 int, 则直接加入这个值到 damage_bonus 中。
//
// 10, 接着看看 加劲 的加成。简易公式如下:
// foo = my["jingli"]/20 + my["jiajin"] - your["jingli"]/25;
//      当 foo > 0 时,直接加入 damage_bonus 中。
//      例如我的精力 1000,对手精力2000,那么就是:
//      50 + 最大加劲二十分之一即50 - 对手的精力/25即80   == 20 点
//
// 11, 如果攻击模式是 "快速攻击",攻击力减半
//
// 12, 将 damage 与 damage_bonus 组合起来。这时将进行一个
//      计算,最多时可以得到全部的 damage_bonus ,最少时可以得到
//      一半的 damage_bonus.
//      而如果 damage_bonus 的值为负的话,同理, damage 减去同样
//      随机范围的 damage_bonus 值。
//
//      此时进行一个强制判断,以保证组合后的 damage 值最小为 0。
//
// 13, 进行一个循环!以彼此的 combat_exp 作判断:
//         取一个 random(攻击者的exp), 如果比 被攻击者的 exp 大,
//      那么 damage 削减为原来的三分之二(2/3),并将作判断的 "攻击
//      者的exp" 值降半,重新循环
//
// 14, 这里是一个呕吐级的判断,如果被攻击者身穿特别的防具(该防具文件
//      内以mixed is_special() 函数返回任意非零值即可),那么,调用其
//      文件的 mixed hit_ob() 函数,若此函数返回 int 或 mapping 型
//      的值,damage 将直接赋予该值(int or mapping["damage"])。
//      此时,前面所做一切均告作废,yeah,真是高章,高,实在是高
//
// 15, 此时再作一个判断,如果被攻击者身备(jifa)特别的轻功(该轻功
//     文件内以 mixed is_special() 函数返回任意非零值即可),那么,
//     原理同 14 ,也是让前面所做一切均告无效的一个步骤, yeah
//
//
//      到了这时,终于得到 damage 的最终值了!但是很郁闷的是,
//      它不作是否非0的判断,就直接对对手进行伤害,系统偶尔会
//      报出 “攻击力为负”的 bug, 大概是 special armor 或
//      special dodge 造成的吧。
//
//      接下来就暂时不关 damage 的事喽。
// ##############################################################


]),


// 以上是一个 skill 招式的基本资料。

// 还有另一个特别的设置 "weapon", 该设置直接影响:
// 在攻击时,如果被防御(并非“被闪躲”和“命中”)时,
// 若招式里有这个值,对方防御成功的几率减半。
// 这个值好象未在其他地方有应用,而有的 skill file 里曾见到
// 招式里设置了例如   "weapon": "剑芒",    等,不知道是否有特别的含义。


// 再附: combatd.c 进行攻击流程时,有几个设在 object me 身上的值
// 是相当的有影响的,它们分别是:
// me->query_temp("apply/speed")      ---- 与攻击频率成正比,但亦与被快速反击的几率成正比
// me->query_temp("apply/damage")     ---- 直接影响攻击的强度
// me->query_temp("apply/armor")      ---- 直接影响受打击的程度
// me->query_temp("apply/dodge")      ---- ?......

// 这几个值, combatd.c 都不会去改变它们,所以要体现其他的一些效果,
// 必须另行设置;并且,需要非常小心避免出现无限累积的 BUG !

其实 skill 还可以写得更精彩,而不仅仅是 damage 和描述的变化而已。配合上 "dodge", 配合上

query_parry_msg(), 配合上 hit_ob(), 配合上 "post_action", ……真的是每一招都可以有不同的变化

,根据描述所决定的效果之多,唉。只有想不到的,没有写不成的……

收藏 推荐 打印 | 录入:sbso | 阅读:
相关内容       skill 
本文评论   [发表评论]   全部评论 (0)
内容推送
52mud提供
一起回忆泥巴游戏QQ群68186072
52mud官方微信公众平台
热门评论