Files
Aurora.3/code/modules/detectivework/microscope/slides.dm
Sparky 2a30beca54 Expedition Fluff Expansion - Stasis cages, Safari Nets & Sampling Tools (#19365)
Ports stasis cages from Baystation, for storage and transport of simple
mobs. These mobs must first be caught in an energy net, and this adds a
weaker energy net variant (safari net) as well as a way to transport
them and a dispenser for them in xenobiology.

Adds science samplers, available to every science role (lockers or
xenobiology lab due to xenobiology not having lockers). These must be
loaded with vials, and can then be used to extract plant/animal tissue
samples, soil samples or water samples. Added a low power microscope, as
well as a centrifuge and spectrophotometer, for analysing each of those
sample types respectively.

Note: The fluff text for tissue samples at the moment has more detail
for common mobs, such as carp or greimorians, and Moghes mobs as they
are the most prevalent right now. I'm not great at writing, so I'd
encourage others who are to add more descriptions over time.

Microscope & Net Dispenser in Xenobiology

![image](https://github.com/Aurorastation/Aurora.3/assets/26849270/447f8e40-215a-411b-9939-e7c9d018f100)
Sampler + Tissue/Soil/Water attachments

![image](https://github.com/Aurorastation/Aurora.3/assets/26849270/e53342af-540a-498f-a6ed-b7138fb6b689)
![image](https://github.com/Aurorastation/Aurora.3/assets/26849270/eaa10ca8-9a2e-4ff5-93e2-686e981b2a7b)
![image](https://github.com/Aurorastation/Aurora.3/assets/26849270/272637da-3eee-460a-9320-467a04623ce5)
Net Container

![image](https://github.com/Aurorastation/Aurora.3/assets/26849270/45c598d9-c568-44fb-9f31-09fc2296e062)
Microscope, Centrifuge and Spectrophotometer in R&D

![image](https://github.com/Aurorastation/Aurora.3/assets/26849270/1b85dd86-074b-4dd2-a1f8-8da64486232c)
Stasis Cages

![image](https://github.com/Aurorastation/Aurora.3/assets/26849270/d3526762-41ae-4798-a4df-f41d2613664d)

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:

| icons/obj/machinery/stasis_cage.dmi | mustafakalash (Baystation12) |
CC BY-SA 3.0 |

---------

Signed-off-by: Sparky. <ben.polwart@gmail.com>
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
2024-06-26 12:08:27 +00:00

58 lines
2.1 KiB
Plaintext

/obj/item/forensics/slide
name = "microscope slide"
desc = "A pair of thin glass panes used in the examination of samples beneath a microscope."
desc_info = "Used with fibers and GSR swab tests to examine the samples in the microscope. To empty them, use in hand."
icon_state = "slide"
var/obj/item/forensics/swab/has_swab
var/obj/item/sample/fibers/has_sample
/obj/item/forensics/slide/Initialize(mapload, ...)
. = ..()
create_reagents(5)
/obj/item/forensics/slide/attackby(obj/item/attacking_item, mob/user)
if(has_swab || has_sample || reagents.total_volume)
to_chat(user, SPAN_WARNING("There is already a sample in the slide."))
return
if(istype (attacking_item, /obj/item/forensics/swab))
has_swab = attacking_item
else if(istype(attacking_item, /obj/item/sample/fibers))
has_sample = attacking_item
else if(istype(attacking_item, /obj/item/reagent_containers) && REAGENT_VOLUME(attacking_item.reagents, /singleton/reagent/biological_tissue))
attacking_item.reagents.trans_type_to(reagents, /singleton/reagent/biological_tissue, 5)
else
to_chat(user, SPAN_WARNING("You don't think this will fit."))
return
to_chat(user, SPAN_NOTICE("You insert the sample into the slide."))
user.unEquip(attacking_item)
attacking_item.forceMove(src)
update_icon()
/obj/item/forensics/slide/attack_self(var/mob/user)
if(has_swab || has_sample)
to_chat(user, SPAN_NOTICE("You remove \the sample from \the [src]."))
if(has_swab)
user.put_in_hands(has_swab)
has_swab = null
if(has_sample)
user.put_in_hands(has_sample)
has_sample = null
update_icon()
return
/obj/item/forensics/slide/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(istype(target, /obj/item/reagent_containers) && reagents.total_volume)
reagents.trans_to_holder(target.reagents, 5)
to_chat(user, SPAN_NOTICE("You remove the sample from \the [src]."))
/obj/item/forensics/slide/update_icon()
if(!has_swab && !has_sample)
icon_state = "slide"
else if(has_swab)
icon_state = "slideswab"
else if(has_sample)
icon_state = "slidefiber"
else if(reagents.total_volume)
icon_state = "slidecells"