]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
The bleed update (#14814)
authorWhisper <121047731+QuietlyWhisper@users.noreply.github.com>
Mon, 3 Apr 2023 05:59:51 +0000 (01:59 -0400)
committerGitHub <noreply@github.com>
Mon, 3 Apr 2023 05:59:51 +0000 (23:59 -0600)
* Removed arbitrary modifier scaling. The bleed amount is now 1-1 in units.

* Added some comments to explain the blood and bleed code

* added some comments

* added some comments

* profusely bleeding message scales with max bleed rate

* Added some comments

* Added some comments (tm)

* Halved the speed bleed rate heals.

* Changed the wording of a comment to make the function of the values more clear

* Changed bleed rate values, made heat heal more bleed rate

* doubled crit chance, since damage types were reduced

* Made iron restore more blood, 2->4u per 1u

* Starting to add the blood pack

* add bloodlevel to healingcomponent

* Created code support in the healing system for restoring blood

* first test of blood pack prototype

* More pack testing, and defining the yml stack

* yml syntax fix

* adds bloodpack tag

* Successfully added the item, but the effect and deletion after using the item is not working yet.

* the blood regen worksgit add -A!

* blood pack is entirely functioning

* Removed bleed rate healing from brute pack

* Comment correction

* I tried

* Removed bleed stats from corrupted corgi, they inherit same stats from basemob

* Removed bleed stats from xeno, they inherit same stats from a base mob

* Removed bleed stats from diona, they inherit same stats from a base mob

* Removed bleed stats from slimes, they inherit same stats from a base mob

* All mobs now heal bloodloss damage at a rate of 1 instead of 0.25 when healthy

* The cautery now closes bleed wounds

* Nerf blood pack bleed rate heal

* Added 2 blood packs to medicine locker

* Added 2 blood packs to wall medicine locker

* Minor YML fix to chemistry locker, no changes in game

* Added tag to medical belt for blood pack, added 2 blood packs to medical belt

* Added 1 gauze to medical belt

* 5 blood packs addded to nanomed plus

* nanomed inventory change

* 2 blood packs added to medical supplies crate from cargo

* Moved 1 gauze from med kit to advanced med kit

* Moved 1 tricord pill from advanced med kit to basic med kit

* added 2 ointment to burn kit

* Moved ina syringe from burn treatment to oxygen kit

* Removed one gauze from brute kit

* Added one bloodpack to brute med kit

* Moved tranex acid syringe from advanced first aid to brute kit

* Poison medipen moved from advanced first aid kit to toxin kit

* Removed health analyzer from advanced first aid kit

* removed one brute pack from advanced aid kit

* added one ointment to advanced aid kit

* Added one blood pack to advanced aid kit

* Added 2 blood packs to combat med kit

* Starting with adding the license for the tg sprite

* Adds the blood pack sprite and meta.json code

* I forgor to actually code the sprite in

* Advanced med kit missing one blood pack

* Replaced tricord pill with emergency medipen in cobat kit

* Removed emergency pen from combat kit, there's no space for it

* Revert "I tried"

This reverts commit 94c2e28df3200993d3f09b72ecabc838ea5ae5c0.

* Trying to fix yml test fail

* Try again

* attempt number 3

* Restock crate price was too low

* fixing merge conflict without making a HUGE mess this time

* ???

* again

* again

* Can I add the newline now maybe???

* Revert "Can I add the newline now maybe???"

This reverts commit 22d26706a65a24633f7da1dea6315012e2d3ac6f.

* Adds the doafter fix code from Keron to the blood level healing

* minor typo fix

* Feedback from Emisse and sloth; Removed chance based feedback on cauterizing

* comment fix

28 files changed:
Content.Server/Body/Components/BloodstreamComponent.cs
Content.Server/Body/Systems/BloodstreamSystem.cs
Content.Server/Medical/Components/HealingComponent.cs
Content.Server/Medical/HealingSystem.cs
Resources/Prototypes/Catalog/Cargo/cargo_vending.yml
Resources/Prototypes/Catalog/Fills/Crates/medical.yml
Resources/Prototypes/Catalog/Fills/Items/belt.yml
Resources/Prototypes/Catalog/Fills/Items/firstaidkits.yml
Resources/Prototypes/Catalog/Fills/Lockers/medical.yml
Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml
Resources/Prototypes/Catalog/VendingMachines/Inventories/wallmed.yml
Resources/Prototypes/Damage/modifier_sets.yml
Resources/Prototypes/Entities/Clothing/Belt/belts.yml
Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml
Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml
Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
Resources/Prototypes/Entities/Mobs/Player/silicon.yml
Resources/Prototypes/Entities/Mobs/Species/base.yml
Resources/Prototypes/Entities/Mobs/Species/diona.yml
Resources/Prototypes/Entities/Mobs/Species/slime.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml
Resources/Prototypes/Reagents/elements.yml
Resources/Prototypes/Stacks/medical_stacks.yml
Resources/Prototypes/tags.yml
Resources/Textures/Objects/Specific/Medical/medical.rsi/bloodpack.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/medical.rsi/meta.json

index 9368b3bf9bd7ddfb84b4036fd27b8d400bff6d65..a7786cb8b935bcaa50171330716b4549ef9b3d1c 100644 (file)
@@ -35,7 +35,7 @@ namespace Content.Server.Body.Components
         ///     How much should bleeding should be reduced every update interval?
         /// </summary>
         [DataField("bleedReductionAmount")]
-        public float BleedReductionAmount = 1.0f;
+        public float BleedReductionAmount = 0.5f;
 
         /// <summary>
         ///     How high can <see cref="BleedAmount"/> go?
index 0f37aa9fce61b1ae15a36ff239d2e2b31c4ffa25..f152c6b08819584471249a1549bf387f571327ec 100644 (file)
@@ -101,7 +101,9 @@ public sealed class BloodstreamSystem : EntitySystem
             // as well as stop their bleeding to a certain extent.
             if (bloodstream.BleedAmount > 0)
             {
-                TryModifyBloodLevel(uid, (-bloodstream.BleedAmount) / 20, bloodstream);
+                // Blood is removed from the bloodstream at a 1-1 rate with the bleed amount
+                TryModifyBloodLevel(uid, (-bloodstream.BleedAmount), bloodstream);
+                // Bleed rate is reduced by the bleed reduction amount in the bloodstream component.
                 TryModifyBleedAmount(uid, -bloodstream.BleedReductionAmount, bloodstream);
             }
 
@@ -160,19 +162,26 @@ public sealed class BloodstreamSystem : EntitySystem
         if (bloodloss.Empty)
             return;
 
+        // Does the calculation of how much bleed rate should be added/removed, then applies it
         var oldBleedAmount = component.BleedAmount;
         var total = bloodloss.Total;
         var totalFloat = total.Float();
         TryModifyBleedAmount(uid, totalFloat, component);
 
-        var prob = Math.Clamp(totalFloat / 50, 0, 1);
-        var healPopupProb = Math.Clamp(Math.Abs(totalFloat) / 25, 0, 1);
+        /// <summary>
+        ///     Critical hit. Causes target to lose blood, using the bleed rate modifier of the weapon, currently divided by 5
+        ///     The crit chance is currently the bleed rate modifier divided by 25.
+        ///     Higher damage weapons have a higher chance to crit!
+        /// </summary>
+        var prob = Math.Clamp(totalFloat / 25, 0, 1);
         if (totalFloat > 0 && _robustRandom.Prob(prob))
         {
             TryModifyBloodLevel(uid, (-total) / 5, component);
             _audio.PlayPvs(component.InstantBloodSound, uid);
         }
-        else if (totalFloat < 0 && oldBleedAmount > 0 && _robustRandom.Prob(healPopupProb))
+
+        // Heat damage will cauterize, causing the bleed rate to be reduced.
+        else if (totalFloat < 0 && oldBleedAmount > 0)
         {
             // Magically, this damage has healed some bleeding, likely
             // because it's burn damage that cauterized their wounds.
@@ -183,20 +192,25 @@ public sealed class BloodstreamSystem : EntitySystem
                 uid, PopupType.Medium);
         }
     }
-
+    /// <summary>
+    ///     Shows text on health examine, based on bleed rate and blood level.
+    /// </summary>
     private void OnHealthBeingExamined(EntityUid uid, BloodstreamComponent component, HealthBeingExaminedEvent args)
     {
-        if (component.BleedAmount > 10)
+        // Shows profusely bleeding at half the max bleed rate.
+        if (component.BleedAmount > component.MaxBleedAmount / 2)
         {
             args.Message.PushNewline();
             args.Message.AddMarkup(Loc.GetString("bloodstream-component-profusely-bleeding", ("target", Identity.Entity(uid, EntityManager))));
         }
+        // Shows bleeding message when bleeding, but less than profusely.
         else if (component.BleedAmount > 0)
         {
             args.Message.PushNewline();
             args.Message.AddMarkup(Loc.GetString("bloodstream-component-bleeding", ("target", Identity.Entity(uid, EntityManager))));
         }
 
+        // If the mob's blood level is below the damage threshhold, the pale message is added.
         if (GetBloodLevelPercentage(uid, component) < component.BloodlossThreshold)
         {
             args.Message.PushNewline();
index adb5857b321c6dbe24805f20c522f04583ddfe81..439f2eb5d83ef675b6b2c50003cd2ccd7bb6c34c 100644 (file)
@@ -24,6 +24,13 @@ namespace Content.Server.Medical.Components
         [ViewVariables(VVAccess.ReadWrite)]
         public float BloodlossModifier = 0.0f;
 
+        /// <summary>
+        ///     Restore missing blood.
+        /// </summary>
+        [DataField("ModifyBloodLevel")]
+        [ViewVariables(VVAccess.ReadWrite)]
+        public float ModifyBloodLevel = 0.0f;
+
         /// <remarks>
         ///     The supported damage types are specified using a <see cref="DamageContainerPrototype"/>s. For a
         ///     HealingComponent this filters what damage container type this component should work on. If null,
index d4382848f07d64e454e34621a4485d707715661a..7f442e8ec81379ea7d198531722c5bec31f5b1ca 100644 (file)
@@ -54,6 +54,10 @@ public sealed class HealingSystem : EntitySystem
         if (healing.BloodlossModifier != 0)
             _bloodstreamSystem.TryModifyBleedAmount(uid, healing.BloodlossModifier);
 
+        // Restores missing blood
+        if (healing.ModifyBloodLevel != 0)
+            _bloodstreamSystem.TryModifyBloodLevel(uid, healing.ModifyBloodLevel);
+
         var healed = _damageable.TryChangeDamage(uid, healing.Damage, true, origin: args.Args.User);
 
         if (healed == null && healing.BloodlossModifier != 0)
index eaa8ae34cb22acc4fc506f0a1e497facd0cb7d27..fa89e873dfa6ddd96c7d1fb950a873fe06b44e31 100644 (file)
@@ -72,7 +72,7 @@
     sprite: Objects/Specific/Service/vending_machine_restock.rsi
     state: base
   product: CrateVendingMachineRestockMedicalFilled
-  cost: 1500
+  cost: 1750
   category: Medical
   group: market
 
index 345e036dbe6c0ef557b91ef8a370749c49115375..969002c2860a2cd053709598c717464a8c68ec1a 100644 (file)
@@ -17,6 +17,8 @@
         amount: 2
       - id: Gauze
         amount: 2
+      - id: Bloodpack
+        amount: 2
       - id: BoxLatexGloves
         amount: 1
       - id: BoxSterileMask
index 1310e4155c9e9a8b4df8d4d1ce090bac92e1b613..55bce72aacd9d04ee7faf7312b1771f4dbadbf1b 100644 (file)
   - type: StorageFill
     contents:
       - id: Brutepack
-        amount: 3
+        amount: 2
       - id: Ointment
-        amount: 3
+        amount: 2
+      - id: Bloodpack
+        amount: 2
+      - id: Gauze
+        amount: 1
       - id: EmergencyMedipen #You never know what people are going to latejoin into
 
 - type: entity
index 7b057a36dffe4ad93e3c706cefcf295c10bc98da..a96cb28b4a50dc9f37e9bf31f004b62fe1fec87e 100644 (file)
         amount: 1
       - id: Brutepack
         amount: 2
-      - id: Gauze
-        amount: 1
       - id: Ointment
         amount: 2
+      - id: PillTricordrazine
+        amount: 3
       # see https://github.com/tgstation/blob/master/code/game/objects/items/storage/firstaid.dm for example contents
 
 - type: entity
   - type: StorageFill
     contents:
       - id: Ointment
-        amount: 2
+        amount: 4
       - id: PillKelotane
         amount: 3
-      - id: SyringeInaprovaline
-        amount: 1
 
 - type: entity
   id: MedkitBruteFilled
       - id: PillIron
         amount: 2
       - id: Gauze
-        amount: 2
+        amount: 1
+      - id: Bloodpack
+        amount: 1
+      - id: SyringeTranexamicAcid
+        amount: 1
 
 - type: entity
   id: MedkitToxinFilled
@@ -57,6 +59,8 @@
         amount: 1
       - id: PillDylovene
         amount: 3
+      - id: AntiPoisonMedipen
+        amount: 1
 
 - type: entity
   id: MedkitOxygenFilled
@@ -70,7 +74,7 @@
       - id: PillDexalin
         amount: 3
       - id: SyringeInaprovaline
-        amount: 1
+        amount: 2
 
 - type: entity
   id: MedkitRadiationFilled
   components:
   - type: StorageFill
     contents:
-      - id: HandheldHealthAnalyzer
-        amount: 1
       - id: Brutepack
-        amount: 3 # TO DO: Advanced fills
-      - id: SyringeTranexamicAcid
-        amount: 1
-      - id: PillTricordrazine
+        amount: 2 # TO DO: Advanced fills
+      - id: Gauze
         amount: 1
-      - id: AntiPoisonMedipen
+      - id: Ointment
         amount: 1
+      - id: Bloodpack
+        amount: 2
 
 - type: entity
   id: MedkitCombatFilled
         amount: 1 # TO DO: More combat meds
       - id: SyringeTranexamicAcid
         amount: 1
-      - id: PillTricordrazine
-        amount: 1
       - id: AntiPoisonMedipen
         amount: 1
+      - id: Bloodpack
+        amount: 2
 
 - type: entity
   id: StimkitFilled
index 249561ffda1c8fababecb8af226eb98e5dc1a804..db079b78dd83e9f0e50c84b3875a356ce5c13f3a 100644 (file)
@@ -15,6 +15,8 @@
         amount: 2
       - id: Ointment
         amount: 2
+      - id: Bloodpack
+        amount: 2
 
 - type: entity
   id: LockerWallMedicalFilled
@@ -34,6 +36,8 @@
         amount: 2
       - id: Ointment
         amount: 2
+      - id: Bloodpack
+        amount: 2
 
 
 - type: entity
   - type: StorageFill
     contents:
       - id: BoxSyringe
+        amount: 1
       - id: BoxBeaker
+        amount: 1
       - id: BoxPillCanister
+        amount: 1
       - id: BoxBottle
-      - id: BoxBottle
+        amount: 2
index 00c1044e91773eee96dd7070f27cd4f8dec23a03..43e7cf7c941bfb362bf2649749a89e7af3fd5099 100644 (file)
@@ -4,5 +4,6 @@
     HandheldHealthAnalyzer: 3
     Brutepack: 5
     Ointment: 5
+    Bloodpack: 5
     EpinephrineChemistryBottle: 3
     Syringe: 5
index 5023e703c9d9fab3a4d4c0730eede6b525dff4fd..405e2eff5645adc344b4063bec02c0f919ca0bd2 100644 (file)
@@ -1,7 +1,8 @@
 - type: vendingMachineInventory
   id: NanoMedInventory
   startingInventory:
-    Brutepack: 5
-    Ointment: 5
+    Brutepack: 3
+    Ointment: 3
+    Bloodpack: 3
     EpinephrineChemistryBottle: 3
-    Syringe: 5
+    Syringe: 3
index d6e01b21b29e0fa4f9d086a7221032042ebe67a6..c8e220c3edb13668a48a458f910ad1ccf30ef155 100644 (file)
     Blunt: 5
 
 # Represents which damage types should be modified
-# in relation to how they cause bloodloss damage.
+# in relation to how they cause bleed rate.
 - type: damageModifierSet
   id: BloodlossHuman
   coefficients:
-    Blunt: 0.8
-    Slash: 2.5
-    Piercing: 2.0
+    Blunt: 0.08
+    Slash: 0.25
+    Piercing: 0.2
     Shock: 0.0
     Cold: 0.0
-    Heat: -0.25 # heat damage cauterizes wounds!
+    Heat: -1 # heat damage cauterizes wounds, but will still hurt obviously.
     Poison: 0.0
     Radiation: 0.0
     Asphyxiation: 0.0
index db43843d4f10aed30f92d902052dc8260b4b7c44..ce19e85a9332324ea1143dbdedc57c789ff4f022 100644 (file)
         - Bottle
         - Spray
         - Brutepack
+        - Bloodpack
         - Gauze
         - Ointment
         - CigPack
index 6c0f63e6a3e20facd020b45a401f6aa5a20a7759..abc35d8300315f9e2a967197b704fc6b27f9b4fd 100644 (file)
       gender: epicene
   - type: Bloodstream
     bloodReagent: DemonsBlood
-    bloodlossDamage:
-      types:
-        Bloodloss:
-          1
-    bloodlossHealDamage:
-      types:
-        Bloodloss:
-          -0.25
   - type: Damageable
     damageContainer: Biological
     damageModifierSet: Infernal
index 9267be8d2367e5d017130538df707aaf79ab0fad..e708eb9d9bce1ca999a4027858b1b7bab5522c1b 100644 (file)
@@ -19,7 +19,7 @@
     bloodlossHealDamage:
       types:
         Bloodloss:
-          -0.25
+          -1
   - type: InteractionOutline
   - type: Fixtures
     fixtures:
index ac38c18fe4e50b899248b8c6c0731016ef55c1a2..e5e7efcf2c6c9b84b1374dcd2d30db48e1e1ac56 100644 (file)
@@ -67,7 +67,7 @@
     bloodlossHealDamage:
       types:
         Bloodloss:
-          -0.25
+          -1
   - type: Damageable
     damageContainer: Biological
   - type: RadiationReceiver
index c4638f9ad016d2302333eb1c6859a2429922b49a..783d286e17213631ccfb0ed4d4775ad3a7048452 100644 (file)
     excess: 200
   - type: Bloodstream
     bloodReagent: FluorosulfuricAcid
-    bloodlossDamage:
-      types:
-        Bloodloss:
-          1
-    bloodlossHealDamage:
-      types:
-        Bloodloss:
-          -0.25
   - type: MeleeWeapon
     hidden: true
     angle: 0
index 928328139824d7938f8ec338b5b941697cdff0d9..8c7181b00c2011a8d0835056f7433bc0018dd746 100644 (file)
@@ -26,7 +26,7 @@
     bloodlossHealDamage:
       types:
         Bloodloss:
-          -0.25
+          -1
   - type: InteractionOutline
   - type: Fixtures
     fixtures:
index 3c9b8eb85f83d6d22cc8ba59473628c0aa6dac61..d49205a2a3735a2ee802469a912d3c76eb12ce1b 100644 (file)
@@ -65,7 +65,7 @@
     bloodlossHealDamage:
       types:
         Bloodloss:
-          -0.25
+          -1
   - type: Stamina
   - type: StatusEffects
     allowed:
index 7b71d861b1dbc02ff5b02d308c519d3458ba541e..fb5840889aeb4cf77124296f4d49461c0daf104d 100644 (file)
         amount: 5
   - type: Bloodstream
     bloodReagent: Water
-    bloodlossDamage:
-      types:
-        Bloodloss:
-          1
-    bloodlossHealDamage:
-      types:
-        Bloodloss:
-          -0.25
   - type: Fixtures
     fixtures:
       - shape:
index 4ec22786555f18bf00d13f14360412b1910fb7c4..55ef658df4848bdaee90e53c85a395d114d99020 100644 (file)
     damageModifierSet: Slime
   - type: Bloodstream
     bloodReagent: Slime # TODO Color slime blood based on their slime color or smth
-    bloodlossDamage:
-      types:
-        Bloodloss:
-          1
-    bloodlossHealDamage:
-      types:
-        Bloodloss:
-          -0.25
   - type: Barotrauma
     damage:
       types:
index 349095fa0d621820b907571ea064aa107103513e..47a3cab3184eded6718a75cfefbae0b515e1a761 100644 (file)
@@ -59,7 +59,6 @@
     damage:
       groups:
         Brute: -15 # 5 for each type in the group
-    bloodlossModifier: -3 # a little bit of bloodloss healing.
     healingBeginSound:
       path: "/Audio/Items/Medical/brutepack_begin.ogg"
     healingEndSound:
   - type: StackPrice
     price: 10
 
+- type: entity
+  name: blood pack
+  description: Contains a groundbreaking universal blood replacement created by Nanotrasen's advanced medical science.
+  parent: BaseHealingItem
+  id: Bloodpack
+  components:
+  - type: Tag
+    tags:
+    - Bloodpack
+  - type: Sprite
+    state: bloodpack
+  - type: Healing
+    damageContainer: Biological
+    damage:
+      types:
+        bloodloss: -0.5 #for whatever godforsaken reason I cannot touch blood level without healing one of these, so fuck it, bleed rate healing
+    ModifyBloodLevel: 10
+    healingBeginSound:
+      path: "/Audio/Items/Medical/brutepack_begin.ogg"
+    healingEndSound:
+      path: "/Audio/Items/Medical/brutepack_end.ogg"
+  - type: Stack
+    stackType: Bloodpack
+    count: 10
+  - type: StackPrice
+    price: 10
+
 - type: entity
   name: roll of gauze
   description: Some sterile gauze to wrap around bloody stumps.
index 36628a83e484eb0f604e18b4e8ad5e125caaa0fb..e456541ff4cf47120edd40240c7ce0964da2c371 100644 (file)
   - type: Item
     sprite: Objects/Specific/Medical/Surgery/cautery.rsi
   - type: ItemCooldown
+  - type: MeleeWeapon
+    damage:
+       types:
+        Heat: 5
+    soundHit:
+      path: /Audio/Effects/lightburn.ogg
 
 # Drill
 
index f510bfce742202ef5deff8256fdaf55e708c65e9..3c5529b4002d3201008bb3961f8c38d53f394143 100644 (file)
     Medicine:
       effects:
       - !type:ModifyBloodLevel
-        amount: 2
+        amount: 4
 
 - type: reagent
   id: Lithium
index 93fee77109a8d1286553a44e27000d39998f4a11..c01937d733f843b7b7c5ebdb6d18b8588cf44339 100644 (file)
@@ -1,4 +1,4 @@
-- type: stack
+- type: stack
   id: Ointment
   name: ointment
   icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: ointment }
   icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: gauze }
   spawn: Brutepack
   maxCount: 10
+
+- type: stack
+  id: Bloodpack
+  name: bloodpack
+  icon: { sprite: "/Textures/Objects/Specific/Medical/medical.rsi", state: bloodpack }
+  spawn: Bloodpack
+  maxCount: 10
index a96535136dd405a09c15407231fd53a0bd2082de..bfb69b2448e4ebcefec9832cbc5b49f376165248 100644 (file)
@@ -22,6 +22,9 @@
 - type: Tag
   id: BikeHorn
 
+- type: Tag
+  id: Bloodpack
+
 - type: Tag
   id: BodyBag
 
diff --git a/Resources/Textures/Objects/Specific/Medical/medical.rsi/bloodpack.png b/Resources/Textures/Objects/Specific/Medical/medical.rsi/bloodpack.png
new file mode 100644 (file)
index 0000000..e960ca6
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/medical.rsi/bloodpack.png differ
index 93b7ea8ad7832260c1777c533e90db2c2c2af03e..7519973cb85d721c97b5919d1959b980ed7ef14e 100644 (file)
@@ -1,7 +1,7 @@
 {
        "version": 1,
        "license": "CC-BY-SA-3.0",
-  "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/commit/740ff31a81313086cf16761f3677cf1e2ab46c93",
+  "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/commit/740ff31a81313086cf16761f3677cf1e2ab46c93 and Taken from tgstation at https://github.com/tgstation/tgstation/blob/623290915c2292b56da11048deb62d758e1e3fb4/icons/obj/bloodpack.dmi",
        "size": {
                "x": 32,
                "y": 32
@@ -37,6 +37,9 @@
                {
                        "name": "ointment-inhand-right",
                        "directions": 4
+               },
+               {
+                       "name": "bloodpack"
                }
        ]
 }