Skip to content

Player Effects

Player Effects#

The effects cannot be stacked, and doesn't get queued up, only 1 effect can be applied to the player at one time.

Once a effect is ran, onEffectStart(pl, type) and onEffectEnd(pl, type) is called in player.js scriptclass.

Example, scriptnpc#

This example will trigger when a player says either effect slow or any of the other effects listed below.

function onPlayerSays(player) {
    switch (player.chat) {
        case 'effect slow': {
            // set the player speed to 0.5 times their
            // weapon speed in the duration of 10 seconds
            player.seteffect(10, 'speed', { factor: 0.5 });
            break;
        }
        case 'effect fast': {
            player.seteffect(10, 'speed', { factor: 2 });
            break;
        }
        case 'effect hurt': {
            // hurts the player with -1 hp during 10 seconds
            player.seteffect(10, 'hurt', { hp: 1 });
            break;
        }
        case 'effect heal': {
            // heals the player with +1 hp for 10 seconds
            player.seteffect(10, 'heal', { hp: 1 });
            break;
        }
        case 'effect damage': {
            // makes player weapon stronger
            player.seteffect(30, 'damage', { hp: 10 });
            break;
        }
        case 'effect shield': {
            // shields from damage
            player.seteffect(30, 'shield', { hp: 10 });
            break;
        }
        case 'effect inverse': {
            // makes the players movement controls reversed
            player.seteffect(30, 'inverse');
            break;
        }
        default:
            break;
    }
}

Example, player.js#

This example will clear the aniarg1 from an additional visual effect bani file, when a effect ends, if anything is set on player.aniargs1. It will also output a message when a effect starts and ends.

function onEffectStart(player, type) {
    echo(`effect starts: ${player.name} -> ${type}`);
}

function onEffectEnd(player, type) {
    echo(`effect ends: ${player.name} -> ${type}`);
    if (player.aniarg1 && player.aniarg1.startsWith('effect')) {
        player.aniarg1 = null;
    }
}

Example, item.effect#

Besides calling seteffect, an effect can be applied by configuring the effect in the weapon item and then using the item on a player or NPC. Add in /Config/items/weapon/morningstart.js (or other weapons):

    "effect": {
        "delay": 10,
        "type": "hurt",
        "params": {
            "hp": 20
        }
    }