战斗逻辑的构造与解释

您所在的位置:网站首页 地下城堡259层属性 战斗逻辑的构造与解释

战斗逻辑的构造与解释

2023-10-11 13:14| 来源: 网络整理| 查看: 265

首页汇总攻略汇总新手专区庇交所档案室资料库攻略汇总

缩 · 编 · 刷 · Tips:日冕尖碑,又叫魂圣迹。在图26以后开启。

施工中此页面正在施工中,或者内容正在优化中,请不要增加/删除内容 目录 1 前言 1.1 终极计算器 1.2 课程介绍 1.3 先修课 1.4 课程资源 2 状态 2.1 状态 2.2 状态包含的信息 2.3 状态的最终数值 2.4 被挂状态 2.5 挂状态 3 属性 3.1 属性有哪些 3.2 七维属性计算 3.2.1 裂狱附加的状态 3.2.2 鬼心附加的状态 3.2.3 护腕附加的状态 3.2.4 开始动手了 3.3 其他属性 3.4 欠债机制 4 装备特效 4.1 类型 4.2 触发条件 4.3 装备触发的顺序 4.4 具体某个装备的触发 4.4.1 环的特效 4.4.2 增幅类特效 4.4.3 状态类特效 4.4.4 连击类特效 4.4.5 回复类特效 4.4.6 真伤类特效 4.4.7 治疗抑制 4.5 举个夜莺流血甲的例子 5 状态 - 时间 6 技能 - 时间 7 主函数 7.1 先发与连击 7.2 半门力速之谜 7.3 技能冷却进度条 7.4 跳dot 8 技能选择 8.1 6个技能大类 8.2 技能设置 8.2.1 奶 8.2.2 嘲讽 8.2.3 反击 8.2.4 群攻 8.2.5 单攻 9 目标选择 9.1 优先攻击的目标 10 技能施放 10.1 准备函数 10.2 施放技能 10.3 如果冷却时间增加不到-4,更新之 10.4 清除增幅 10.5 挂状态函数 前言 终极计算器

  wiki团队的基建组——天上人间,在21世纪的最重大的项目是:完成大计算器。输入你的队伍,选择要打的怪物,wiki将全真模拟游戏中的情况。此前我们有众多小计算器,他们都是针对某个小领域的计算,而这一次,我们do it once, and for all. 因为组里各人使用的编程语言、开发平台不同,我们只能共享交流算法,大家会见到多个版本。wiki测试服是我基于windows开发的桌面程序。mac用户需要等待不由制作出大计算器网页版。

课程介绍

  要写出完整的模拟程序,我就被迫要了解整个游戏全部的机制,并把它们整合到一起。现在算法完成了,我不妨分享一下这整个的战斗逻辑。   《战斗逻辑的构造与解释》,即是一门全面介绍战斗机制的地堡课程,也是wiki测试服的高阶使用技巧。这是一门大水课,没有期末考试,只要赏脸看一遍,就是满昏!   本课程难度较大,含有大量计算(虽然都是小学水平的计算,但计算终究是计算),适合热爱技术的萌新和中期玩家查漏补缺。   还有一种,玩上头了,资源都花光了,卡在某个boss,这时候一如果一直盯着自己的号左看右看,最终就会控制不住地把自己的手伸向右上角,几百个大洋,一通忙活,狗托们都出货了,在群里秀你一脸,而你没有,几百大洋打了水漂,于是又开始懊悔起来。这是何苦来呢!推不动图了,就老实咸鱼,咸鱼之际,来听我的课吧。

先修课

  出征章节的7篇攻略   程序设计中的函数概念。我们这里说的函数,不是枯燥乏味的数学,而是流程的意思。我们吃苹果,要先买苹果,然后洗,然后削皮,然后啃,最后把苹果核扔掉,这就是一个流程。函数我们用大括号括起来。现在我就可以用“吃苹果”来表示面连续的5个步骤:{买苹果,洗苹果,削苹果,啃苹果,扔果核}。以后就不需要再写出这5个步骤了。我说吃苹果,你就知道要干嘛了。具体自行百度。

课程资源

  wiki测试服

状态 状态

  在地堡中,状态不是你的冒险者今天吃得好不好,而是打的时候冒险者头上的那些小图标。   两个“凡是”:凡是有对应图标的,都是状态。凡是没有对应图标的,都不是状态。

状态包含的信息

  每个状态包含八个信息:

状态名称 特效名称

  这两个的区别看图,看一眼就懂:   特效名称与状态名称.jpg   如果是技能带来的状态(火法的灼伤),就拿技能的名字(炎爆术)作为特效名称。   只要状态名称一样,那就是同一个状态,那就会覆盖。只要状态名称不一样,就各不相干。而特效名称意义不大,后面会讲它是干啥用的。

类型

  状态的类型有以下几种:力量buff,魔力buff,技巧buff,速度buff,护甲buff,抗性buff,hot,dot,物理增伤,魔法增伤,眩晕,反击。   在wiki测试服中,debuff是数值为负数的buff。   dot不是数值为负数的hot,因为hot受治疗效果属性影响,dot则被持续伤害属性加成。

剩余持续时间 每层的数值 层数 最大层数 附加者

  附加者决定了状态吃不吃状态效果。如果附加者属于冒险队,状态就吃状态效果,否则就不吃。   在wiki测试服中,火环负面的自残状态的附加者为空,进而不吃状态效果。用bool型变量SEA(state effext allowance)表示吃不吃状态效果,用它和状态效果相乘,这样吃状态的时候就是1*状态效果,不吃状态的时候就是0*状态效果 = 0.

状态的最终数值 SEA = 附加者属于冒险队 ? 1 : 0 状态数值 = 每层数值 * 层数 * (1+SEA*状态效果) if(状态类型==dot) 状态数值*=附加者的持续伤害 if(状态类型==hot) 状态数值*=附加者的回复效果

  我们用一组统一的信息,表达了所有状态,用一个统一的公式,计算了所有状态。

被挂状态

  被挂状态有两种情况。队友上的增益,和来自装备的状态,都不受异常附加率的影响。敌方技能附带的状态,则要考虑异常。

挂上状态的概率 = 异常附加率 - 抗性/1000

  如果挂上了的话,就要把相应的状态附加上去。

if(特效名称变了) 当前层数 = 1 if(特效名称没变) 当前层数 = min(当前层数+1,最大层数)

  火法挂着灼伤,这时候来一下咒火的灼烧,现在是1层而不是2层——因为特效名称从炎爆术变成了诅咒之火。   在不超过最大层数的前提下,层数会在被挂buff时加1。最大层数是可变的。火法的时候,最大层数是1,枯萎挂dot的时候,灼伤这个状态的最大层数就变成999了。

挂状态

  挂状态就是让对象被挂状态。“对象”分5种:对自身,对我方单体,对我方全体,对敌方单体,对敌方全体。

属性 属性有哪些

  讲完了状态,可以讲属性了。属性有28个,分别是:

力魔技速体甲抗,武威 物理伤害,魔法伤害,持续伤害 物理单吸,物理群吸,魔法单吸,魔法群吸 命中率,闪避率,暴击率,异常附加率 卸负 无视护甲,无视抗性 物伤格挡,魔伤格挡 回复效果,吸血效果,治疗效果,暴伤系数

  回复效果,在技能,特效或回春产生回复时有加成。   吸血效果,在吸血时有加成,只存在于遗迹。   治疗效果,在受到回复技能和吸到血时有加成,前两个是施加恢复,这个是受到恢复,也可以理解成治疗效果同时影响回复和吸血。治疗效果的变化都是乘或除。对面有个红审判,或者对面就是个抑制20%的怪,那么在开局的时候,我们的治疗效果就从1被乘了 (1 - 20%),变成80%。如果对面再来个红审判,那么80% * (1 - 20%),等于64%。如果拿红审判的人阵亡了,64% / (1 - 20%),回到80%。

七维属性计算

  战斗时,七维属性(力魔技速体甲抗)由四部分相加构成:

属性 = 面板 + 增幅 + 各种状态

  举个例子,具体到力量,就是:力量 = 面板力量 + 增幅力量 + 各种类型为力量buff的状态。状态可能有多种,但增幅最多只有一个,因为增幅只生效一瞬间,并且装备特效只要生效一个,后续就不再判定了。   这节课的重点是这个蛮子的例子。假设一场紧张而激烈的战斗即将拉开帷幕,我们的蛮子已经捯饬好了:   狂战: 裂狱  通魔战铠  战鬼之心  金蛮族勇士护腕★    倘若面板力量是10000,遗迹状态100%,在出手瞬间他是多少力量?   在开局时,裂狱,鬼心,护腕依次触发。按照顺序,首先是裂狱:

裂狱附加的状态 类型:力量buff 剩余持续时间:永久 层数:1 每层的数值:

  裂狱是提高100%的力量,而什么是力量?力量 = 面板力量 + 增幅力量 + 各种力量buff。此时没有增幅,也没别的状态,它们都是0。为了清楚,我仔细写一遍:

地狱怒吼的每层数值 = 100% * 力量 = 100% * (面板力量 + 增幅力量 + 各种力量buff) = 100% * (10000 + 0 + 0) = 10000

  结合上面给的公式最终数值 = 每层数值 * 层数 * (1+SEA*状态效果),最终数值可以列式计算:

地狱怒吼的最终数值 = 地狱怒吼的每层数值 * 层数 * (1+SEA*状态效果) = 10000 * 1 * (1 + 1*100%) = 20000 鬼心附加的状态

  鬼心提高50%的力量。什么是力量?力量 = 面板力量 + 增幅力量 + 各种力量buff。   此时没有增幅,力量buff有一个裂狱的地狱怒吼。列式计算:

战鬼徽记的每层的数值 = 50% * 力量 = 50% * (面板力量 + 增幅力量 + 各种力量buff) = 50% * (10000 + 0 + 地狱怒吼的最终数值) = 50% * (10000 + 20000) = 15000 战鬼徽记的最终数值 = 战鬼徽记每层的数值 * 层数 * 状态效果加成 = 战鬼徽记每层的数值 * 层数 * (1+SEA*状态效果) = 15000 * 1 * (1 + 1*100%) = 30000 护腕附加的状态 野蛮怒吼的每层的数值=...=9000 野蛮怒吼的最终数值=...=18000 开始动手了

  以上都是在战斗开始时发生的事情。现在蛮子要出手了,假设触发了通魔的特效,增幅100%力量。什么是力量?力量 = 面板力量 + 增幅力量 + 各种力量buff!

增幅力量 = 100% * 力量 = 100%*(面板力量+增幅力量+地狱怒吼+战鬼徽记+野蛮怒吼) = 100% * (10000+0+20000+30000+18000) = 78000

  终于到了抡出斧子的那一刻!乾坤一击!对敌方 力量 * 6。什么是力量?力量 = 面板力量 + 增幅力量 + 各种力量buff。这时候蛮子真正出手的时候的力量我们终于可以计算了:

力量 = 面板力量+增幅力量+地狱怒吼+战鬼徽记+野蛮怒吼 = 10000+78000+20000+30000+18000 = 156000

  我们算了很多很多,但是无非就是两个小式子:

属性 = 面板 + 增幅 + 各种状态数值

状态数值 = 每层数值*层数*(1+SEA*状态效果)

  不光是力量,所有25个属性都是这么算的,只不过7维属性以外没有相应的状态了,都是0,就只有面板+增幅。有时候面板或增幅也没有,比如格挡,我们下面会说到环带来的都是增幅,所以格挡是没有面板的,但只要默认为0,就可以统一地认为是面板 + 增幅。   为什么我们通常计算的时候没有这么麻烦呢?因为我们会一直记住当前是多少力量,每新考虑一个buff,就加入到当前力量里。这样对于我们来说非常轻松,但是计算机程序将面临一个巨大的问题:左脚踩右脚上天!唔,事实上,你也会上天,只不过你每个装备/技能都只计算了一次。如果事无巨细地预测战斗中每一帧细节,那么传法每次cd好了就得奶出来才行,这时候问题就暴露出来了:加多少技巧呢?如果加当前技巧的0.3,那没事了,上天!或者一个更现实的问题:如果奶了一口又不奶了,减多少技巧?   现在是不是有一点理解为什么地堡有巧手bug了?地堡的代码很烂,没有像我们这样计算属性,导致频繁上天。地堡程序员是怎样debug的呢?每次要计算的时候,就从头开始计算,从面板开始重新“开局”,重新依次挂buff,重新计算属性。所以绿龙的buff一直在刷新,由此为巧手bug埋下了祸根。   而我们是怎么处理的呢?非常简单!只需赋buff之前,先清空他自己的这个buff,令其每层数值为0。   传法带个绿龙开奶时(设面板为x):

令技巧提升buff每层数值为0。若触发了巧手: 增幅技巧 = 100% * 技巧 = 100% * (面板技巧+增幅技巧+技巧提升+凝视) = 100% * (x + 0 + 0 + 0.3x) = 1.3x 技巧提升buff的每层数值 = 5 + 0.3 * 技巧 = 5 + 0.3 * (面板技巧+增幅技巧+技巧提升+凝视) = 5 + 0.3 * (x + 1.3x + 0.3x) = 5 + 0.3 * 2.6x

  下一次奶时,我们还把 技巧提升buff的每层数值 赋值为 0,然后再去计算它,你看看,列出来的式子永远都是上面这样,不会上天。   这,就是属性计算的真正的逻辑。

其他属性

  其他属性不受状态影响,不被特效增幅,但是可能受环的影响

物理伤害 = (1 + 面板物伤 + 环物伤) * (1 + 遗迹祈愿物伤) 魔法伤害 = (1 + 面板魔伤 + 环魔伤) * (1 + 遗迹祈愿魔伤) 持续伤害 = (1 + 面板持续 + 环持续) 回复效果 = 1 + 面板回复 + 环回复 + 遗迹祈愿回复

  遗迹的物伤和魔伤是单独的乘区。回复是否是单独的乘区?欢迎测试后评论区留言。   环的物伤可以理解成瞬间增幅,但是深入考察后发现这种处理不妥。wiki测试服的模拟现在是非常贴近真实情况的——模拟的冒险者佩戴着模拟的环。环的物伤不是固定的,而是实时计算的。带着孤儿环和咒火的A与队友并肩战斗,此时如果A自己阵亡了,咒火的伤害会立即变化。

欠债机制

  状态buff也可以是debuff,如果减得太多,往往会减成负数,但最终不会是负数的,最多减到0。所以严谨地表达这些属性,需要在他们被计算出来之后,如果结果是负数,就得到0。这就是作业的答案。力量速度也不例外,下限是0。用函数max(a,b)输出a,b中大的那个数,属性的计算式应补充为:

属性 = max(面板+增幅+各种状态buff, 0)

  如果,甲被对面狠狠地、无可救药的破光了,这时候神官奶上一口,能奶上护甲吗?答案是没有用的,直观地说,被对面破甲破的裤子都不剩,是不够的,还会欠债。不把欠的补上,休想护甲是正的。   我们叙述的属性计算逻辑在这里也是管用的。对面减甲很猛,那么护甲衰减buff的数值就是-99999,这时候神官给一个数值为9的护甲提升buff,照单全收,只不过最后要加所有护甲buff的总和,这一加起来,谁都敌不过这个-99999,最后就是负数,就是0。   魔煞短刃 魔煞短刃 害怕减力吗?怕的。它的特效是增幅力量,但是,最终看力量的时候,减力是作为一种状态,都被加起来,增幅的力量是要去还债的。

装备特效 类型 状态 e.g. 绿龙晶坠  增幅 e.g. 亘古之守望  连击 e.g. 亘古之回响  回复 e.g. 荒兽骨锤  真伤 e.g. 魔石盾牌 

  圣庭的特效,不属于回复类,而是属于状态这一类,而它的状态的类型为“hot”。

触发条件 战斗开始 发动物理攻击 发动魔法攻击 使用回复技能 受到物理攻击 受到魔法攻击

  在wiki测试服的JSON/装备数据.json中,“类型”和“触发”就是上面的这些。

装备触发的顺序 如果触发条件是“战斗开始”: 分别按照触发条件和概率,触发环、武器、衣服、饰品1、饰品2、魔石特效。 而如果是其他触发条件: 依次按照触发条件和概率,触发武器、衣服、饰品1、饰品2、魔石特效 (期间只要触发了,就结束)

  其实,这就是一个函数了。我们起个名字,叫做“准备”。他有个参数叫“触发条件”。他会跟据触发条件,调度各个装备特效的触发。以后我只要写:

准备(发动物理攻击)

  就代表以发动物理攻击为“触发条件”,来执行上面的函数。   如果一个穿着 凯旋骑士  飓风之铠  抗争者之心  巨蛇之盾 的黑骑在挨打,那么:

准备受到物理攻击

  它就代表:

依次按照触发条件和概率,触发武器、衣服、饰品1、饰品2、魔石特效 (期间只要触发了,就结束)

  凯旋是没有特效的。风甲100%触发特效,触发了后面就中止不看了,最后执行的就是:

受到物理攻击时,风甲的特效。

  瞧,人话,都是人话。黑骑要挨打了,你就说让不让我做准备吧。这一准备,就把特效全部考虑逸当了。我们还没讲到挨打的流程,但想来你已经预想到了到时候会是怎么样。打人的人先来一个准备(发动魔法攻击),攻击时的装备特效就考虑好了,然后才举起黄瓜杖。挨打的人先来一个准备(受到魔法攻击),防御特效也到位,然后才把屁股撅起来。现在问题就聚焦到了一个点: 单个装备的触发函数是什么一个流程呢?

具体某个装备的触发 环的特效

  环的特效,严格来说只要处理一个东西:自杀火环在战斗开始时,给自己上一个dot。其他的环的特性,都不宜作为一个特效来处理,而是在用到的时候实时计算,啥时候用到啥时候算。特效只有开局、打人和挨打的时候,会通过准备函数来处理。

增幅类特效

  这个就很简单,就是去赋值增幅属性嘛。

增幅力量 = 100% * 力量

  至此,lecture 2 和 lecture 1 开始联系起来了:什么是力量?

状态类特效

  状态类特效首先跟据系数计算“每层数值”,然后挂状态,即让“对象”被挂状态。   状态类特效发生在技能释放完之后。因此要把这个状态先暂时存着,等技能放完了,技能附带的状态也附带完了,最后才打出去。   所以,流血甲出特效的那一下,是吃不到自己的技巧buff的。

连击类特效 冷却时间增加-4秒。

  这一操作的妙用后面会解释。

回复类特效 真伤类特效

  回复类和真伤类特效就是按照特效描述,直接进行回血和扣血。

治疗抑制

  治疗抑制看上去是一个特效,其实可以说是两个特效,也可以说不是特效。   在战斗开始时,把敌方全体的回复系数和吸血系数(1-治疗抑制的比例)。   在阵亡时,把敌方全体的回复系数和吸血系数除以(1-治疗抑制的比例)

举个夜莺流血甲的例子

  夜莺: 红驱魔匕首★  符文师圣铠★  绿龙晶坠  天使之轮    在发动技能之前,我只说一句话:

准备(发动物理攻击)

  它就意味着(发动物理攻击时,绿龙没特效,天使轮100%,乌鸦被覆盖):

发动物理攻击时,驱魔的特效。如果触发了,就中止。 发动物理攻击时,流血甲的特效。如果触发了,就中止。 发动物理攻击时,天使轮的特效。(100%触发)

  先看匕首,匕首“的特效”是这么处理的:

以(75%)的概率,如果触发,增幅技巧=2.2*技巧

  假设没触发,于是接着去看流血甲:

以(75%)的概率,如果触发,挂状态(...) 对象: 对自身 状态的信息: 状态名称: 专注 特效名称: 专注 状态类型: 技巧buff 持续时间: 8秒 数值: 0.5 * 技巧 (此时列式子计算技巧) 最大层数: 1 来源: 我的夜莺

  这一系列的连锁反应都只是一个小小的准备(发动物理攻击)所带来的!这就是lecture 2 的内容,我们把所有的装备特效,浓缩进了两个字:准备。   舒服了。   想一想开局的时候呢?只要一句准备(战斗开始),他就会分别调用各个装备的开局特效,战斗开始时走的流程是不中断的,所有装备都调用“的特效”,于是:

火环给上了自残dot,匕首给上了思维链接,绿龙给上了灵视,天使轮给上了天使之颂和天使之佑。

  最终出手之前,调用一次准备(发动物理攻击),决定最后的增幅。此时再计算技巧,所有的增幅和状态已经全部就绪,只等着发动技能时的灵魂拷问:

什么是力量? 什么是技巧?

状态 - 时间

  挂状态与被挂状态的机制已经阐述过了,但还有一些没解决:

到时间了,要自动把buff去掉 dot/hot要每过一秒扣/加血

  这些事情是需要不断地检查的,但你不可能一直盯着它这个状态——别的事儿不干啦?所以事实上是每过一段时间做一次检查。这个时间可能在55微妙左右,但我们不管他具体是多少,假设它叫做黑潮大陆的

普朗克时间

  这样我们的手机就不会日理万机了。它设置一个时钟,每过一个普朗克时间就提醒手机处理一下所有的状态。而在这个普朗克时间的剩余时间里,它可以从容不迫地调用很多次 准备(发动物理攻击) 函数,或者下载它的小电影。这个处理状态的函数就叫做“状态处理”好了。它的内容是:

把所有状态的剩余持续时间减去普朗克时间 对所有类型为dot的状态,如果它的剩余持续时间是整数秒,就跳dot;对所有类型为hot的状态,如果它的剩余持续时间是整数秒,就回春 去掉所有剩余持续时间为0的状态 技能 - 时间

  想必大家看状态已经看麻了,现在终于换口味了。技能冷却结束后需要放技能,这个也是每过一个普朗克时间就不断检查的。冒险者怎么知道自己放不放技能,cd还有多久呢?   这就需要每个冒险者(和怪物)记住自己的两件事:冷却时间增加,和已等待时间。冷却时间增加,就是技能上面写的那个(冷却时间减少就当成增加一个负数)。已经等待的时间,就是从上次放技能开始经过的时间,记作WaitTime。然后这么算:     卸负后力量 = max(1, 力量-卸负)     力速比 = min(3, ⌊卸负后力量/(速度+1)⌋)     CD = max(0.5, 1.5+力速比+冷却时间增加)   力速比的向下取整符号⌊ ⌋是向下取整到0.1秒。   前一节是状态处理函数,现在是冷却处理函数:

将Wait增加一个普朗克时间 计算CD 如果Wait达到了CD,放技能,Wait置0 否则憋着不放

  游戏中看到的冷却蓝条,显示的就是Wait/CD.

主函数 开局时, 按从左到右站位顺序, 执行所有人(和怪)的准备函数: 准备(战斗开始) 然后设置一个时钟,每过一个普朗克时间就执行: 按从左到右站位顺序, 执行所有人(和怪)的冷却处理函数 按从左到右站位顺序, 执行所有人(和怪)的状态处理函数

  这就是整个地堡的战斗过程,通过函数的思想,它最后就只剩下了这几行,非常清晰。下面通过几个具体的例子,说明这个逻辑的准确性。

先发与连击

  在战斗开始时,Wait 和 冷却时间增加 都被初始化为0,这时候计算CD就是1.5+力速比。然后经过这么长时间,Wait不断增加,直到打出技能。   先发的本质就是把 Wait 赋值为4.5(或者更大)。此时CD算出来一定没有Wait多,在第一个瞬间就出手了。   连击的本质则是把 冷却时间增加 赋值为-4(或者更小),此时CD算出来一定是0.5,而Wait从0开始计时,经过0.5秒打出连击。

半门力速之谜

  计算一下半门祭祀的CD。什么是力量?这次这不重要,因为影兽假面卸负500,那么力量-卸负就是个负数,卸负后力量就是1.   什么是速度?速度=max(0, 面板速度+增幅速度+各种速度buff),因为吃了一个巨额的减速,算出来肯定是负数,那么速度就是0.   于是力速比 = min(3, ⌊卸负后力量/(速度+1)⌋) = 力速比 = min(3, ⌊1/(0+1)⌋) = 1。   进而CD = max(0.5, 1.5+1+3.5) = 6秒   而门呢?门的力量5400,速度3600,冷却时间增加3秒。力速比 = min(3, ⌊5400/(3600+1)⌋) = ⌊1.4996⌋ = 1.4,CD = 1.5+力速比+冷却时间增加 =1.5+1.4+3 = 5.9秒!   血法CD是3秒,半门CD是5.9秒,所以不能稳定吸两口血,不是网络问题。   恭喜你,你的力速比理解已经是大气层级别了!

技能冷却进度条

  有时候打带有速度衰减的boss,你有没有过这样的经验:还没开出嘲讽呢,被怪打了一下,然后进度条就好像不动了,嘲讽开不出来,直接寄。   怎么解释呢?观察我们的冷却处理函数,在每个普朗克时间,她都会重新计算CD。被减速后,力速比变大了,算出来CD长了,进度条就不会进了。本来该后退的,但是那样看起来太奇怪了,所以就停在了那里。而如果你给boss减力,下一个普朗克时间就会算得CD很小,然后就发现Wait比CD大了,瞬间出手!你再次团灭。

跳dot

  夜莺挂dot,剩余时间8秒,那么在剩余时间为7,6,5,4,3,2,1,0秒时跳出dot。剩余时间为0秒时,先跳出dot,随后因为剩余时间为0,状态被删除。

技能选择

  主函数轮流调用每个人的状态处理和冷却处理函数。其中冷却处理函数中有“放技能”这件事,接下来继续展开技能施放的细节。   手动模式,指哪打哪,不必多说,我们关注自动的时候,包括怪物AI。

6个技能大类 自奶类 嘲讽类 反击类 奶人类 群攻类 单攻类

  每个技能都属于这6种技能中的一个,放技能的时候,是按这个顺序判定的,回忆元素法的技能设置,就是奶自己、奶队友、群攻、单攻的顺序。   能奶队友的技能,必然也能奶自己。   这6个大类,只是形象化地起个名字,属于“群攻”类的技能,不一定是群体攻击技能,只要技能施放的判定,是“敌方不少于X人时施放”,就属于这一类。   一字马(图25伊兹玛尔)。在队伍减员时,它就会掏出魔将(图22)的通魔战刃(我捡到的通魔是假的?)。它的“群攻”技能是正常的技能,设置成敌方不少于4人时施放。“单攻”技能是插人。如果少人了,就不满足群攻的施放条件,按顺序判定下一类技能,就到单攻了。   裂隙87,“群攻”技能非常凶猛,设置成敌方不少于2人时施放。图29癫狂之花同理。   不死虫,“奶自己”技能设置了当自己血量少于15%时施放。   所以这些怪,看上去机制特殊,其实一点也不特殊,就是这5个大类,改改技能设置。

技能设置

  我们说区分这5个大类的唯一标准,就是一个技能的技能设置长啥样。具体来说:

治疗自己技能槽.jpg 治疗队友技能槽.jpg

拉到最左边,是从不施放,等同于生命少于0%时施放。 拉到最右边,是100%施放。 再点+号,是始终施放,等同于生命少于101%时施放。 嘲讽

嘲讽技能槽.jpg

首先看现在有没有嘲讽。如果没有,才会去看技能设置看血量,身上有这个buff的话,是不会自动施放的。 拉到最左边,是从不施放,等同于生命多于100%时施放。 拉到最右边,是始终保持,等同于生命多于0%时施放。 思考:奶和嘲讽分别有多少种不同的技能设置?100?101?102? 反击

反击技能槽.jpg

和嘲讽一样,如果身上有反击buff,不会释放反击技能。所以如果你的圣龙带个反击盘(图19),他是不会自动放反击的。如果手动反击,那作为相同名称的状态,圣龙技能会把反击盘替代掉。 设置“偶尔施放”,有50%概率施放,50%概率继续看后面的技能类。 群攻

群攻技能槽.jpg

允许有多个群攻技能,可以轮流施放,或随机施放。 单攻

单攻技能槽.jpg

允许有多个单攻技能,如夜莺。 不允许设置多个始终施放,其他技能会自动变成从不施放。 两个单攻技能设置成经常,可以轮流施放,或随机施放。 三个单攻技能设置成经常,必定随机施放。 群攻技能类比一下应该也是这样的,但怪的技能设置面板我又看不到,奥卡姆剃刀原理,就随便了吧。 目标选择

  先选好技能,才能选目标。不然咋知道是不是无视嘲讽呢?   攻击技能选攻击目标,群攻技能不选目标?错误的。   无论放啥技能,都要把单攻、单奶的目标选出来。如果技能是群攻,装备是对敌方单体上buff,装备哪里知道buff上给谁呢?昏掉嘞。

优先攻击的目标 随意攻击 剩余生命最少/最多 总生命值最少/最多 护甲最少/最多 抗性最少/最多

  优先治疗的目标,就是除了自己以外,剩余生命百分比最少的。   再谈“挂状态”函数。我们讲过挂状态的对象了,有对敌方全体,敌方单体,自身,己方全体,己方单体。现在我们就知道,如果挂状态的对象是敌方单体或己方单体,就是跟据在这里选择好了的目标,来执行被挂状态函数。

技能施放 准备函数 施放技能 如果冷却时间增加不到-4,更新之; 清除增幅 挂状态函数 准备函数

  准备函数已在lecture 2介绍。   准备函数有多种,这里只出现准备(发动物理攻击),准备(发功魔法攻击),准备(发动治疗)。

施放技能

  这是下节课的内容。

如果冷却时间增加不到-4,更新之

  通常,放完了技能,要按照技能上面写的,设置冷却时间增加多少多少秒。但如果在执行准备函数时,装备触发了连击,连击特效的本质在lectue 3讲过,是把冷却时间增加设置为-4。这时候就不要再按照技能去设置冷却时间增加了,跳过这一步。

清除增幅

  准备函数会有增幅特效,放完了技能要把增幅去掉。增幅联系着lectue 1讲的属性 = max(0,面板+增幅+各种buff)。

挂状态函数

  这是lecture 2的homework,装备如果要挂状态,要等技能放完了再挂。   技能也会有挂状态,技能挂状态包含在“施放技能”的过程中,这里只是装备挂的状态。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3