跳到主要内容

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;
}