public void Attack() { if (isAttackReady()) { // Invoke an attack event EntityAttackEvent e = new EntityAttackEvent { entity = this }; OnEntityAttackEvent?.Invoke(this, e); if (e.cancel == true) { return; } // return if the event has been cancelled by any subscriber attackCooldown.Reset(attackRate); StartCoroutine("AttackRoutine"); } }
public void OnEntityAttack(EntityAttackEvent ev) { var damage = ev.Attacker.Atk - ev.Defender.Def; Server.Events.Call(new EntityDamageEvent() { Damage = damage, Entity = ev.Defender, DamageCause = DamageCause.ATTACK }); foreach (var player in ev.Defender.GetPlayersNear()) { Log.Debug("Entity Attack PLAYER found"); player.Tcp.Send(new EntityAttackPacket() { AttackerUID = ev.Attacker.UID, DefenderUID = ev.Defender.UID, Damage = damage }); } }
public void OnEntityAttack(EntityAttackEvent ev) { var damage = ev.Attacker.Atk - ev.Defender.Def; Server.Events.Call(new EntityDamageEvent() { Damage = damage, Entity = ev.Defender, DamageCause = DamageCause.ATTACK }); foreach (var player in ev.Defender.GetPlayersNear(includeSelf: true)) { // If the player is the attacker he doesnt need his package player.Tcp.Send(new EntityAttackPacket() { AttackerUID = ev.Attacker.UID, DefenderUID = ev.Defender.UID, Damage = damage }); } }