Skip to content

Commit

Permalink
Fermichem 2.6 - Adds the HPLC: a new roundstart method of detecting p…
Browse files Browse the repository at this point in the history
…urity, as well as a method of partially purifying reagents (tgstation#57858)

Adds the High-performance liquid chromatography machine - a new roundstart method of detecting purity, as well as a method of partially purifying reagents.

A single machine has been added to each of the 4(5) maps - this lets people determine their purity based off the size of the green (pure portion) to the orange (impure portion) of a reagent's peak shown on the mas spectroscopy display. If a reagent is impure - it will be displayed as red.

In addition to this function, the HPLC can purify reagents by selecting a range of them and pressing the purify button. This will cost some time depending on the mass of the reagent and will purify it up it's default purity (in the tweaked reagent cases - 75%, for the reagents I've yet to get to - 100%). It will also reduce the volume accordingly (so in essence you are reducing the volume of the impure parts).

The sprite itself will indicate when it's running, so you don't need to be nearby it or use the UI to know when it's done
  • Loading branch information
Thalpy authored Mar 26, 2021
1 parent af0d7f5 commit eee51bc
Show file tree
Hide file tree
Showing 16 changed files with 721 additions and 32 deletions.
1 change: 1 addition & 0 deletions _maps/map_files/Deltastation/DeltaStation2.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -37558,6 +37558,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 8
},
/obj/machinery/chem_mass_spec,
/turf/open/floor/iron/white,
/area/medical/pharmacy)
"dkl" = (
Expand Down
30 changes: 13 additions & 17 deletions _maps/map_files/IceBoxStation/IceBoxStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -12904,7 +12904,6 @@
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/hatch{
name = "Morgue";
req_access = null;
req_access_txt = "6"
},
/turf/open/floor/iron/dark,
Expand Down Expand Up @@ -14482,7 +14481,6 @@
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/hatch{
name = "Morgue";
req_access = null;
req_access_txt = "6;5"
},
/obj/structure/disposalpipe/segment{
Expand Down Expand Up @@ -14695,15 +14693,15 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/item/hand_labeler,
/obj/structure/table,
/obj/machinery/firealarm{
pixel_y = 24
},
/obj/machinery/camera{
c_tag = "Pharmacy";
network = list("ss13","medbay")
},
/obj/structure/closet/secure_closet/chemical,
/obj/item/radio/headset/headset_med,
/turf/open/floor/iron/white,
/area/medical/pharmacy)
"bnM" = (
Expand Down Expand Up @@ -38019,14 +38017,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/item/book/manual/wiki/chemistry{
pixel_x = 8
},
/obj/item/book/manual/wiki/grenades,
/obj/item/book/manual/wiki/plumbing{
pixel_x = 5
},
/obj/structure/table,
/obj/machinery/chem_mass_spec,
/turf/open/floor/iron/white,
/area/medical/pharmacy)
"kGQ" = (
Expand Down Expand Up @@ -42748,8 +42739,14 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/structure/closet/secure_closet/chemical,
/obj/item/radio/headset/headset_med,
/obj/structure/table,
/obj/item/book/manual/wiki/grenades,
/obj/item/book/manual/wiki/plumbing{
pixel_x = 5
},
/obj/item/book/manual/wiki/chemistry{
pixel_x = 8
},
/turf/open/floor/iron/white,
/area/medical/pharmacy)
"nRi" = (
Expand Down Expand Up @@ -44788,7 +44785,6 @@
},
/obj/machinery/button/door{
id = "AuxToilet3";
id_tag = null;
name = "Lock Control";
normaldoorcontrol = 1;
pixel_y = -25;
Expand Down Expand Up @@ -45888,7 +45884,6 @@
},
/obj/machinery/door/airlock/command{
name = "Chief Medical Officer";
req_access = null;
req_access_txt = "40"
},
/obj/structure/cable,
Expand Down Expand Up @@ -55332,6 +55327,8 @@
},
/obj/machinery/power/apc/auto_name/north,
/obj/structure/cable,
/obj/structure/table,
/obj/item/hand_labeler,
/turf/open/floor/iron/white,
/area/medical/pharmacy)
"wEo" = (
Expand Down Expand Up @@ -57563,7 +57560,6 @@
},
/obj/machinery/button/door{
id = "AuxToilet4";
id_tag = null;
name = "Lock Control";
normaldoorcontrol = 1;
pixel_y = -25;
Expand Down
8 changes: 4 additions & 4 deletions _maps/map_files/KiloStation/KiloStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -18793,6 +18793,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/iron/showroomfloor,
/area/medical/pharmacy)
"aTG" = (
Expand Down Expand Up @@ -19013,12 +19016,10 @@
/obj/machinery/firealarm{
pixel_y = 26
},
/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/chem_mass_spec,
/turf/open/floor/iron/showroomfloor,
/area/medical/pharmacy)
"aTZ" = (
Expand Down Expand Up @@ -66367,7 +66368,6 @@
id = "IsolationFlash";
pixel_x = -23;
pixel_y = 8;
req_access = null;
req_access_txt = "2"
},
/obj/machinery/button/door{
Expand Down
14 changes: 7 additions & 7 deletions _maps/map_files/MetaStation/MetaStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -6974,7 +6974,6 @@
name = "Brig Lockdown Control";
pixel_x = 6;
pixel_y = 7;
req_access = null;
req_access_txt = "63"
},
/obj/machinery/button/door{
Expand Down Expand Up @@ -22657,10 +22656,10 @@
/area/medical/chemistry)
"cmC" = (
/obj/effect/turf_decal/tile/yellow,
/obj/structure/closet/secure_closet/chemical,
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/machinery/chem_mass_spec,
/turf/open/floor/iron/white,
/area/medical/pharmacy)
"cmD" = (
Expand Down Expand Up @@ -35379,10 +35378,7 @@
/turf/open/floor/iron,
/area/maintenance/starboard)
"fuY" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/box/white{
color = "#EFB341"
},
/obj/structure/closet/secure_closet/chemical,
/turf/open/floor/iron/white,
/area/medical/pharmacy)
"fvb" = (
Expand Down Expand Up @@ -47093,6 +47089,10 @@
/turf/open/floor/wood,
/area/maintenance/port/aft)
"kge" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/box/white{
color = "#EFB341"
},
/turf/open/floor/iron/white,
/area/medical/pharmacy)
"kgg" = (
Expand Down Expand Up @@ -55272,7 +55272,7 @@
},
/obj/item/storage/fancy/donut_box,
/obj/item/paper{
info = "Jim Norton's Quebecois Coffee. You see, in 2265 the Quebecois had finally had enough of Canada's shit, and went to the one place that wasn't corrupted by Canuckistan.Je vais au seul endroit qui n'a pas corrompu par les Canadiens ... ESPACE.";
info = "Jim Norton's Quebecois Coffee. You see, in 2265 the Quebecois had finally had enough of Canada's shit, and went to the one place that wasn't corrupted by Canuckistan.Je vais au seul endroit qui n'a pas ??? corrompu par les Canadiens ... ESPACE.";
name = "Coffee Shop";
pixel_x = -4;
pixel_y = 6
Expand Down
7 changes: 6 additions & 1 deletion _maps/map_files/debug/runtimestation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -2214,6 +2214,11 @@
},
/turf/open/floor/iron,
/area/hallway/primary/central)
"mE" = (
/obj/structure/cable,
/obj/machinery/chem_mass_spec,
/turf/open/floor/iron,
/area/medical/chemistry)
"nn" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
Expand Down Expand Up @@ -7637,7 +7642,7 @@ aj
bP
Ce
JF
cj
mE
oV
bE
bE
Expand Down
6 changes: 5 additions & 1 deletion code/__DEFINES/dcs/signals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,9 @@
///from base of atom/AltClick(): (/mob)
#define COMSIG_CLICK_ALT "alt_click"
#define COMPONENT_CANCEL_CLICK_ALT (1<<0)
///from base of atom/alt_click_secondary(): (/mob)
#define COMSIG_CLICK_ALT_SECONDARY "alt_click_secondary"
#define COMPONENT_CANCEL_CLICK_ALT_SECONDARY (1<<0)
///from base of atom/CtrlShiftClick(/mob)
#define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click"
///from base of atom/MouseDrop(): (/atom/over, /mob/user)
Expand Down Expand Up @@ -444,7 +447,8 @@
///from base of mob/AltClickOn(): (atom/A)
#define COMSIG_MOB_ALTCLICKON "mob_altclickon"
#define COMSIG_MOB_CANCEL_CLICKON (1<<0)

///from base of mob/alt_click_on_secodary(): (atom/A)
#define COMSIG_MOB_ALTCLICKON_SECONDARY "mob_altclickon_secondary"
/// From base of /mob/living/simple_animal/bot/proc/bot_step()
#define COMSIG_MOB_BOT_PRE_STEP "mob_bot_pre_step"
/// Should always match COMPONENT_MOVABLE_BLOCK_PRE_MOVE as these are interchangeable and used to block movement.
Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// Trait associated with highlander
#define HIGHLANDER_TRAIT "highlander"

///generic atom traits
#define DO_NOT_SPLASH "do_not_splash"

// unique trait sources, still defines
#define CLONING_POD_TRAIT "cloning-pod"
#define STATUE_MUTE "statue"
Expand Down
17 changes: 16 additions & 1 deletion code/_onclick/click.dm
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,10 @@
MiddleClickOn(A, params)
return
if(LAZYACCESS(modifiers, ALT_CLICK)) // alt and alt-gr (rightalt)
AltClickOn(A)
if(LAZYACCESS(modifiers, RIGHT_CLICK))
alt_click_on_secondary(A)
else
AltClickOn(A)
return
if(LAZYACCESS(modifiers, CTRL_CLICK))
CtrlClickOn(A)
Expand Down Expand Up @@ -385,6 +388,18 @@
user.listed_turf = T
user.client << output("[url_encode(json_encode(T.name))];", "statbrowser:create_listedturf")

///The base proc of when something is right clicked on when alt is held - generally use alt_click_secondary instead
/atom/proc/alt_click_on_secondary(atom/A)
. = SEND_SIGNAL(src, COMSIG_MOB_ALTCLICKON_SECONDARY, A)
if(. & COMSIG_MOB_CANCEL_CLICKON)
return
A.alt_click_secondary(src)

///The base proc of when something is right clicked on when alt is held
/atom/proc/alt_click_secondary(mob/user)
if(SEND_SIGNAL(src, COMSIG_CLICK_ALT_SECONDARY, user) & COMPONENT_CANCEL_CLICK_ALT_SECONDARY)
return

/// Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction
/atom/proc/AltClickNoInteract(mob/user, atom/A)
var/turf/T = get_turf(A)
Expand Down
1 change: 1 addition & 0 deletions code/modules/reagents/chemistry/holder.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
if(path in GLOB.fake_reagent_blacklist)
continue
var/datum/reagent/D = new path()
D.mass = rand(10, 800) //This is terrible and should be removed ASAP!
GLOB.chemical_reagents_list[path] = D

/proc/build_chemical_reactions_lists()
Expand Down
Loading

0 comments on commit eee51bc

Please sign in to comment.