]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add jet injectors (#40076)
authorSir Warock <67167466+SirWarock@users.noreply.github.com>
Thu, 25 Dec 2025 19:44:06 +0000 (20:44 +0100)
committerGitHub <noreply@github.com>
Thu, 25 Dec 2025 19:44:06 +0000 (19:44 +0000)
* Added Jet Injectors

* Small fixes

* YML Linter fix

* Requested Adjustments

* Better Sprites for the Jet Injector

* Actually forgor to give credit

* Fix merge conflicts and refactor

* Undo Oversight

* Introduction of Advanced Jet Injectors

* minor oversight

* Adhere to requests

* Remove Loadout, add Lockers

* harder better faster stronger

* vend shortage

* Sound effect

* will this work or do I just gotta choose one at random???

* alright fine I'll do it this way

* quiet the hissing, raise the pitch

* Merge new sprites

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
25 files changed:
Resources/Audio/Items/attributions.yml
Resources/Audio/Items/jet_injector.ogg [new file with mode: 0644]
Resources/Locale/en-US/chemistry/components/injector-component.ftl
Resources/Prototypes/Catalog/Fills/Lockers/medical.yml
Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml
Resources/Prototypes/Chemistry/injector_modes.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml
Resources/Prototypes/Recipes/Lathes/Packs/medical.yml
Resources/Prototypes/Recipes/Lathes/medical.yml
Resources/Prototypes/Research/civilianservices.yml
Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/inhand-left.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/inhand-right.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_base.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled1.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled2.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled3.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled4.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/inhand-left.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/inhand-right.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_base.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled1.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled2.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled3.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/meta.json [new file with mode: 0644]

index 5a5927c8784c4c185f30a7aa0047effa71cad770..bed043b3ca65ee2ab78d1a48fa128f4fff41a96c 100644 (file)
   license: "CC0-1.0"
   copyright: "Created by romulofs, converted to OGG, and edited by TiniestShark (Github)"
   source: "https://freesound.org/s/127541/"
+
+- files: ["jet_injector.ogg"]
+  license: "CC-BY-3.0"
+  copyright: "Orginal audio by EminYILDIRIM -- https://freesound.org/s/548009/ -- License: Attribution 4.0, 2imitk -- https://freesound.org/s/279044/ -- License: Attribution 3.0 and brunoboselli -- https://freesound.org/s/457294/ -- License: Creative Commons 0, modified by Princess-Cheeseballs (GitHub)"
+  source: "https://github.com/space-wizards/space-station-14/pull/40076"
diff --git a/Resources/Audio/Items/jet_injector.ogg b/Resources/Audio/Items/jet_injector.ogg
new file mode 100644 (file)
index 0000000..8ccb40d
Binary files /dev/null and b/Resources/Audio/Items/jet_injector.ogg differ
index 2958dda5eda1351f3857211a1149fe41185462d4..762816a9d2b6afe6235f2d9547a70898d761e825 100644 (file)
@@ -45,6 +45,8 @@ injector-component-needle-injecting-user = You start injecting the needle.
 injector-component-needle-injecting-target = {CAPITALIZE(THE($user))} is trying to inject a needle into you!
 injector-component-needle-drawing-user = You start drawing the needle.
 injector-component-needle-drawing-target = {CAPITALIZE(THE($user))} is trying to use a needle to draw from you!
+injector-component-spray-injecting-user = You start preparing the spray nozzle.
+injector-component-spray-injecting-target = {CAPITALIZE(THE($user))} is trying to place a spray nozzle onto you!
 
 ## Target Popup Success messages
 injector-component-feel-prick-message = You feel a tiny prick!
index 7d9fe7fb599c0f62c73d9c8f171c54cd5c0ae34c..67eeb837aa1121a86c697e3bfe025e3b1eb043fd 100644 (file)
@@ -64,6 +64,7 @@
       - id: UniformScrubsColorPurple
         weight: 0.05
     - id: ClothingMaskSterile
+    - id: JetInjector
 
 - type: entity
   parent: LockerMedical
     - id: HandheldGPSBasic
     - id: MedkitFilled
       prob: 0.3
+    - id: JetInjector
 
 - type: entity
   parent: LockerParamedic
index fe8668ec301c982b3d9c532b28db6220f42afa32..639bc55f87cc2f10be32ef58b6045d7fbffda39a 100644 (file)
@@ -41,6 +41,7 @@
     ChemistryBottleEpinephrine: 3
     ChemistryBottleBicaridine: 1
     Syringe: 5
+    JetInjector: 2
     BoxBottle: 3
     PillCanisterTricordrazine: 3
     PillCanisterIron: 1
@@ -74,4 +75,4 @@
   contrabandInventory:
     PillCanisterRandom: 1
     PillSpaceDrugs: 3
-    FoodApple: 1
\ No newline at end of file
+    FoodApple: 1
index fd96819df312421296998273077806a020e39156..53a5ee4f7375ac47583c7faf40d5f3a1a4b527b8 100644 (file)
   injectSound: /Audio/Items/hypospray.ogg
   injectPopupTarget: injector-component-feel-prick-message
   injectOnUse: true
-  mobTime: 0
   delayPerVolume: 0
   transferAmounts:
   - 5
 
 - type: injectorMode
-  parent: [ BaseHyposprayMode, BaseInjectMode ]
+  abstract: true
+  parent: BaseHyposprayMode
+  id: BaseInstantHyposprayMode
+  mobTime: 0
+
+- type: injectorMode
+  parent: [ BaseInstantHyposprayMode, BaseInjectMode ]
   id: HyposprayInjectMode
 
 - type: injectorMode
-  parent: [ BaseHyposprayMode, BaseDynamicMode ]
+  parent: [ BaseInstantHyposprayMode, BaseDynamicMode ]
   id: HyposprayDynamicMode
 
 - type: injectorMode
   parent: HyposprayDynamicMode
   id: HypopenDynamicMode
   containerDrawTime: 0.75
+
+- type: injectorMode
+  abstract: true
+  parent: BaseHyposprayMode
+  id: BaseJetInjectorMode
+  injectSound: /Audio/Items/jet_injector.ogg
+  popupUserAttempt: injector-component-spray-injecting-user
+  popupTargetAttempt: injector-component-spray-injecting-target
+
+- type: injectorMode
+  parent: [ BaseJetInjectorMode, BaseInjectMode ]
+  id: JetInjectorInjectMode
+
+- type: injectorMode
+  parent: [ BaseJetInjectorMode, BaseDynamicMode ]
+  id: JetInjectorDynamicMode
+
+- type: injectorMode
+  abstract: true
+  parent: BaseJetInjectorMode
+  id: BaseAdvancedJetInjectorMode
+  mobTime: 2.5
+
+- type: injectorMode
+  parent: [ BaseAdvancedJetInjectorMode, BaseInjectMode ]
+  id: AdvancedJetInjectorInjectMode
+
+- type: injectorMode
+  parent: [ BaseAdvancedJetInjectorMode, BaseDynamicMode ]
+  id: AdvancedJetInjectorDynamicMode
index 3d0180f901271e12cbc63bf557ec7c94d8fa7177..eb602ec9854254c65699d624eb928ca5688f4a9e 100644 (file)
   - type: UseDelay
     delay: 0.5
 
+- type: entity
+  parent: BaseHypospray
+  id: JetInjector
+  name: jet injector
+  description: A sterile injector for convenient administration of drugs to patients.
+  components:
+  - type: Sprite
+    sprite: Objects/Specific/Medical/jetinjector.rsi
+    layers:
+    - state: jetinjector_base
+      map: [ "enum.SolutionContainerLayers.Base" ]
+    - state: jetinjector_filled1
+      map: [ "enum.SolutionContainerLayers.Fill" ]
+      visible: false
+  - type: Item
+    sprite: Objects/Specific/Medical/jetinjector.rsi
+  - type: UseDelay
+    delay: 2.0
+  - type: SolutionContainerManager
+    solutions:
+      hypospray:
+        maxVol: 15
+  - type: SolutionContainerVisuals
+    maxFillLevels: 3
+    fillBaseName: jetinjector_filled
+    solutionName: hypospray
+  - type: Injector
+    solutionName: hypospray
+    currentTransferAmount: null # Inject everything on injection.
+    activeModeProtoId: JetInjectorDynamicMode
+    allowedModes:
+    - JetInjectorDynamicMode
+    - JetInjectorInjectMode
+
+- type: entity
+  parent: JetInjector
+  id: AdvancedJetInjector
+  name: advanced jet injector
+  description: A pristine, fashionable, high quality injector. Allows for a faster injection, with a slightly larger capacity.
+  components:
+  - type: Sprite
+    sprite: Objects/Specific/Medical/advanced_jetinjector.rsi
+    layers:
+    - state: jetinjector_base
+      map: [ "enum.SolutionContainerLayers.Base" ]
+    - state: jetinjector_filled1
+      map: [ "enum.SolutionContainerLayers.Fill" ]
+      visible: false
+  - type: Item
+    sprite: Objects/Specific/Medical/advanced_jetinjector.rsi
+  - type: SolutionContainerManager
+    solutions:
+      hypospray:
+        maxVol: 20
+  - type: SolutionContainerVisuals
+    maxFillLevels: 4
+  - type: Injector
+    activeModeProtoId: AdvancedJetInjectorDynamicMode
+    allowedModes:
+    - AdvancedJetInjectorDynamicMode
+    - AdvancedJetInjectorInjectMode
+
 - type: entity
   parent: SyndiHypo
   id: AdminHypo
index 0bb3c49fe9a34b69f75daaa646c576e17105858d..0b97e46e7a52aa2c7755b39f84a058b49eaed2cc 100644 (file)
@@ -47,6 +47,7 @@
   - WhiteCane
   - OffsetCane
   - OffsetCaneWood
+  - JetInjector
 
 - type: latheRecipePack
   id: RollerBedsStatic
@@ -98,6 +99,7 @@
   - SyringeBluespace
   - LauncherSyringe
   - MiniSyringe
+  - AdvancedJetInjector
 
 - type: latheRecipePack
   id: MedicalBoards
index bd3ee3773d7f630cfa33104f831af182fd6551f6..b8b39ae175c867425ea6fe9b9f3d004ec8647e68 100644 (file)
     Glass: 100
     Plastic: 100
 
+- type: latheRecipe
+  id: JetInjector
+  result: JetInjector
+  categories:
+  - Tools
+  completetime: 5
+  materials:
+    Steel: 500
+    Glass: 500
+    Plastic: 250
+    Silver: 250
+
+- type: latheRecipe
+  id: AdvancedJetInjector
+  result: AdvancedJetInjector
+  categories:
+  - Tools
+  completetime: 5
+  materials:
+    Steel: 500
+    Glass: 500
+    Plastic: 250
+    Silver: 400
+    Gold: 50 # A bit of gold for the gold ornaments on it!
index 50bfcc0f5743ff417289d8732c6068ed67bdf484..01407a8ae315f56abca59a21af0930f1c66a21f9 100644 (file)
   cost: 5000
   recipeUnlocks:
   - BorgModuleAdvancedChemical
+  - AdvancedJetInjector
 
 - type: technology
   id: AdvancedCleaning
diff --git a/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/inhand-left.png
new file mode 100644 (file)
index 0000000..5eb91bf
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/inhand-right.png
new file mode 100644 (file)
index 0000000..9630d22
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_base.png b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_base.png
new file mode 100644 (file)
index 0000000..43ca3c4
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_base.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled1.png b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled1.png
new file mode 100644 (file)
index 0000000..9da2b06
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled1.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled2.png b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled2.png
new file mode 100644 (file)
index 0000000..0525934
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled2.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled3.png b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled3.png
new file mode 100644 (file)
index 0000000..c2ae138
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled3.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled4.png b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled4.png
new file mode 100644 (file)
index 0000000..52531e9
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/jetinjector_filled4.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/meta.json
new file mode 100644 (file)
index 0000000..faf8368
--- /dev/null
@@ -0,0 +1,34 @@
+{
+       "version": 1,
+       "license": "CC-BY-SA-3.0",
+       "copyright": "Sprites made by @Sir_Warock on Discord, remastered by @Phantasai on Github",
+       "size": {
+               "x": 32,
+               "y": 32
+       },
+       "states": [
+               {
+                       "name": "jetinjector_base"
+               },
+        {
+                       "name": "jetinjector_filled1"
+               },
+               {
+                       "name": "jetinjector_filled2"
+               },
+               {
+                       "name": "jetinjector_filled3"
+               },
+        {
+            "name": "jetinjector_filled4"
+        },
+        {
+            "name": "inhand-left",
+            "directions": 4
+        },
+        {
+            "name": "inhand-right",
+            "directions": 4
+        }
+    ]
+}
diff --git a/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/inhand-left.png
new file mode 100644 (file)
index 0000000..25e34bb
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/inhand-right.png
new file mode 100644 (file)
index 0000000..c4f7f7f
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_base.png b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_base.png
new file mode 100644 (file)
index 0000000..c8fdcc3
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_base.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled1.png b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled1.png
new file mode 100644 (file)
index 0000000..9da2b06
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled1.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled2.png b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled2.png
new file mode 100644 (file)
index 0000000..29b4017
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled2.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled3.png b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled3.png
new file mode 100644 (file)
index 0000000..52531e9
Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/jetinjector_filled3.png differ
diff --git a/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/meta.json
new file mode 100644 (file)
index 0000000..a881305
--- /dev/null
@@ -0,0 +1,31 @@
+{
+       "version": 1,
+       "license": "CC-BY-SA-3.0",
+       "copyright": "Sprites made by @Sir_Warock on Discord, remastered by @Phantasai on Github",
+       "size": {
+               "x": 32,
+               "y": 32
+       },
+       "states": [
+               {
+                       "name": "jetinjector_base"
+               },
+        {
+                       "name": "jetinjector_filled1"
+               },
+               {
+                       "name": "jetinjector_filled2"
+               },
+               {
+                       "name": "jetinjector_filled3"
+               },
+        {
+            "name": "inhand-left",
+            "directions": 4
+        },
+        {
+            "name": "inhand-right",
+            "directions": 4
+        }
+    ]
+}