Example #1
0
        private int GetFacilityBonus()
        {
            int modifier    = 0;
            var dockingbase = GetDockingBase();

            if (dockingbase is Outpost)
            {
                ProductionFacility facility = (dockingbase as Outpost).GetProductionFacilities().Where(x => x.Eid == this.Eid).First();
                modifier = Outpost.GetFacilityLevelFromStack(facility.Eid) * 25;
            }
            return(modifier);
        }
        private int GetFacilityBonus()
        {
            int modifier    = 0;
            var dockingbase = GetDockingBase();

            if (dockingbase is Outpost)
            {
                ProductionFacility facility = (dockingbase as Outpost).GetProductionFacilities().Where(x => x.Eid == this.Eid).First();
                int extrapts = facility.DynamicProperties.GetOrDefault <int>(k.extrapoints);  //Entity-property for unique facility base-proficiencies
                modifier = (Outpost.GetFacilityLevelFromStack(facility.Eid) + extrapts) * 25; //bonus per facility level
            }
            return(modifier);
        }
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var facilityEid = request.Data.GetOrDefault <long>(k.facility);
                var character   = request.Session.Character;

                var facility = (ProductionFacility)Entity.Repository.LoadOrThrow(facilityEid);
                var outpost  = facility.GetDockingBase().ThrowIfNotType <Outpost>(ErrorCodes.ItemNotFound);

                var siteInfo = outpost.GetIntrusionSiteInfo();
                siteInfo.Owner.ThrowIfNotEqual(character.CorporationEid, ErrorCodes.AccessDenied);

                var role = Corporation.GetRoleFromSql(character);
                role.IsAnyRole(CorporationRole.CEO, CorporationRole.DeputyCEO, CorporationRole.Accountant).ThrowIfFalse(ErrorCodes.InsufficientPrivileges);

                var currentProductionpoints = siteInfo.ProductionPoints.ThrowIfLessOrEqual(0, ErrorCodes.NotEnoughIntrusionProductionPoints);
                var facilityLevel           = Outpost.GetFacilityLevelFromStack(facilityEid).ThrowIfGreaterOrEqual(Outpost.MAXIMUM_PRODUCTION_POINT_INDICES, ErrorCodes.IntrusionFacilityIsOnMaximumLevel);
                currentProductionpoints--;

                outpost.SetProductionPoints(currentProductionpoints);
                outpost.UpgradeFacility(facilityEid);
                outpost.InsertProductionLog(IntrusionEvents.upgradeFacility, facility.Definition, facilityLevel + 2, facilityLevel + 1, character, currentProductionpoints, currentProductionpoints + 1, siteInfo.Owner);

                Transaction.Current.OnCommited(() =>
                {
                    var resultingSiteInfo = outpost.GetIntrusionSiteInfo();
                    var result            = new Dictionary <string, object>
                    {
                        { k.info, resultingSiteInfo.ToDictionary() },
                        { k.facility, facility.GetFacilityInfo(character) }
                    };

                    Message.Builder.FromRequest(request).WithData(result).Send();
                });

                scope.Complete();
            }
        }
Example #4
0
        protected override int GetFacilityPoint()
        {
            var bonusSection = Outpost.GetFacilityLevelFromStack(Eid);

            return(_researchLabPoints[bonusSection]);
        }
Example #5
0
        protected override int GetFacilityPoint()
        {
            var bonusSection = Outpost.GetFacilityLevelFromStack(Eid);

            return(_reprocessorPoins[bonusSection]);
        }