wServer.realm.entities.player.Player.EnemyHit C# (CSharp) Method

EnemyHit() public method

public EnemyHit ( RealmTime time, wServer.cliPackets.EnemyHitPacket pkt ) : void
time RealmTime
pkt wServer.cliPackets.EnemyHitPacket
return void
        public void EnemyHit(RealmTime time, EnemyHitPacket pkt)
        {
            try
            {
                var entity = Owner.GetEntity(pkt.TargetId);
                var prj = (this as IProjectileOwner).Projectiles[pkt.BulletId];
                prj.Damage = (int) statsMgr.GetAttackDamage(prj.Descriptor.MinDamage, prj.Descriptor.MaxDamage);
                prj.ForceHit(entity, time);
                if (pkt.Killed && !(entity is Wall))
                {
                    psr.SendPacket(new UpdatePacket
                    {
                        Tiles = new UpdatePacket.TileData[0],
                        NewObjects = new[] {entity.ToDefinition()},
                        RemovedObjectIds = new[] {pkt.TargetId}
                    });
                    _clientEntities.Remove(entity);
                }
            }
            catch
            {
                /*Console.ForegroundColor = ConsoleColor.DarkMagenta;
                Console.WriteLine("CAN'T REGISTER HIT by player " + Name);
                Console.ForegroundColor = ConsoleColor.White;
                 *
                 * Disabled, this message spams when an enemy dies*/
            }
            /*
            if (entity != null && pkt.Killed)   //Tolerance
            {
                Projectile prj = (this as IProjectileOwner).Projectiles[pkt.BulletId];
                Position? entPos = entity.TryGetHistory((time.tickTimes - tickMapping) - pkt.Time);
                Position? prjPos = prj == null ? null : (Position?)prj.GetPosition(pkt.Time + tickMapping - prj.BeginTime);
                var tol1 = (entPos == null || prjPos == null) ? 10 : (prjPos.Value.X - entPos.Value.X) * (prjPos.Value.X - entPos.Value.X) + (prjPos.Value.Y - entPos.Value.Y) * (prjPos.Value.Y - entPos.Value.Y);
                var tol2 = prj == null ? 10 : (prj.X - entity.X) * (prj.X - entity.X) + (prj.Y - entity.Y) * (prj.Y - entity.Y);
                if (prj != null && (tol1 < 1 || tol2 < 1))
                {
                    prj.ForceHit(entity, time);
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.WriteLine("CAN'T REGISTER HIT!" + " X: " + tol1 + " Y: " + tol2);
                    Console.ForegroundColor = ConsoleColor.White;
                    psr.SendPacket(new UpdatePacket()
                    {
                        Tiles = new UpdatePacket.TileData[0],
                        NewObjects = new ObjectDef[] { entity.ToDefinition() },
                        RemovedObjectIds = new int[] { pkt.TargetId }
                    });
                    clientEntities.Remove(entity);
                }
            }
            else if (pkt.Killed)
            {
                psr.SendPacket(new UpdatePacket()
                {
                    Tiles = new UpdatePacket.TileData[0],
                    NewObjects = Empty<ObjectDef>.Array,
                    RemovedObjectIds = new int[] { pkt.TargetId }
                });
            }*/
        }