--- /dev/null
+namespace Content.Server.CartridgeLoader.Cartridges;
+
+[RegisterComponent]
+public sealed partial class MedTekCartridgeComponent : Component
+{
+}
--- /dev/null
+using Content.Server.Medical.Components;
+using Content.Shared.CartridgeLoader;
+
+namespace Content.Server.CartridgeLoader.Cartridges;
+
+public sealed class MedTekCartridgeSystem : EntitySystem
+{
+ [Dependency] private readonly CartridgeLoaderSystem _cartridgeLoaderSystem = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent<MedTekCartridgeComponent, CartridgeAddedEvent>(OnCartridgeAdded);
+ SubscribeLocalEvent<MedTekCartridgeComponent, CartridgeRemovedEvent>(OnCartridgeRemoved);
+ }
+
+ private void OnCartridgeAdded(Entity<MedTekCartridgeComponent> ent, ref CartridgeAddedEvent args)
+ {
+ var healthAnalyzer = EnsureComp<HealthAnalyzerComponent>(args.Loader);
+ }
+
+ private void OnCartridgeRemoved(Entity<MedTekCartridgeComponent> ent, ref CartridgeRemovedEvent args)
+ {
+ // only remove when the program itself is removed
+ if (!_cartridgeLoaderSystem.HasProgram<MedTekCartridgeComponent>(args.Loader))
+ {
+ RemComp<HealthAnalyzerComponent>(args.Loader);
+ }
+ }
+}
/// Sound played on scanning end
/// </summary>
[DataField]
- public SoundSpecifier? ScanningEndSound;
+ public SoundSpecifier ScanningEndSound = new SoundPathSpecifier("/Audio/Items/Medical/healthscanner.ogg");
/// <summary>
/// Whether to show up the popup
using Content.Shared.MedicalScanner;
using Content.Shared.Mobs.Components;
using Content.Shared.Popups;
-using Content.Shared.PowerCell;
using Robust.Server.GameObjects;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Containers;
-using Robust.Shared.Player;
using Robust.Shared.Timing;
namespace Content.Server.Medical;
if (args.Handled || args.Cancelled || args.Target == null || !_cell.HasDrawCharge(uid, user: args.User))
return;
- _audio.PlayPvs(uid.Comp.ScanningEndSound, uid);
+ if (!uid.Comp.Silent)
+ _audio.PlayPvs(uid.Comp.ScanningEndSound, uid);
OpenUserInterface(args.User, uid);
BeginAnalyzingEntity(uid, args.Target.Value);
astro-nav-program-name = AstroNav
+med-tek-program-name = MedTek
+
# Wanted list cartridge
wanted-list-program-name = Wanted list
wanted-list-label-no-records = It's all right, cowboy
- id: MedicalTechFabCircuitboard
- id: MedkitFilled
- id: RubberStampCMO
+ - id: MedTekCartridge
# Hardsuit table, used for suit storage as well
- type: entityTable
- type: StealTarget
stealGroup: WantedListCartridge
+- type: entity
+ parent: BaseItem
+ id: MedTekCartridge
+ name: MedTek cartridge
+ description: A program that provides medical diagnostic tools.
+ components:
+ - type: Sprite
+ sprite: Objects/Devices/cartridge.rsi
+ state: cart-med
+ - type: Icon
+ sprite: Objects/Devices/cartridge.rsi
+ state: cart-med
+ - type: Cartridge
+ programName: med-tek-program-name
+ icon:
+ sprite: Objects/Specific/Medical/healthanalyzer.rsi
+ state: icon
+ - type: MedTekCartridge
+
- type: entity
parent: BaseItem
id: AstroNavCartridge
id: BaseMedicalPDA
abstract: true
components:
- - type: ItemToggle
- onUse: false
- - type: HealthAnalyzer
- scanDelay: 1
- scanningEndSound:
- path: "/Audio/Items/Medical/healthscanner.ogg"
+ - type: CartridgeLoader
+ uiKey: enum.PdaUiKey.Key
+ preinstalled:
+ - CrewManifestCartridge
+ - NotekeeperCartridge
+ - NewsReaderCartridge
+ - MedTekCartridge
- type: entity
parent: BasePDA
parent: BaseMedicalPDA
id: MedicalInternPDA
name: medical intern PDA
- description: Why isn't it white? Has a built-in health analyzer.
+ description: Why isn't it white?
components:
- type: Pda
id: MedicalInternIDCard
parent: BaseMedicalPDA
id: CMOPDA
name: chief medical officer PDA
- description: Extraordinarily shiny and sterile. Has a built-in health analyzer.
+ description: Extraordinarily shiny and sterile.
components:
- type: Pda
id: CMOIDCard
parent: BaseMedicalPDA
id: MedicalPDA
name: medical PDA
- description: Shiny and sterile. Has a built-in health analyzer.
+ description: Shiny and sterile.
components:
- type: Pda
id: MedicalIDCard
parent: BaseMedicalPDA
id: ParamedicPDA
name: paramedic PDA
- description: Shiny and sterile. Has a built-in rapid health analyzer.
+ description: Shiny and sterile.
components:
- type: Pda
id: ParamedicIDCard
id: ERTMedicPDA
name: ERT Medic PDA
suffix: Medic
- description: Red for firepower, it's shiny and sterile. Has a built-in rapid health analyzer.
+ description: Red for firepower, it's shiny and sterile.
components:
- type: Pda
id: ERTMedicIDCard
- - type: HealthAnalyzer
- scanDelay: 1
- scanningEndSound:
- path: "/Audio/Items/Medical/healthscanner.ogg"
+ - type: CartridgeLoader
+ uiKey: enum.PdaUiKey.Key
+ preinstalled:
+ - CrewManifestCartridge
+ - NotekeeperCartridge
+ - NewsReaderCartridge
+ - MedTekCartridge
+ - WantedListCartridge
- type: entity
parent: ERTLeaderPDA
parent: BaseMedicalPDA
id: BrigmedicPDA
name: brigmedic PDA
- description: I wonder whose pulse is on the screen? I hope he doesnt stop... PDA has a built-in health analyzer.
+ description: I wonder whose pulse is on the screen? I hope it doesn't stop...
components:
- type: Pda
id: BrigmedicIDCard
parent: BaseMedicalPDA
id: SeniorPhysicianPDA
name: senior physician PDA
- description: Smells faintly like iron and chemicals. Has a built-in health analyzer.
+ description: Smells faintly like iron and chemicals.
components:
- type: Pda
id: SeniorPhysicianIDCard
uiKey: enum.PdaUiKey.Key
preinstalled:
- NotekeeperCartridge
+ - MedTekCartridge
cartridgeSlot:
priority: -1
name: Cartridge
{
"version": 1,
"license": "CC-BY-SA-3.0",
- "copyright": "Taken from vgstation at https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d and tgstation at tgstation at https://github.com/tgstation/tgstation/commit/0c15d9dbcf0f2beb230eba5d9d889ef2d1945bb8, cart-log made by Skarletto (github), cart-sec made by dieselmohawk (discord), cart-nav made by ArchRBX (github)",
+ "copyright": "Taken from vgstation at https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d and tgstation at tgstation at https://github.com/tgstation/tgstation/commit/0c15d9dbcf0f2beb230eba5d9d889ef2d1945bb8, cart-log made by Skarletto (github), cart-sec made by dieselmohawk (discord), cart-nav, cart-med made by ArchRBX (github)",
"size": {
"x": 32,
"y": 32
{
"name": "cart-m"
},
+ {
+ "name": "cart-med"
+ },
{
"name": "cart-mi"
},