KILLER 类属性
KILLER 类型的属性,会在击杀一个生物时触发。
灵魂吞噬
有些好玩的特性需要在击杀目标后触发,比如这样一个治疗类属性。
介绍
灵魂吞噬会有概率在一个生物击杀另一个生物时,为自己恢复 目标最大生命*吞噬度% 的血量。
思路
触发 KILLER 时,会触发灵魂吞噬。
将灵魂吞噬作为主属性,负责触发。吞噬度负责提供数值。所以我们注册这么两个属性:灵魂吞噬、吞噬度。
JavaScript
var priority = 30
var combatPower = 1.0
var attributeName = "灵魂吞噬"
var attributeType = "KILLER"
var placeholder = "soul_eat"
function onLoad(attr) {
return attr
}
function runKiller(attr, killer, entity, handle) {
//通过 attr.getRandomValue 获取触发者的对应属性值
var eatValue = attr.getRandomValue(entity, "灵魂吞噬", handle)
//通过 attr.chance 并根据一个值决定是否生效
var eatChance = attr.chance(eatValue)
//如果生效
if (eatChance) {
//通过 entity.getMaxHealth() 获取击杀者生命最大值
//getMaxHealth()方法已经标记为遗弃,应该使用 entity.getAttribute(Attribute.GENERIC_MAX_HEALTH) 获取
//但是AttributePlus没导这个包,可以根据后面的文章内容自己操作一下
var maxHealth = entity.getMaxHealth()
//通过 attr.getRandomValue 获取触发者的对应属性值
var eatDegreeValue = attr.getRandomValue(entity, "吞噬度", handle)
//因为恢复度一个百分比,所以 目标最大生命值 * 恢复度 / 100,简单的数学
var healValue = maxHealth * eatDegreeValue / 100
//使用 Utils.safeHeal 安全的为触发者恢复血量
Utils.safeHeal(killer, healValue)
return true;
}
return false;
}