Port Cartridge Autoinjector#2258
Conversation
* Knockdown alert & flashbang buff. * Stun stuff. * Reagents stuff. * Tweaks. * Add energy bola. * Tweak disabler bolts. * Smoke ingestion blocker. * More tweaks. * Fix. * Add descriptions. * Buff combat and merc boots. * Redo autoinjector. * Fix air tank. * Increase use delay. * Boot tweaks.
* cartridge tweaks * new cartridges * final commit (probably) * fix meta * raise cartridge prices * 40 second delay
* Added fun * Reverted. * Hyposprays. * Added derm to pens * Added ibuprofen to swdw * Guh * Added atropine cartridge.
* buff autoinjectors * rework * oops * makes sense * make atropine less deadly * this
WalkthroughThis update introduces a suite of cartridge-based autoinjectors and their associated cartridges, expanding medical gameplay functionality. It removes the older SolutionCartridge system and replaces it with a new, more integrated SolutionCartridgeSystem for hyposprays. Several new YAML prototypes define autoinjector devices, cartridges, crafting recipes, and tags. Inventory and storage configurations are updated to include these new items across belts, vending machines, and lathes. Additionally, a new chemical reaction and reagent adjustments are introduced, and some effect parameters for Atropine are tweaked. The codebase and data files are reorganized to align with these new mechanics. Changes
Suggested labels
Suggested reviewers
Poem
Tip ⚡️ Faster reviews with caching
Enjoy the performance boost—your workflow just got faster. 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms (4)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 6
🧹 Nitpick comments (5)
Content.Shared/_Goobstation/Chemistry/Hypospray/HyposprayEvents.cs (1)
1-19: Event declaration passes Biesel Fleet inspection standards!This new event record has proper documentation and a clear purpose. It uses the [ByRefEvent] attribute correctly to minimize unnecessary copying during event handling. The event fields are self-explanatory and support the hypospray injection workflow.
One small recommendation: consider making the record constructor more explicit by including the parameters:
-public record struct AfterHyposprayInjectsEvent() +public record struct AfterHyposprayInjectsEvent(EntityUid User, EntityUid Target) { /// <summary> /// Entity that used the hypospray. /// </summary> - public EntityUid User; + public EntityUid User = User; /// <summary> /// Entity that was injected. /// </summary> - public EntityUid Target; + public EntityUid Target = Target; }Resources/Prototypes/Catalog/VendingMachines/Inventories/wallmed.yml (1)
9-9: Medical supply update correctly deployed!The addition of the Tourniquet item to the NanoMedInventory is a logical expansion of available medical gear. The comment clearly indicates this is related to the Goobstation ParamedHypo feature.
To ensure consistent documentation:
- Tourniquet: 3 #Goobstation - ParamedHypo + Tourniquet: 3 # Goobstation - Cartridge AutoinjectorThis change would align the comment with the PR's main purpose of porting the cartridge autoinjector feature, maintaining clear traceability of feature additions.
Content.Server/Chemistry/EntitySystems/HypospraySystem.cs (1)
24-24: New Goobstation hypospray namespace imported
ImportedContent.Shared._Goobstation.Chemistry.Hyposprayto enable new autoinjector events. Ensure this using directive is sorted among otherContent.Shared.*imports to maintain consistency in your import groupings.Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Medical/hypospray.yml (2)
3-40: BaseCartridgeAutoinjector prototype is well‑structured.
Components for solution container, hypospray behavior, injection blocking, and use delay are all present.
Consider consolidatingContainerContainer+ItemSlotsinto a single slot definition if your engine supports it, to reduce duplication.
69-91: BaseAutoinjectorCartridge entity is defined as expected.
size: Tinyand tagAutoinjectorCartridgeensure it fits the slot. Consider adding an explicitmaxUsesordurabilitycomponent if cartridges should deplete over multiple injections.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (16)
Resources/Textures/_Goobstation/Objects/Specific/Medical/autoinjector.rsi/cartridge1.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/autoinjector.rsi/inhand-left.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/autoinjector.rsi/inhand-right.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/autoinjector.rsi/medical-base.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/autoinjector.rsi/meta.jsonis excluded by!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/autoinjector.rsi/security-base.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/base.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/cartridge-bicaridine.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/cartridge-dermaline.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/cartridge-ephedrine.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/cartridge-epinephrine.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/cartridge-ichor.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/cartridge-saline.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/cartridge.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/filling.pngis excluded by!**/*.png,!Resources/Textures/**and included by noneResources/Textures/_Goobstation/Objects/Specific/Medical/cartridge.rsi/meta.jsonis excluded by!Resources/Textures/**and included by none
📒 Files selected for processing (19)
Content.Server/Chemistry/EntitySystems/HypospraySystem.cs(1 hunks)Content.Shared/_Goobstation/Chemistry/Hypospray/HyposprayEvents.cs(1 hunks)Content.Shared/_Goobstation/Chemistry/Hypospray/SolutionCartridgeComponent.cs(1 hunks)Content.Shared/_Goobstation/Chemistry/Hypospray/SolutionCartridgeSystem.cs(1 hunks)Content.Shared/_Goobstation/Chemistry/SolutionCartridge/SolutionCartridgeReceiverComponent.cs(0 hunks)Content.Shared/_Goobstation/Chemistry/SolutionCartridge/SolutionCartridgeSystem.cs(0 hunks)Resources/Prototypes/Catalog/Fills/Items/belt.yml(1 hunks)Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml(1 hunks)Resources/Prototypes/Catalog/VendingMachines/Inventories/wallmed.yml(1 hunks)Resources/Prototypes/Entities/Clothing/Belt/belts.yml(1 hunks)Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml(1 hunks)Resources/Prototypes/Entities/Structures/Machines/lathe.yml(3 hunks)Resources/Prototypes/_Funkystation/Recipes/Reactions/toxins.yml(1 hunks)Resources/Prototypes/_Goobstation/Changeling/reagent_stings.yml(1 hunks)Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Medical/hypospray.yml(1 hunks)Resources/Prototypes/_Goobstation/Reagents/medicine.yml(2 hunks)Resources/Prototypes/_Goobstation/Recipes/Lathes/medical.yml(1 hunks)Resources/Prototypes/_Goobstation/Recipes/Lathes/security.yml(1 hunks)Resources/Prototypes/_Goobstation/tags.yml(1 hunks)
💤 Files with no reviewable changes (2)
- Content.Shared/_Goobstation/Chemistry/SolutionCartridge/SolutionCartridgeSystem.cs
- Content.Shared/_Goobstation/Chemistry/SolutionCartridge/SolutionCartridgeReceiverComponent.cs
🧰 Additional context used
🧬 Code Graph Analysis (1)
Content.Shared/_Goobstation/Chemistry/Hypospray/SolutionCartridgeSystem.cs (1)
Content.Server/Chemistry/EntitySystems/HypospraySystem.cs (1)
Initialize(35-43)
⏰ Context from checks skipped due to timeout of 90000ms (4)
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Test Packaging
- GitHub Check: build (ubuntu-latest)
- GitHub Check: YAML Linter
🔇 Additional comments (32)
Content.Shared/_Goobstation/Chemistry/Hypospray/SolutionCartridgeComponent.cs (2)
3-3: Namespace reorganization looks shipshape, officer!Moving this component to the Hypospray namespace makes perfect sense for organizational clarity. This is how we maintain a well-organized fleet of code! The structure now properly reflects the component's relationship with the hypospray system.
5-5: Removal of NetworkedComponent attribute noted and approved!The removal of NetworkedComponent attribute is tactically sound. This suggests we're no longer synchronizing this component's state over the network, which aligns with proper encapsulation principles. The SolutionCartridgeSystem will handle the networking as needed instead.
Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml (1)
241-241: Tourniquet tag addition confirmed
Recruit, theTourniquettag has been added correctly to the entity’s tag list. This integration allows storage systems to recognize tourniquets as intended.Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml (1)
14-14: ParamedHypo slot in NanoMedPlusInventory
ParamedHypo has been inserted into the medical vendor with quantity 2. This ensures autoinjectors are available as specified in PR objectives.Resources/Prototypes/_Goobstation/Changeling/reagent_stings.yml (1)
19-19: Reagent update for StingLethargic
Swapping out Impedrezene for ChloralHydrate aligns with the new chemical reaction workflows. Composition now matches the autoinjector cartridges introduced elsewhere.Resources/Prototypes/Entities/Clothing/Belt/belts.yml (1)
281-281: Whitelist updated for medical belt
TheTourniquettag is now whitelisted in the medical belt’s storage component. Belts will correctly accept tourniquets in field operations.Content.Server/Chemistry/EntitySystems/HypospraySystem.cs (1)
35-43: Verify handling of AfterHyposprayInjectsEvent
You’ve imported the new event definitions but haven’t subscribed toAfterHyposprayInjectsEventinInitialize(). Confirm whether this system or the SolutionCartridgeSystem should handle post-injection cartridge-clear logic, and add a subscription if required.Resources/Prototypes/_Goobstation/tags.yml (1)
147-152: Authorize new AutoinjectorCartridge and Tourniquet tags
YAML syntax and indentation align with existing entries; tags are ready for system integration.Resources/Prototypes/Catalog/Fills/Items/belt.yml (1)
137-143: Load ParamedHypo cartridges and Tourniquet into EMT belt
Indentation matches surrounding contents list, and identifiers correspond to the new prototypes. Deployment ready.Resources/Prototypes/_Goobstation/Recipes/Lathes/medical.yml (1)
9-19: Add ParamedHypo lathe recipe
Entry follows the established latheRecipe schema. Material costs and completion time look correct.Resources/Prototypes/_Funkystation/Recipes/Reactions/toxins.yml (1)
69-82: Integrate Tirizene chemical reaction
Reaction block matches the format of existing entries; no required temperature constraints were omitted.Resources/Prototypes/_Goobstation/Reagents/medicine.yml (2)
997-998: Boost Atropine mobility penalties
Updated walkSpeedModifier and sprintSpeedModifier to 0.75, matching the desired buff over the old 0.7 values.
1010-1011: Tune Atropine overdose paralyze effect
Reduced probability and duration to 0.1/2s, consistent with new less-severe overdose parameters.Resources/Prototypes/_Goobstation/Recipes/Lathes/security.yml (8)
24-31: New recipe for CartridgeEpinephrine is correctly defined.
idandresultmatch the cartridge entity, and the cost (100 Steel, 300 Glass) with a 1 second build time aligns with other hypospray cartridges.
Ensure this recipe ID matches the prototype inhypospray.yml.
32-39: CartridgeAtropine recipe looks good.
Parameters are consistent with CartridgeEpinephrine. Confirm the dosed reagent volume (10 Atropine) matches the intended behavior.
40-47: CartridgeBicaridine recipe is correct.
Steel/Glass costs mirror the pattern, and build time is consistent. Verify reagent ratios in the prototype align with this recipe’s cost.
48-55: CartridgeDermaline recipe validated.
Definition follows established structure. Double‑check that Dermaline mixes inhypospray.ymluse the samemaxVoland reagents.
56-63: CartridgeEphedrine recipe meets requirements.
Higher material cost (200 Steel, 400 Glass, 200 Plasma) reflects stimulant complexity. Confirm Plasma inclusion is intentional.
65-73: CartridgePuncturase recipe is correctly configured.
Matches CartridgeEphedrine cost structure. Verify Puncturase reagent presence and volume in the prototype.
74-82: CartridgeTirizene recipe is accurate.
Sedative mix uses the same cost template. Ensure Haloperidol and Impedrezene volumes in the prototype align with this.
83-92: SecHypo autoinjector crafting recipe is in order.
Higher material requirements (Steel 1500, Plastic 800, Glass 1200, Gold 500) fit an advanced device. Confirm thatSecHypoexists in the prototype file and that this balance yields the intended build time.Resources/Prototypes/Entities/Structures/Machines/lathe.yml (2)
272-279: Autolathe Emag hack recipes now include hypospray cartridges and devices.
AddingCartridgeEpinephrine,CartridgeBicaridine,CartridgeDermaline,CartridgeEphedrine,CartridgeAtropine,CartridgePuncturase,SecHypo, andParamedHypounderEmagLatheRecipesprovides emergency crafting via EMP hack.
Verify that this aligns with design intent—general autolathe may not be the canonical source for medical gear.
1328-1332: MedicalTechFab now crafts key cartridges and ParamedHypo.
CartridgeEpinephrine,CartridgeBicaridine,CartridgeDermaline,CartridgeAtropine, andParamedHypoare present.
However,CartridgeSaline(defined inhypospray.yml) and other med‑oriented cartridges (e.g., Ephedrine/Tirizene) are not included—verify that omission is intentional.Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Medical/hypospray.yml (9)
41-53:SecHypoautoinjector entity looks correct.
Inherits fromBaseCartridgeAutoinjectorand specifies proper sprite layers.
54-66:ParamedHypoautoinjector entity is properly configured.
Sprite layers and parent align withSecHypo.
92-112:CartridgeEpinephrineprototype is solid.
Reagent mix (7 Epinephrine, 3 TranexamicAcid) matches design notes.
134-159:CartridgeBicaridineprototype checks out.
Mix ratios and tags are consistent.
160-185:CartridgeDermalineprototype is accurate.
Reagent volumes and comments on burn healing balance are helpful.
186-204:CartridgeAtropineprototype is correct.
Single‑reagent mix simplifies emergency dosing.
205-223:CartridgePuncturaseprototype looks good.
Piercing agent quantity aligns with spec.
224-242:CartridgeEphedrineprototype is defined but not referenced by any techfab.
Ensure it's craftable via the correct lathe (security or medical) or remove if out of scope.
243-265:CartridgeTirizenesedation cartridge is correctly defined.
Verify it appears in the intended lathe’s static or dynamic recipes so players can craft it.
|
Have fun with this one, it’s wacky. |
|
yeah |
|
build is failing because theres not enough room in belts for the autoinjectors |
|
thanks, i hadn't seen that it failed. |
|
I found a bug |
|
bug fixed |
Description
Port cartridge autoinjector from Goob-Station.
Prs:
Goob-Station/Goob-Station#953
Goob-Station/Goob-Station#1021
Goob-Station/Goob-Station#1085
Goob-Station/Goob-Station#1798
Goob-Station/Goob-Station#2298
Media
Changelog
🆑 Aviu00, a-person5660, SolsticeOfTheWinter, pheenty, Will-Oliver-Br