Add jet injectors (#40076)

* 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>
This commit is contained in:
Sir Warock 2025-12-25 20:44:06 +01:00 • committed by GitHub
parent 9241325506
commit 2d77e48b4c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
25 changed files with 203 additions and 4 deletions

View file

@ -174,3 +174,8 @@
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"

Binary file not shown.

View 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!

View file

@ -64,6 +64,7 @@
- id: UniformScrubsColorPurple
weight: 0.05
- id: ClothingMaskSterile
- id: JetInjector
- type: entity
parent: LockerMedical
@ -132,6 +133,7 @@
- id: HandheldGPSBasic
- id: MedkitFilled
prob: 0.3
- id: JetInjector
- type: entity
parent: LockerParamedic

View 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
FoodApple: 1

View file

@ -100,20 +100,55 @@
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

View file

@ -107,6 +107,68 @@
- 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

View 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

View file

@ -252,3 +252,27 @@
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!

View file

@ -131,6 +131,7 @@
cost: 5000
recipeUnlocks:
- BorgModuleAdvancedChemical
- AdvancedJetInjector
- type: technology
id: AdvancedCleaning

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

View file

@ -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
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

View file

@ -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
}
]
}