Exemplo n.º 1
0
        public static void UnloadUpgradable(Ship ship, int uniqueid)
        {
            var defenition = Definitions.UpgrDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId);
            var lvl        = defenition?.Levels.Level.FirstOrDefault(n => n.Id == ship.TargetLevel);

            if (lvl != null)
            {
                ship.LogUnload();
                var upg = Core.GlobalData.Upgradeables.FirstOrDefault(n => n.DefId == ship.TargetId);
                if (upg != null)
                {
                    upg.Progress += lvl.MaterialKoef * SendingHelper.GetCapacity(ship);
                }

                Networking.AddTask(
                    new Task.UnloadShipTask(
                        ship.InstId,
                        Core.GlobalData.Level,
                        Enums.EObject.upgradeable,
                        SendingHelper.GetCapacity(ship),
                        lvl.MaterialKoef * SendingHelper.GetCapacity(ship),
                        SendingHelper.GetSailors(ship),
                        lvl.Sailors,
                        ship.TargetLevel,
                        null, uniqueid));
                SendingHelper.NullShip(ship);
            }
        }
Exemplo n.º 2
0
        public static void UnloadOutpost(Ship ship, int uniqueid)
        {
            var loc = Core.GlobalData.Outposts.Where(n => n.DefId == ship.TargetId).First();

            ship.LogUnload();
            var outp = Core.GlobalData.Outposts.Where(n => n.DefId == ship.TargetId).FirstOrDefault();

            if (outp.CargoOnTheWay <= ship.Sailors())
            {
                outp.CargoOnTheWay -= ship.Sailors();
            }

            Networking.AddTask(
                new Task.DockShipTaskOutPost(
                    ship,
                    false,
                    SendingHelper.GetCapacity(ship),
                    ship.Cargo,
                    SendingHelper.GetSailors(ship),
                    ship.Crew,
                    ship.TargetLevel,
                    loc.CargoOnTheWay + loc.Crew,
                    loc.RequiredCrew,
                    uniqueid));
            SendingHelper.NullShip(ship);
        }
Exemplo n.º 3
0
        public static void UnloadContractor(Ship ship, int uniqueid)
        {
            var currentcontractor = Definitions.ConDef.Items.Item
                                    .FirstOrDefault(n => n.DefId == ship.TargetId);

            var quest = currentcontractor?.Quests.Quest.FirstOrDefault(n => n.Id == ship.TargetLevel);

            if (quest == null)
            {
                return;
            }

            if (currentcontractor.Type == "static")
            {
                var usedshit  = quest.MaterialKoef * SendingHelper.GetCapacity(ship);
                var lcontract = Core.GlobalData.Contracts.FirstOrDefault(n => n.DefId == ship.TargetId);
                // TODO: increasing of progress or amount!
                ship.LogUnload();
                Networking.AddTask(
                    new Task.DockShipTaskContractor(
                        ship,
                        false,
                        SendingHelper.GetCapacity(ship),
                        usedshit,
                        SendingHelper.GetSailors(ship),
                        currentcontractor.Sailors,
                        ship.TargetLevel,
                        currentcontractor.DefId,
                        lcontract.Progress,
                        (int)quest.InputAmount(),
                        quest.ObjectiveTypeId,
                        uniqueid));
            }
            else
            {
                var usedshit  = quest.MaterialKoef * SendingHelper.GetCapacity(ship);
                var lcontract = Core.GlobalData.Contracts.FirstOrDefault(n => n.DefId == ship.TargetId);
                var inp       = quest.InputAmount();
                // TODO: increasing of progress or amount!
                ship.LogUnload();
                Networking.AddTask(
                    new Task.DockShipTaskContractor(
                        ship,
                        false,
                        SendingHelper.GetCapacity(ship),
                        usedshit,
                        SendingHelper.GetSailors(ship),
                        currentcontractor.Sailors,
                        ship.TargetLevel,
                        currentcontractor.DefId,
                        lcontract.Progress,
                        (int)quest.InputAmount(),
                        quest.ObjectiveTypeId,
                        uniqueid));
            }

            SendingHelper.NullShip(ship);
        }
Exemplo n.º 4
0
        public static void UnloadWreck(Ship ship, int uniqueid)
        {
            var wrk = Core.GlobalData.Wrecks.Where(n => n.InstId == ship.TargetId).FirstOrDefault();

            if (wrk != null)
            {
                ship.LogUnload();
                Networking.AddTask(
                    new Task.UnloadShipTask(
                        ship.InstId,
                        Core.GlobalData.Level,
                        Enums.EObject.wreck,
                        SendingHelper.GetCapacity(ship),
                        0,
                        SendingHelper.GetSailors(ship),
                        wrk.Sailors,
                        ship.TargetLevel,
                        null,
                        uniqueid));
                SendingHelper.NullShip(ship);
            }
        }
Exemplo n.º 5
0
        public static void UnloadSocialcontract(Ship ship, int uniqueid)
        {
            var co = Core.GlobalData.SocialContracts.Where(n => n.InstId == ship.TargetId)
                     .FirstOrDefault();

            if (co == null)
            {
                return;
            }

            ship.LogUnload();
            Networking.AddTask(
                new Task.DockShipSocialContractor(
                    ship,
                    false,
                    ship.Capacity(),
                    co.MaterialKoef / co.Amount,
                    ship.Sailors(),
                    co.Sailors,
                    ship.TargetLevel,
                    uniqueid));
            SendingHelper.NullShip(ship);
        }
Exemplo n.º 6
0
        public static void UnloadMarketplace(Ship ship, int uniqueid)
        {
            var market = Definitions.MarketDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId);
            var lvl    = Definitions.MarketDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId);
            var mat    = lvl?.Materials.Material.FirstOrDefault(n => n.Id == ship.MaterialId);

            if (mat != null)
            {
                ship.LogUnload();
                Networking.AddTask(
                    new Task.UnloadShipTask(
                        ship.InstId,
                        Core.GlobalData.Level,
                        Enums.EObject.marketplace,
                        SendingHelper.GetCapacity(ship),
                        mat.InputKoef * SendingHelper.GetCapacity(ship),
                        SendingHelper.GetSailors(ship),
                        market.Sailors,
                        ship.TargetLevel,
                        null,
                        uniqueid));
                SendingHelper.NullShip(ship);
            }
        }