魔兽世界1.12有很强大的宏,可以做到自动选择需要治疗的目标,再根据损失的血量施放对应的治疗法术。这里研讨一下选择目标的策略
传统的策略是最值,有三种角度:
最少的剩余血量、最多的损失血量、最低的血量比例
如网上就能找到这样的宏
网上找到的一键治疗宏
虽然是三种不同的角度,但是还是很容易发生碰撞,比如“最少剩余血量”有可能就是“最低血量比”
最低比例15%,最少血量1500
当自动治疗角色比较多时,就会有可能多人采用同一种策略,这样发生碰撞的几率更高,会导致多人都去治疗同一个目标,反而其他人得不到治疗。
最初想到的解决方案是用随机轮询策略,同样也有三种角度:首先找到低于指定血量、首先找到多于指定缺损、首先找到低于特定比例
随机轮询策略解决了多人治疗时发生的碰撞,但是缺点也很明显,有可能多次都随机到了不太需要救治的目标,而最需要治疗的目标没随机到,可能发生倒T的情况。尤其是在5人本中,可能多次都随机不到最需要治疗的玩家。
所以团队中必须有些人采用最值策略(保证T能照顾到),另一些人采用随机策略(照顾团队其他成员)。但是哪些人去采用最值策略?哪些人去采用随机策略?这是个问题。除非提前协调好。有没有一种适合大家的策略呢?
不同的选择策略和不同的角度
我设计了一种新的策略:标尺法
遍历所有值得治疗的玩家,寻找最接近标尺的那一个作为治疗目标。
标尺法的优点:由于每个人设定的标尺不相同,最接近他的标尺肯定不是同一个玩家,这样就起到了分散治疗的效果。
固定标尺50%
如果选标尺过于偏离实际的团队数值,那么选中的玩家可能不是很适合。例如标尺设定为90%,那么团队危急时(坦克20%,法师40%),会选中不太需要救治的目标(法师40%)。例如标尺设定为10%,团队比较健康的时候,就相当于选中最低比例的玩家,这就和前面的策略一样产生了碰撞。
为了克服这个缺点,标尺的选择应当尽量合理,尽量接近实际团队的数值。一个比较简化的做法是随机标尺,这样随机到比较偏离实际数值的治疗者就去治疗那些不太需要救治的目标,随机到最贴近需要救治的目标的治疗者就去治疗最需要救治的玩家。
我这里用random(9)分了9个档次,标尺从0.06到0.54选定。主要是从宏的字数限制(255字符)考虑,以及团队中的自动治疗角色数量(一般也就5个左右),当然你也可以分成更多的档次,例如random(10,80)/100,这样将从10%~80%之间随机