mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-28 02:02:04 +00:00
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  Sampler + Tissue/Soil/Water attachments    Net Container  Microscope, Centrifuge and Spectrophotometer in R&D  Stasis Cages  ### 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>
58 lines
2.1 KiB
Plaintext
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"
|