public NpcController(int id, string username, Faction faction) : base(id, username, faction)
        {
            BoosterAssembly     = new BoosterAssembly(this);
            HangarAssembly      = new NpcHangarAssembly(this, Ship.YAMATO, Map.MAP_R_ZONE, new Position(10000, 6000), 1_000_000, 1_000_000);
            MovementAssembly    = new MovementAssembly(this);
            AttackAssembly      = new NpcAttackAssembly(this);
            EffectsAssembly     = new EffectsAssembly(this);
            AttackTraceAssembly = new AttackTraceAssembly(this);
            ZoneAssembly        = new ZoneAssembly(this);

            BoosterAssembly.Set(BoosterType.SHIELD_REGNERATION, 0.05);
            BoosterAssembly.Set(BoosterType.SHIELD_ABSORBATION, 0.5);
            BoosterAssembly.Set(BoosterType.HITPOINTS_REGENERATION, 0.01);

            TimerStart();
            InitializeTimer();

            SpacemapController.For(HangarAssembly.Map.ID).Add(this);
        }
        public async void Refresh(bool wasKilled)
        {
            if (HangarAssembly.Hitpoints <= 0)
            {
                Die();
                return;
            }

            HangarAssembly.Refresh();

            Send(
                ClientConfiguration.UserSettings,
                PacketBuilder.UserKeyBindinsCommand(this),
                PacketBuilder.UIMenuBarsCommand(this),
                PacketBuilder.Slotbar.SlotBarsCommand(this)
                );

            Send(
                new class_884(new List <class_503>()
            {
                new class_571(false, 1)
            }),
                PacketBuilder.Legacy("0|A|BKBB|0"),
                PacketBuilder.Legacy("0|A|BKS|0"),
                PacketBuilder.Legacy("0|A|BKB|0"),
                PacketBuilder.Legacy("0|A|BKPR|0"),
                PacketBuilder.Legacy("0|A|BKR|0"),
                PacketBuilder.Legacy("0|A|BKM|0"),
                PacketBuilder.Legacy("0|A|BK|0"),
                PacketBuilder.Legacy("0|A|JV|0"),
                PacketBuilder.Legacy("0|TR")
                );

            Send(
                PacketBuilder.InitializeShipCommand(this),
                PacketBuilder.DroneCommand(this),
                PacketBuilder.ConfigurationCommand(this),
                PacketBuilder.SpeedChangeCommand(this),
                ZoneAssembly.ZoneCommand(),
                PacketBuilder.Legacy("0|8"), // login done
                PacketBuilder.Legacy("0|7|HS")
                );

            await Task.Delay(750);

            Send(EffectsAssembly.EffectsCommand()
                 .Concat(PlayerTechAssembly.EffectsCommand())
                 .Concat(PlayerAbilityAssembly.EffectsCommand()));

            TimerStart();

            if (wasKilled)
            {
                EffectsAssembly.MakeInvincible(10000);
            }

            lock (_checkMinesInRange) {
                _renderedMines.Clear();
            }

            lock (_checkPlayersInRange) {
                _renderedPlayers.Clear();
            }

            SpacemapController.For(Account.CurrentHangar.MapID).Remove(this);
            SpacemapController.For(Account.CurrentHangar.MapID).Add(this);

            if (Locked != null)   // just for the visuals
            {
                SendLockVisual(Locked);
            }
        }