偷取应该是击回的子项,属于延迟回复,跟吸纳很相似,但是比吸纳限制多且更有意思。偷取可以认为就是血瓶喝药。
偷取状态就是一个血量池。血量池可以存储多个血包,血量池是一个队列。
一个血包的回复量 " 怪物承受伤害* 0 .1" <= 自身最大生命值 * 0.1
玩家 3000血量 | 伤害 2000 - 3000 | 暴击率百分之50
怪物A 7000血量 | 怪物B 8000血量
玩家 attack 怪物A
- 没有暴击 造成2500伤害,
- 2500 * 0.1 = 250
- 250 <= 3000 * 0.1
- 血量池 存储 boold1 {偷取量:250} 的血包
玩家 attack 怪物B
- 造成暴击 造成4000伤害
- 4000 * 0.1 = 400
- 400 > 3000 * 0.1
- 血量池 存储 boold2 {偷取量:300} 血量的血包
设计者为了做一个不同于的击回的机制,所以队列里面的血包,不会立即全部回复到玩家的生命值上,它有一个延迟回复的时间。
队列里面的血包,是按照每秒的一次的速度传输。一次的传输的回复量
- 当前最大生命值的 * 0.02 = 3000 * 0.02 = 60
所以
- boold1 需要 250 / 60 一共需要5次才能传输完毕,也就是需要5秒
- boold2 需要 300 / 60 一共需要5次才能传递完毕 ,也需要5秒
如果 在传输的过程中,玩家的生命值已到达满值,那么血量池就会清空。所有血包也会被销毁。
就算设置了血包的传输次数,如果一秒攻击100个怪物,那么就算每秒只能从单个血包里面获得最大生命值的百分之2血量。也能一秒一百个一起回复,也能获得相当于当前最大生命值2倍的秒回,玩家最大生命值 * 0.02 *100。
设计者肯定不愿意让你获得比药水还要高的秒回,不然击回就没意义了。加了一条限制,所有血包的每秒回复量之和 不超过 当前最大生命值的百分之20。上面的100个血包,也只有前面10个血包能生效,后面90个血包所传输的血量直接扔掉。
- 3000 * 0.2 = 600
- 每秒最多从队列里面获取 600 血量
为什么这样做:因为根本不知道队列有多长。为什么设置百分之20:因为百分之75的伤害被阻挡了。
这一来一去,直接卡了源头和目标,源头限制最大只能最大生命的百分之10,目标卡了 只能每秒恢复最大生命的百分之20。
破解:
血包池 没有上线。
1 提高单个boold 的上限,让一个boold包可以存储更多的生命。
提高 "每次偷取生命的基础最大回复率",延长输送时间。
2 提高每秒boold 的输送量,降低输送时间,在boold 数量少的情况下尽量获得 _ 每秒最大生命百分之20的回复。
提高 "生命偷取:每秒总回复量提高"-> 瓦尔冥约
3 增大boold 的回复量之和的 限制。
提高 “生命偷取:每秒最大生命总回复量提高”-> 瓦尔冥约
4 增加传输时间,让boold的传输量变大
提高 "生命偷取:总生命偷取加成" -> 瓦尔冥约