《龙与地下城》是由TSR开发的一款桌上角色扮演游戏,于1974年发行第一版。该款游戏对角色扮演游戏也有很大的影响,后来的许多相同类型的游戏都受到了它的影响。简单看了一遍该游戏的玩家手册,再对比某个游戏的技能系统,和玩家手册描述的很相像。

这篇文章主要是对该游戏技能系统总结下实现思路。

一.首先需要讨论下技能的各种表现(以下是一些代表性的技能,摘自网络): 1.位置相关的如:瞬移、冲撞、击退、跳跃等。2.持续时间相关的如:眩晕、定身、临时提高xx属性等、魔法盾等。3.永久效果相关的如:永久加属性上限、释放技能时永久附带某种效果等。4.障碍效果的如:骨墙、还有像DOTA某牛的耕田技能。5.daodan系列如:追踪箭、魔兽的远程技能等。6.直线打击类的如:菠萝2的闪电、魔兽争霸熊猫的喷射技能等。7.连锁效果的如:治疗链、闪电链等。8.地点持续类的:火墙一类的技能。9.还有吟唱类的:一下子想不起技能名...概括起来就是先念x秒咒语,然后出效果。10.还有立即生效类的:比如传奇的闪电术、战士的强力打击等。11.还有一些多种类型复合的技能:比如菠萝2的九头蛇(既有地点持续,又放出火球)。

二.但是这里只会讨论该游戏所用到的技能,例如:1.直接造成伤害的技能(普攻)。2.撞开目标并造成眩晕。3. 推开自身周围的目标。4.制造护盾,在一段时间内减免伤害。5.将多个目标冻结。6. 使对手中毒,每秒减少一定伤害。7.对目标治疗,每秒恢复一定血量。

三. 技能释放的流程:
1、发出施放请求。2、验证是否满足使用技能条件。3、返回失败结果或者选择目标。4.对目标开始执行技能同时开始动作、特效播放。5、执行该技能需要表现的各项效果。6、如需伤害判定则进行判断并反馈结果。

四.技能的实现。
对于上面第二点提到的技能,可以分成以下几类效果:1.特效表现。2.临时改变实体的属性。3.在一定时间内,持续性的改变实体的属性。4.伤害判定。
对于第1点,技能配置表除了配置施法者的动作,一般还需要配置施法者的特效和目标的特效,然后在技能释放的时候,如果有配置相应的特效,则挂上该特效就可以了。对于撞开,后退等效果,则通过具体代码来实现。
对于第2点,需要在实体身上加一个改变属性的buff(关于buff,见下)。
对于第3点,需要在实体身上加一个特定的buff(关于buff,见下)。
对于第4点,根据技能的效果,要设计好技能伤害公式。

五.技能伤害公式。
伤害的计算可以分为以下几个部分:1.先计算闪避成功率。2.技能伤害系数。3. 基本伤害。4. 技能伤害。5. 暴击伤害。6. 致命伤害。7. 职业伤害。8. 波动系数。9. 追加伤害。10. 内功伤害。11. 最终伤害。
分成多个部分之后,造成的最终伤害就可以关联实体的多种属性,再通过加buff改变属性的方式,可以轻易的实现多种不同的效果。每个属性的最终结果都会以本来的属性乘以一个乘因子和加上一个加因子,乘因子和加因子受buff的影响。

六.关于buff。
每个实体身上都有一个每秒执行的函数,用于判断buff是否到期而需要移除。
对于被动buff,每次添加buff或者移除buff的时候,都会重新计算所有buff(被动)影响的实体每个属性的乘因子和加因子,用于伤害公式的计算。
而对于分段式buff,一般是加血和减血,则也需要每秒进行处理。

总结,相对来说,这个技能的系统的流程是比较简单的,但是通过不同效果组合,和实体多种身上多种属性的结合,也实现了足够多的技能。