对于攻速的新定义
魔塔吧
全部回复
仅看楼主
level 9
宝霞三世 楼主
本人这段时间在研究攻速问题。第一次接触这个概念是在《永不复还》上,那里攻速的定义是伤害的系数,计算式是攻速的开平方的十分之一,这个系数乘上(勇攻-怪防)作为单回合伤害。也就是说,这里的攻速当做伤害系数处理,和勇士进攻快慢没有关系,勇士和怪物还是我一下你一下对打的(不考虑属性)。那么,攻速能不能作为进攻频率的表征呢?对此引发了一个思考。
下面来看几个例子。
首先是怪物血量等于(勇攻-怪防)x1.5(注:系数大于1小于等于1.5即可),设勇士攻速225%,按照计算关系,伤害系数x1.5,此时可不费血。按照攻击频率的定义,攻击频率以1.5倍计算,也就是每2回合勇士进攻3次,且攻击的间隔相同,分别是第一回合中期,第二回合中期以及第二回合末期,依次循环。由此可见,在勇士前两次攻击直接,也就是第一回合末期,怪物进攻一次,勇士受到一次伤害。
第二个例子,假设怪物生命1(勇士可秒杀),勇士攻速计算后的系数为0.5。按照《永不复还》的定义,勇士可秒杀不扣血。而按照攻击频率0.5的定义,勇士的第一次进攻应该在第二回合末期,怪物可在第一回合进攻1次,扣1次血。
所以,不同的计算方法对于伤害计算是不同的。我引发的新定义是基于攻击频率的,也就是勇士每次进攻对怪物造成的伤害就是(勇攻-怪防),而攻速不同导致攻击频率改变,进而影响伤害。
明确了定义之后,最大的难点就是写伤害计算式了。因为条件所限,不能显示回合战斗(典型RPG战斗形式),无法展现小数回合进攻,所以写脚本时需要近似处理。攻击频率只定义在勇士身上,怪物在一般情况下还是一回合进攻一次,这里就以怪物进攻作为标尺来计算勇士进攻频率。也就是仍采取1回合勇士和怪物分别进攻的传统模式,只不过在勇士上做了一些改变。加一个条件判定,根据勇士攻速,判定勇士当前回合的进攻次数,可能不攻击,可能攻击1次,也可能攻击多次。一次战斗中各回合勇士攻击次数并不完全相同。
这时就要写新的伤害计算式了,目标在于求出怪物进攻了多少回合(普通属性下),勇士的攻击频率成为问题的关键。因为现实当中不出现小数回合,所以有小数的都按整数处理。比如勇士攻击频率1.5,在第一回合末期应该完成1次进攻外加第二次攻击前的休息时间。因此第一回合只进行1次攻击,按去尾法取整。但是休息时间不能凭空消失,所以应有多个变量辅助判断,使第二个自然回合能进攻2次。
由于脚本是用循环写的,当怪物血量到0时就退出循环,得出怪物进攻回合,因此无需判断整数回合情况,原脚本“@eatimes-=1 if @eatimes==@ehp*1.0/((@ma-@ed)*@orbatktimes).to_i”要删去。
#以下为计算怪物攻击回合数脚本(攻击频率设计为速度值/100.00,这边保留2位浮点数,速度值为100时每回合进攻1次,建议初始值设为100)
#d表示攻击频率,i表示理论进攻次数,j表示敌攻次数,k表示己方实际进攻次数
#x表示1回合己方进攻次数
#(以敌攻1次为一个回合计算,j、k、x取整,i不取整)
@d=@orbatktimes
@i=@j=@k=@x=0
loop do
@i+=@d
@x=@i-@k
if @x%1!=0
@x-=@x%1
end
@ehp-=(@ma-@ed)*@x
if @ehp<=0
break
end
@k+=@x
@j+=1
end
@eatimes=@j
由于本人刚接触RUBY,只能用基本的语法结构,脚本看起来会比较繁琐。希望有能力的大佬能改得更简洁些。如有问题,请多指教。
备注:使用时请打开开关27“速度是否有效”,并在开始事件给勇士速度赋值
2019年02月26日 14点02分 1
level 13
看不懂就对了[滑稽][滑稽][滑稽]
2019年02月26日 14点02分 2
level 14
这个攻速定义我好像在很久以前的游戏里见过
就是那种上面一个进度条,每个人物有个头像在进度条上走,走到末端就可以行动一回合然后回到起点重新跑[小乖]
放到魔塔里和原定义最大的不同在于可以量化“先攻”这个概念了,如果双方都从进度条起始处开始走那么双方就是平等的,假如一方有一定的“先攻能力”那么他可以从进度条中间开始跑,等等
2019年02月26日 14点02分 3
听起来像是年代记[滑稽]
2019年02月26日 15点02分
『先攻』可以理解为优先权,也就是同时到尾部时谁先动
2019年02月26日 17点02分
@enjoy布白衣 仙剑也是这样的
2019年02月26日 17点02分
level 12
直接给人物和敌人设置一个时间变量,普通攻击会使时间变量增加 1.0/攻击速度 ,通过判断双方时间变量的大小来决定该谁攻击也可以。
2019年02月26日 14点02分 4
level 1
关于这个的话,我记得晴空里面速度的设定和进攻频率是挂钩的,里面也有影响进度条的技能(比如先发制人)
2019年02月26日 14点02分 5
level 15
虽然没看完,但是我想到了五行传说
2019年02月26日 14点02分 6
五行传说就可以看成是走进度条,走进度条的快慢和对方速度有关系[滑稽]
2019年02月28日 02点02分
level 9
宝霞三世 楼主
通过类比上述的计算方法,可以创造出“概率转频率"的思想。众所周知,魔塔是以固定伤害为第一要义的,就必须去除随机性元素。然而随着创新时代来临,概率又是最常用的,详见其他RPG游戏,我就不列举了,极大丰富了游戏趣味性。就魔塔而言,有个典型的例子。一个是新新1的章,技能发动是随机的,伤害不是固定的。(衍生出SL大法)。
参照1楼的脚本,可以这样设计。假设霸者技能发动的概率是30%,先设置判定当技能条达到100%时发动技能,不足100%时不发动,每回合技能条增
加3
0%,然后判定。这样就能实现固定伤害了。
概率转频率有很多用处,比如设置闪避率,暴击率等等。
2019年02月26日 16点02分 7
level 12
对于这种攻速我有个问题,就是先手和后手该怎么处理。比如我攻速1.5,怪攻速1.0(换算后的)。那么我先手的时候怪第一次攻击在什么时候,怪先手的时候我第一次攻击又在什么时候
2019年02月26日 16点02分 8
我有两种想法,一种是先攻方领先半回合,一种是先攻方先发动第一次攻击,此时后攻方落后半次攻击。
2019年02月26日 16点02分
因为是以怪物攻击为基准计算的,可以看成缩短勇士攻击时间,相当于周期减小了。只有当攻速频率小于1才是怪物先手
2019年02月26日 16点02分
@宝霞三世 先手是和攻速本身无关的问题
2019年02月26日 16点02分
举个小于1的例子,比如攻击频率是0.4,频率累加第一回合0.4,第二回合0.8,都不进攻,第三回合1.2才首次攻击。怪物前两回合照常进攻
2019年02月26日 16点02分
level 10
晴空狂想曲了解一下,就是楼主所说的,跑进度条
2019年02月26日 17点02分 9
这点喵有跟我说过,也是知道这个概念后才来研究攻击频率的[哈哈]
2019年02月26日 17点02分
概率期望值累加,不错
2019年02月27日 17点02分
level 10
2019年02月26日 17点02分 10
level 10
我还以晴空为例写过一个“速度计算器”的,虽然没啥用
2019年02月26日 17点02分 11
level 11
这个系统是我目前看来最合理的系统
2019年02月26日 19点02分 12
level 15
魔防不也名不副实么?
并非每回合自己受到的伤害为魔攻减魔防,而是战斗前回复的生命值。
2019年02月27日 02点02分 13
level 15
之前一直想当然地以为每回合伤害等于攻防差乘以敌我攻速商[啊]
2019年02月27日 02点02分 14
level 11
硬核
2019年02月27日 05点02分 15
1 2 尾页