diff --git a/Resources/Audio/Items/attributions.yml b/Resources/Audio/Items/attributions.yml index 5a5927c878..4a6b2fe4ea 100644 --- a/Resources/Audio/Items/attributions.yml +++ b/Resources/Audio/Items/attributions.yml @@ -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" \ No newline at end of file diff --git a/Resources/Audio/Items/jet_injector.ogg b/Resources/Audio/Items/jet_injector.ogg new file mode 100644 index 0000000000..8ccb40d8ce Binary files /dev/null and b/Resources/Audio/Items/jet_injector.ogg differ diff --git a/Resources/Locale/en-US/chemistry/components/injector-component.ftl b/Resources/Locale/en-US/chemistry/components/injector-component.ftl index 8f1ffdf0ab..58fb3df315 100644 --- a/Resources/Locale/en-US/chemistry/components/injector-component.ftl +++ b/Resources/Locale/en-US/chemistry/components/injector-component.ftl @@ -44,6 +44,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! \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml index 4a3dde6059..d4560609ad 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml @@ -68,6 +68,7 @@ - id: UniformScrubsColorPurple weight: 0.05 - id: ClothingMaskSterile + - id: JetInjector - type: entity parent: LockerMedical @@ -140,6 +141,7 @@ - id: HandheldGPSBasic - id: MedkitFilled prob: 0.3 + - id: JetInjector - type: entity parent: LockerParamedic diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml index dff2c16a44..0b6659103d 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml @@ -37,19 +37,20 @@ Brutepack: 5 Ointment: 5 Bloodpack: 5 - Tourniquet: 2 - ChemistryBottleEpinephrine: 3 Syringe: 8 # DeltaV - was 5 + JetInjector: 2 BoxBottle: 4 # DeltaV - was 3 Portafib: 1 # DeltaV - Add Portafibs, see Prototypes/_DV/Entities/Objects/Devices/Medical/portafib.yml ClothingEyesHudMedical: 3 # DeltaV - was 2 + ClothingEyesEyepatchHudMedical: 2 + ChemistryBottleEpinephrine: 3 ChemistryBottleBicaridine: 1 PillCanisterTricordrazine: 3 PillCanisterIron: 1 PillCanisterCopper: 1 PillCanisterPotassiumIodide: 1 SyringeIpecac: 1 - ClothingEyesEyepatchHudMedical: 2 + Tourniquet: 2 contrabandInventory: PillCanisterRandom: 3 PillSpaceDrugs: 3 diff --git a/Resources/Prototypes/Chemistry/injector_modes.yml b/Resources/Prototypes/Chemistry/injector_modes.yml index 2a791eb0ac..53a5ee4f73 100644 --- a/Resources/Prototypes/Chemistry/injector_modes.yml +++ b/Resources/Prototypes/Chemistry/injector_modes.yml @@ -43,6 +43,7 @@ abstract: true id: BaseBluespaceSyringeMode mobTime: 2.5 + delayPerVolume: 0.05 transferAmounts: - 5 - 10 @@ -95,24 +96,59 @@ ## Hyposprays - type: injectorMode abstract: true - id: HyposprayBaseMode + id: BaseHyposprayMode injectSound: /Audio/Items/hypospray.ogg injectPopupTarget: injector-component-feel-prick-message injectOnUse: true - mobTime: 0 delayPerVolume: 0 transferAmounts: - 5 - type: injectorMode - parent: [ HyposprayBaseMode, BaseInjectMode ] + abstract: true + parent: BaseHyposprayMode + id: BaseInstantHyposprayMode + mobTime: 0 + +- type: injectorMode + parent: [ BaseInstantHyposprayMode, BaseInjectMode ] id: HyposprayInjectMode - type: injectorMode - parent: [ HyposprayBaseMode, 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 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml index 6b07057774..e1bda83b7d 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml @@ -79,7 +79,7 @@ - type: entity parent: BaseHypospray id: BorgHypo - name: borg hypo + name: borghypo description: A sterile injector for rapid administration of drugs to patients. A cheaper and more specialised version for medical borgs. components: - type: Sprite @@ -98,6 +98,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 name: experimental hypospray suffix: Admeme diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/medical.yml b/Resources/Prototypes/Recipes/Lathes/Packs/medical.yml index f4df00a866..56611ea884 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/medical.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/medical.yml @@ -54,6 +54,7 @@ - WhiteCane - OffsetCane - OffsetCaneWood + - JetInjector - type: latheRecipePack id: RollerBedsStatic @@ -109,6 +110,7 @@ - SyringeBluespace - LauncherSyringe - MiniSyringe + - AdvancedJetInjector - type: latheRecipePack parent: diff --git a/Resources/Prototypes/Recipes/Lathes/medical.yml b/Resources/Prototypes/Recipes/Lathes/medical.yml index bd3ee3773d..3480975e8c 100644 --- a/Resources/Prototypes/Recipes/Lathes/medical.yml +++ b/Resources/Prototypes/Recipes/Lathes/medical.yml @@ -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! \ No newline at end of file diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index 721bc43525..5e347d8e74 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -145,6 +145,7 @@ 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 index 0000000000..5eb91bfbf4 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 index 0000000000..9630d22a3d 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 index 0000000000..ea11f99507 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 index 0000000000..9da2b06d2f 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 index 0000000000..0525934675 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 index 0000000000..c2ae1388ab 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 index 0000000000..52531e9920 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 index 0000000000..ea73d23c5b --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/advanced_jetinjector.rsi/meta.json @@ -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 + } + ] +} \ No newline at end of file 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 index 0000000000..25e34bb739 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 index 0000000000..c4f7f7fdf8 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 index 0000000000..4c0e667fa3 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 index 0000000000..9da2b06d2f 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 index 0000000000..29b4017029 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 index 0000000000..52531e9920 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 index 0000000000..3347c3b247 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/jetinjector.rsi/meta.json @@ -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 + } + ] +} \ No newline at end of file