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()); } }
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); }
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); }
protected override void InitAbility() { //print("initialized"); if (RelatedPart) { myLight = RelatedPart.GetComponent <Light>(); } if (myLight) { //print("mylight OK"); myLight.color = mColors[mCurrentColorIndex]; myLight.enabled = true; } }
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); } }
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); }
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 + "\"}"; } }