Creating a 2-Second Stun Effect

Creating a 2-Second Stun Effect

let _players = App.players;

// Event when player enters 
App.onJoinPlayer.Add(function(p) {
  p.tag = {
      stun : false, // Whether stunned, false
      sTime : 2, //Set stun effect to 2 seconds
  };
	_players = App.players;
});

// When the player attacks another player (Z key)
App.onUnitAttacked.Add(function(sender, x, y, target) {
    if(!target.tag.stun)
    {
        target.tag.stun = true; // Change whether stunned to true
        target.moveSpeed = 0; // Change movement speed to 0
        target.sendUpdated();
    }
});

App.onUpdate.Add(function(dt){
	for(let i in _players) {
		let p = _players[i];
		// If whether stunned is true
		if(p.tag.stun)
		{
		    p.tag.sTime -= dt; //Subtract dt for each update until the stun effect duration becomes 0.
		    if(p.tag.sTime <= 0) // When the stun effect duration becomes under 0,
		    {
		        p.tag.stun = false; // Change whether stunned to false
		        p.tag.sTime = 2; // Reset duration to 2 seconds
		        p.moveSpeed = 80; // Normalize movement speed
		        p.sendUpdated();
		    }
		}
	}
});

// Event when player exits
App.onLeavePlayer.Add(function(p) {
    p.moveSpeed = 80; // Normalize movement speed
    p.sendUpdated();
    _players = App.players;
});

Please Note

- For the tutorial, we recommend setting the app type to Mini-Game.

- The JSON file name must be “main.” Please create a new text file and name it “main.js.”

- If you do not know how to deploy an app, please refer to the ZEP Script Deployment Guide.



Last updated