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):