예제 #1
0
        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");
            }
        }
예제 #2
0
        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
                });
            }
        }
예제 #3
0
        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
                });
            }
        }