示例#1
0
    public override void InternalDamageLogic()
    {
        if (!onCooldown)
        {
            if (RelatedPart.CurrentInternalBleedingDamage > RelatedPart.MaximumInternalBleedDamage / 2)
            {
                Chat.AddActionMsgToChat(RelatedPart.HealthMaster.gameObject,
                                        "You gasp for air; but you drown in your own blood from the inside!",
                                        $"{RelatedPart.HealthMaster.playerScript.visibleName} gasps for air!");
                RelatedPart.HealthMaster.HealthStateController.SetSuffocating(true);
            }
            else
            {
                RelatedPart.InternalBleedingLogic();
            }

            if (DMMath.Prob(coughChanceWhenInternallyBleeding))
            {
                Chat.AddActionMsgToChat(RelatedPart.HealthMaster.gameObject, "You cough up blood!",
                                        $"{RelatedPart.HealthMaster.playerScript.visibleName} coughs up blood!");
                RelatedPart.CurrentInternalBleedingDamage -= 4;

                //TODO: TAKE BLOOD
                var bloodLoss = new ReagentMix();
                RelatedPart.HealthMaster.CirculatorySystem.ReadyBloodPool.TransferTo(bloodLoss,
                                                                                     RelatedPart.CurrentInternalBleedingDamage);
                MatrixManager.ReagentReact(bloodLoss,
                                           RelatedPart.HealthMaster.gameObject.RegisterTile().WorldPositionServer);
            }

            onCooldown = true;
            StartCoroutine(CooldownTick());
        }
    }
示例#2
0
        public override void HealthMasterSet()
        {
            base.HealthMasterSet();
            var Parent = RelatedPart.GetParent();
            var Added  = Spawn.ServerPrefab(BodyFatToInstantiate.gameObject).GameObject.GetComponent <BodyFat>();

            BodyFats.Add(Added);
            Parent.Storage.ServerTryAdd(Added.gameObject);
        }
示例#3
0
        private IEnumerator DelayAddFat()
        {
            yield return(null);

            var Parent = RelatedPart.GetParent();
            var Added  = Spawn.ServerPrefab(BodyFatToInstantiate.gameObject).GameObject.GetComponent <BodyFat>();

            BodyFats.Add(Added);
            Parent.Storage.ServerTryAdd(Added.gameObject);
        }
示例#4
0
    protected override void InitAbility()
    {
        //print("initialized");
        if (RelatedPart)
        {
            myLight = RelatedPart.GetComponent <Light>();
        }

        if
        (myLight)
        {
            //print("mylight OK");
            myLight.color   = mColors[mCurrentColorIndex];
            myLight.enabled = true;
        }
    }
示例#5
0
        public override void ImplantPeriodicUpdate()
        {
            base.ImplantPeriodicUpdate();
            //BloodContainer
            if (StomachContents.ReagentMixTotal > 0)
            {
                float ToDigest = DigesterAmountPerSecond * RelatedPart.TotalModified;
                if (StomachContents.ReagentMixTotal < ToDigest)
                {
                    ToDigest = StomachContents.ReagentMixTotal;
                }
                var Digesting = StomachContents.TakeReagents(ToDigest);

                RelatedPart.BloodContainer.Add(Digesting);

                //healthMaster.NutrimentLevel += Digesting[Nutriment];
                //What to do with non Digesting content, put back in stomach?
            }

            bool AllFat = true;

            foreach (var Fat in BodyFats)
            {
                if (Fat.IsFull == false)
                {
                    AllFat = false;
                    break;
                }
            }

            if (AllFat)
            {
                var Parent = RelatedPart.GetParent();
                var Added  = Spawn.ServerPrefab(BodyFatToInstantiate.gameObject).GameObject.GetComponent <BodyFat>();
                BodyFats.Add(Added);
                Parent.Storage.ServerTryAdd(Added.gameObject);
            }
        }
示例#6
0
        public string Clone(int partID = 0, int newPartID = 0, string upc = "", bool categories = false, bool relatedParts = false, bool attributes = false, bool content = false, bool vehicles = false, bool prices = false)
        {
            CurtDevDataContext db = new CurtDevDataContext();
            List<string> messages = new List<string>();
            // Validate the partID and shortDesc fields
            if (partID == 0) { messages.Add("You must enter a part number."); }
            if (newPartID == 0) { messages.Add("You must enter a part number."); }
            if (upc.Trim().Length == 0) { messages.Add("You must enter a UPC."); }

            int existing_part = 0;
            // Make sure we don't have a product with this partID
            existing_part = (from p in db.Parts
                             where p.partID.Equals(newPartID)
                             select p).Count();
            if (existing_part != 0) { messages.Add("This part number exists."); }

            #region clone part
            if (messages.Count == 0) { // No errors, add the part
                try {
                    ConvertedPart cp = ProductModels.GetPart(partID);
                    Part new_part = new Part {
                        partID = newPartID,
                        classID = cp.pClass,
                        dateAdded = DateTime.Now,
                        dateModified = DateTime.Now,
                        featured = cp.featured,
                        oldPartNumber = cp.oldPartNumber,
                        priceCode = cp.priceCode,
                        shortDesc = cp.shortDesc,
                        status = cp.status,
                        ACESPartTypeID = cp.ACESPartTypeID
                    };
                    db.Parts.InsertOnSubmit(new_part);
                    db.SubmitChanges();
                    messages.Add("Part Added Successfully");

                    try {
                        ProductModels.SaveAttribute(0,new_part.partID, "UPC", upc);
                        messages.Add("UPC Added Successfully");
                    } catch (Exception e) {
                        messages.Add(e.Message);
                    }

                    #region clone categories
                    if (categories) {
                        try {
                            List<CatParts> new_catparts = new List<CatParts>();
                            List<int> catparts = db.CatParts.Where(x => x.partID == partID).Select(x => x.catID).Distinct().ToList();
                            foreach (int catpart in catparts) {
                                CatParts ncp = new CatParts {
                                    catID = catpart,
                                    partID = new_part.partID
                                };
                                new_catparts.Add(ncp);
                            }
                            db.CatParts.InsertAllOnSubmit(new_catparts);
                            db.SubmitChanges();
                            messages.Add("Categories Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the categories.");
                        }
                    }
                    #endregion

                    #region clone Related Parts
                    if (relatedParts) {
                        try {
                            List<RelatedPart> new_relparts = new List<RelatedPart>();
                            List<RelatedPart> relparts = db.RelatedParts.Where(x => x.partID == partID).ToList<RelatedPart>();
                            foreach (RelatedPart relpart in relparts) {
                                RelatedPart nrp = new RelatedPart {
                                    relatedID = relpart.relatedID,
                                    rTypeID = relpart.rTypeID,
                                    partID = new_part.partID
                                };
                                new_relparts.Add(nrp);
                            }
                            db.RelatedParts.InsertAllOnSubmit(new_relparts);
                            db.SubmitChanges();
                            messages.Add("Related Parts Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the related parts.");
                        }
                    }
                    #endregion

                    #region clone Attributes
                    if (attributes) {
                        try {
                            List<PartAttribute> new_attrs = new List<PartAttribute>();
                            List<PartAttribute> attributelist = db.PartAttributes.Where(x => x.partID == partID).Where(x => x.field.ToLower() != "upc").ToList<PartAttribute>();
                            foreach (PartAttribute attribute in attributelist) {
                                PartAttribute attr = new PartAttribute {
                                    value = attribute.value,
                                    field = attribute.field,
                                    partID = new_part.partID,
                                    sort = attribute.sort
                                };
                                new_attrs.Add(attr);
                            }
                            db.PartAttributes.InsertAllOnSubmit(new_attrs);
                            db.SubmitChanges();
                            messages.Add("Attributes Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the attributes.");
                        }
                    }
                    #endregion

                    #region clone Content
                    if (content) {
                        try {
                            List<ContentBridge> new_content = new List<ContentBridge>();
                            List<ContentBridge> contents = (from cb in db.ContentBridges
                                                            where cb.partID == partID
                                                            select cb).ToList<ContentBridge>();
                            foreach (ContentBridge cont in contents) {
                                Content c = db.Contents.Where(x => x.contentID.Equals(cont.contentID)).FirstOrDefault();
                                Content new_c = new Content {
                                    cTypeID = c.cTypeID,
                                    text = c.text
                                };
                                db.Contents.InsertOnSubmit(new_c);
                                db.SubmitChanges();
                                ContentBridge cb = new ContentBridge {
                                        partID = new_part.partID,
                                        contentID = new_c.contentID
                                };
                                db.ContentBridges.InsertOnSubmit(cb);
                                db.SubmitChanges();
                            }
                            messages.Add("Contents Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the contents.");
                        }
                    }
                    #endregion

                    #region clone Vehicles
                    if (vehicles) {
                        try {
                            List<VehiclePart> vehiclelist = db.VehicleParts.Where(x => x.partID == partID).ToList<VehiclePart>();
                            foreach (VehiclePart vp in vehiclelist) {
                                VehiclePart vehiclepart = new VehiclePart {
                                    partID = new_part.partID,
                                    vehicleID = vp.vehicleID,
                                    drilling = vp.drilling,
                                    installTime = vp.installTime,
                                    exposed = vp.exposed
                                };
                                db.VehicleParts.InsertOnSubmit(vehiclepart);
                                db.SubmitChanges();

                                List<VehiclePartAttribute> new_vpattr = new List<VehiclePartAttribute>();
                                List<VehiclePartAttribute> vpattrs = db.VehiclePartAttributes.Where(x => x.vPartID == vp.vPartID).ToList<VehiclePartAttribute>();
                                foreach (VehiclePartAttribute vpa in vpattrs) {
                                    VehiclePartAttribute new_vpa = new VehiclePartAttribute {
                                        vPartID = vehiclepart.vPartID,
                                        value = vpa.value,
                                        field = vpa.field,
                                        sort = vpa.sort
                                    };
                                    new_vpattr.Add(new_vpa);
                                };
                                db.VehiclePartAttributes.InsertAllOnSubmit(new_vpattr);
                                db.SubmitChanges();
                                messages.Add("Vehicles Cloned Successfully");
                            }
                        } catch {
                            messages.Add("There was a problem cloning the vehicles.");
                        }
                    }
                    #endregion

                    #region clone Prices
                    if (prices) {
                        try {
                            List<Price> new_prices = new List<Price>();
                            List<Price> pricelist = db.Prices.Where(x => x.partID == partID).ToList<Price>();
                            foreach (Price prc in pricelist) {
                                Price price = new Price {
                                    priceType = prc.priceType,
                                    price1 = prc.price1,
                                    partID = new_part.partID,
                                    enforced = prc.enforced
                                };
                                new_prices.Add(price);
                            }
                            db.Prices.InsertAllOnSubmit(new_prices);
                            db.SubmitChanges();
                            messages.Add("Prices Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the prices.");
                        }
                    }
                    #endregion

                    ImportImages(new_part.partID);

                    db.indexPart(new_part.partID);
                    messages.Add("Part Cloned Successfully.");

                } catch (Exception e) {
                    messages.Add(e.Message);
                }
            } else {
                messages.Add("Part Clone Failed.");
            }
            #endregion

            return Newtonsoft.Json.JsonConvert.SerializeObject(messages);
        }
示例#7
0
 public static string AddRelated(int partID = 0, int relatedID = 0)
 {
     try {
         if (partID > 0 && relatedID > 0) {
             CurtDevDataContext db = new CurtDevDataContext();
             if (!db.RelatedParts.Any(x => x.partID.Equals(partID) && x.relatedID.Equals(relatedID))) {
                 RelatedPart related_part = new RelatedPart();
                 related_part = new RelatedPart {
                     partID = partID,
                     relatedID = relatedID
                 };
                 db.RelatedParts.InsertOnSubmit(related_part);
                 db.SubmitChanges();
             }
             // Serialize and return
             ConvertedPart part = GetPart(relatedID);
             UpdatePart(partID);
             return JsonConvert.SerializeObject(part);
         } else {
             return "{\"error\":\"Invalid data.\"}";
         }
     } catch (Exception e) {
         return "{\"error\":\"" + e.Message + "\"}";
     }
 }