diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm index d8870cce058..da51cc0de32 100644 --- a/code/modules/experisci/experiment/experiments.dm +++ b/code/modules/experisci/experiment/experiments.dm @@ -142,15 +142,10 @@ experiment_proper = TRUE required_gas = /datum/gas/halon -// SKYRAT EDIT BEGIN - MATERIAL MEAT WAS REMOVED -// ORIGINAL: /datum/experiment/scanning/random/material/meat -/datum/experiment/scanning/random/material/silver +/datum/experiment/scanning/random/material/meat name = "Biological Material Scanning Experiment" -// ORIGINAL: description = "They told us we couldn't make chairs out of every material in the world. You're here to prove those nay-sayers wrong." - description = "Supposedly silver has an inert anti-microbial effect; scan a few samples to test this." -// ORIGINAL: possible_material_types = list(/datum/material/meat) - possible_material_types = list(/datum/material/silver) -// SKYRAT EDIT END - MATERIAL MEAT WAS REMOVED + description = "They told us we couldn't make chairs out of every material in the world. You're here to prove those nay-sayers wrong." + possible_material_types = list(/datum/material/meat) /datum/experiment/scanning/random/material/easy name = "Low Grade Material Scanning Experiment" diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index c1e91330ddb..8bf7723e4bb 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -454,6 +454,11 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +/datum/design/cyberimp_xray/moth + name = "Moth X-ray Eyes" + id = "ci-xray-moth" + build_path = /obj/item/organ/internal/eyes/robotic/xray/moth + /datum/design/cyberimp_thermals name = "Thermal Eyes" desc = "These cybernetic eyes will give you Thermal vision. Vertical slit pupil included." @@ -474,6 +479,11 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +/datum/design/cyberimp_thermals/moth + name = "Moth Thermal Eyes" + id = "ci-thermals-moth" + build_path = /obj/item/organ/internal/eyes/robotic/thermals/moth + /datum/design/cyberimp_antidrop name = "Anti-Drop Implant" desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle." @@ -868,6 +878,11 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +/datum/design/cybernetic_eyes/moth + name = "Basic Cybernetic Moth Eyes" + id = "cybernetic_eyes_moth" + build_path = /obj/item/organ/internal/eyes/robotic/basic/moth + /datum/design/cybernetic_eyes/improved name = "Cybernetic Eyes" desc = "A pair of cybernetic eyes." @@ -878,6 +893,11 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +/datum/design/cybernetic_eyes/improved/moth + name = "Cybernetic Moth Eyes" + id = "cybernetic_eyes_improved_moth" + build_path = /obj/item/organ/internal/eyes/robotic/moth + /datum/design/cyberimp_welding name = "Welding Shield Eyes" desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision." @@ -891,6 +911,11 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +/datum/design/cyberimp_welding/moth + name = "Welding Shield Moth Eyes" + id = "ci-welding-moth" + build_path = /obj/item/organ/internal/eyes/robotic/shield/moth + /datum/design/cyberimp_gloweyes name = "Luminescent Eyes" desc = "A pair of cybernetic eyes that can emit multicolored light" @@ -904,6 +929,11 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +/datum/design/cyberimp_gloweyes/moth + name = "Luminescent Moth Eyes" + id = "ci-gloweyes-moth" + build_path = /obj/item/organ/internal/eyes/robotic/glow/moth + ///////////////////// ///Surgery Designs/// ///////////////////// diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 1fe97d27c11..22311435457 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -281,6 +281,7 @@ "circular_saw", "cybernetic_ears", "cybernetic_eyes", + "cybernetic_eyes_moth", "cybernetic_heart", "cybernetic_liver", "cybernetic_lungs", @@ -433,8 +434,6 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) required_experiments = list(/datum/experiment/autopsy/human) - -// SKYRAT EDIT BEGIN - MATERIAL MEAT WAS REMOVED /datum/techweb_node/adv_biotech id = "adv_biotech" display_name = "Advanced Biotechnology" @@ -453,22 +452,10 @@ "piercesyringe", "plasmarefiller", "smoke_machine", - - //SKYRAT EDIT START - RESEARCH DESIGNS - "monkey_helmet", - "brute2medicell", - "burn2medicell", - "toxin2medicell", - "oxy2medicell", - "relocatemedicell", - "tempmedicell", - "bodymedicell", - "clotmedicell", - //SKYRAT EDIT END - ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) required_experiments = list(/datum/experiment/autopsy/nonhuman) - discount_experiments = list(/datum/experiment/scanning/random/material/silver = 4000) // SKYRAT EDIT CHANGE - ORIGINAL : discount_experiments = list(/datum/experiment/scanning/random/material/meat = 4000) + discount_experiments = list(/datum/experiment/scanning/random/material/meat = 4000) /datum/techweb_node/xenoorgan_biotech id = "xenoorgan_bio" @@ -1393,6 +1380,7 @@ design_ids = list( "cybernetic_ears_u", "cybernetic_eyes_improved", + "cybernetic_eyes_improved_moth", "cybernetic_heart_tier2", "cybernetic_liver_tier2", "cybernetic_lungs_tier2", @@ -1416,6 +1404,8 @@ "cybernetic_ears_xray", "ci-gloweyes", "ci-welding", + "ci-gloweyes-moth", + "ci-welding-moth", "cybernetic_heart_tier3", "cybernetic_liver_tier3", "cybernetic_lungs_tier3", @@ -1470,11 +1460,14 @@ display_name = "Combat Cybernetic Implants" description = "Military grade combat implants to improve performance." prereq_ids = list("adv_cyber_implants","weaponry","NVGtech","high_efficiency") -// SKYRAT EDIT - REMOVED: X-rays+Thermals from here design_ids = list( "ci-antidrop", "ci-antistun", + "ci-thermals", "ci-thrusters", + "ci-xray", + "ci-thermals-moth", + "ci-xray-moth", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm index a4e8a524753..851ab3dbb6c 100644 --- a/code/modules/surgery/organs/internal/eyes/_eyes.dm +++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -139,7 +139,6 @@ if(overlay_ignore_lighting && !(obscured & ITEM_SLOT_EYES)) eye_overlays += emissive_appearance(eye_left.icon, eye_left.icon_state, parent, -eyes_layer, alpha = eye_left.alpha) //SKYRAT EDIT CHANGE - TODO fix upstream eye_overlays += emissive_appearance(eye_right.icon, eye_right.icon_state, parent, -eyes_layer, alpha = eye_right.alpha) //SKYRAT EDIT CHANGE - TODO fix upstream - var/obj/item/bodypart/head/my_head = parent.get_bodypart(BODY_ZONE_HEAD) if(my_head) if(my_head.head_flags & HEAD_EYECOLOR) @@ -417,12 +416,8 @@ actions_types = list(/datum/action/item_action/organ_action/use, /datum/action/item_action/organ_action/toggle) var/max_light_beam_distance = 5 var/obj/item/flashlight/eyelight/glow/eye - /// The overlay that is used when both eyes are set to match the light color - var/mutable_appearance/eyes_overlay - /// The overlay that is used when custom color selection is enabled, for the left eye - var/mutable_appearance/eyes_overlay_left - /// The overlay that is used when custom color selection is enabled, for the right eye - var/mutable_appearance/eyes_overlay_right + /// base icon state for eye overlays + var/base_eye_state = "eyes_glow_gs" /// Whether or not to match the eye color to the light or use a custom selection var/eye_color_mode = MATCH_LIGHT_COLOR /// The selected color for the light beam itself @@ -460,9 +455,6 @@ /obj/item/organ/internal/eyes/robotic/glow/on_remove(mob/living/carbon/eye_owner) deactivate(eye_owner, close_ui = TRUE) - QDEL_NULL(eyes_overlay) - QDEL_NULL(eyes_overlay_left) - QDEL_NULL(eyes_overlay_right) eye.forceMove(src) return ..() @@ -549,14 +541,14 @@ eye.on = TRUE if(eye.light_range) // at range 0 we are just going to make the eyes glow emissively, no light overlay eye.set_light_on(TRUE) - update_mob_eyes_overlay() + update_mob_eye_color() /** * Deactivates the light * * Turns off the attached flashlight object, closes UIs, updates the mob overlay to be removed. * Arguments: - * * mob/living/carbon/eye_owner - the mob who the eyes belong to, for passing to update_mob_eyes_overlay + * * mob/living/carbon/eye_owner - the mob who the eyes belong to * * close_ui - whether or not to close the ui */ /obj/item/organ/internal/eyes/robotic/glow/proc/deactivate(mob/living/carbon/eye_owner = owner, close_ui = FALSE) @@ -564,7 +556,7 @@ SStgui.close_uis(src) eye.on = FALSE eye.set_light_on(FALSE) - update_mob_eyes_overlay(eye_owner) + update_mob_eye_color(eye_owner) /** * Randomizes the light color @@ -656,44 +648,19 @@ if(QDELETED(eye_owner) || !ishuman(eye_owner)) //Other carbon mobs don't have eye color. return - - eye_owner.dna.species.handle_body(eye_owner) - update_mob_eyes_overlay() - -/** - * Updates the emissive mob eye overlay - * - * When the light is on, the overlay(s) are added. When it is disabled, they are cut. - * Adds one or two overlays depending on what the eye_color_mode toggle is set to. - * Arguments: - * * mob/living/carbon/eye_owner - the mob to add the overlay to - */ -/obj/item/organ/internal/eyes/robotic/glow/proc/update_mob_eyes_overlay(mob/living/carbon/eye_owner = owner) - if(QDELETED(eye_owner)) - return - - if(!ishuman(eye_owner)) - return - - eye_owner.cut_overlay(eyes_overlay) - eye_owner.cut_overlay(eyes_overlay_left) - eye_owner.cut_overlay(eyes_overlay_right) - + if(!eye.on) - return + eye_icon_state = initial(eye_icon_state) + overlay_ignore_lighting = FALSE + else + overlay_ignore_lighting = TRUE + eye_icon_state = base_eye_state - switch(eye_color_mode) - if(MATCH_LIGHT_COLOR) - eyes_overlay = emissive_appearance('icons/mob/human/human_face.dmi', "eyes_glow_gs", eye_owner, layer = -BODY_LAYER, alpha = owner.alpha) - eyes_overlay.color = current_color_string - eye_owner.add_overlay(eyes_overlay) - if(USE_CUSTOM_COLOR) - eyes_overlay_left = emissive_appearance('icons/mob/human/human_face.dmi', "eyes_glow_gs_left", eye_owner, layer = -BODY_LAYER, alpha = owner.alpha) - eyes_overlay_right = emissive_appearance('icons/mob/human/human_face.dmi', "eyes_glow_gs_right", eye_owner, layer = -BODY_LAYER, alpha = owner.alpha) - eyes_overlay_left.color = eye_color_left - eyes_overlay_right.color = eye_color_right - eye_owner.add_overlay(eyes_overlay_left) - eye_owner.add_overlay(eyes_overlay_right) + var/obj/item/bodypart/head/head = eye_owner.get_bodypart(BODY_ZONE_HEAD) //if we have eyes we definently have a head anyway + var/previous_flags = head.head_flags + head.head_flags = previous_flags | HEAD_EYECOLOR + eye_owner.dna.species.handle_body(eye_owner) + head.head_flags = previous_flags #undef MATCH_LIGHT_COLOR #undef USE_CUSTOM_COLOR @@ -708,6 +675,44 @@ icon_state = "eyeballs-moth" flash_protect = FLASH_PROTECTION_SENSITIVE +/obj/item/organ/internal/eyes/robotic/moth + name = "robotic moth eyes" + eye_icon_state = "motheyes" + icon_state = "eyeballs-cybermoth" + desc = "Your vision is augmented. Much like actual moth eyes, very sensitive to bright lights." + flash_protect = FLASH_PROTECTION_SENSITIVE + +/obj/item/organ/internal/eyes/robotic/basic/moth + name = "basic robotic moth eyes" + eye_icon_state = "motheyes" + icon_state = "eyeballs-cybermoth" + flash_protect = FLASH_PROTECTION_SENSITIVE + +/obj/item/organ/internal/eyes/robotic/xray/moth + name = "robotic eyes" + eye_icon_state = "motheyes" + icon_state = "eyeballs-cybermoth" + desc = "These cybernetic imitation moth eyes will give you X-ray vision. Blinking is futile. Much like actual moth eyes, very sensitive to bright lights." + flash_protect = FLASH_PROTECTION_SENSITIVE + +/obj/item/organ/internal/eyes/robotic/shield/moth + name = "shielded robotic moth eyes" + eye_icon_state = "motheyes" + icon_state = "eyeballs-cybermoth" + +/obj/item/organ/internal/eyes/robotic/glow/moth + name = "High Luminosity Moth Eyes" + eye_icon_state = "motheyes" + base_eye_state = "eyes_mothglow" + icon_state = "eyeballs-cybermoth" + desc = "Special glowing eyes, to be one with the lamp. Much like actual moth eyes, very sensitive to bright lights." + flash_protect = FLASH_PROTECTION_SENSITIVE + +/obj/item/organ/internal/eyes/robotic/thermals/moth //we inherit flash weakness from thermals + name = "thermal moth eyes" + eye_icon_state = "motheyes" + icon_state = "eyeballs-cybermoth" + /obj/item/organ/internal/eyes/snail name = "snail eyes" desc = "These eyes seem to have a large range, but might be cumbersome with glasses." diff --git a/icons/mob/human/human_face.dmi b/icons/mob/human/human_face.dmi index 0afce5c66cb..6985cf07eee 100644 Binary files a/icons/mob/human/human_face.dmi and b/icons/mob/human/human_face.dmi differ diff --git a/icons/obj/medical/organs/organs.dmi b/icons/obj/medical/organs/organs.dmi index 3de3e057df6..17e09c7395c 100644 Binary files a/icons/obj/medical/organs/organs.dmi and b/icons/obj/medical/organs/organs.dmi differ diff --git a/modular_skyrat/master_files/code/modules/experisci/experiment.dm b/modular_skyrat/master_files/code/modules/experisci/experiment.dm new file mode 100644 index 00000000000..791a92a2d74 --- /dev/null +++ b/modular_skyrat/master_files/code/modules/experisci/experiment.dm @@ -0,0 +1,4 @@ +// Changed to silver +/datum/experiment/scanning/random/material/meat + description = "Supposedly silver has an inert anti-microbial effect; scan a few samples to test this." + possible_material_types = list(/datum/material/silver) diff --git a/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm b/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm index 32ba64f84e4..4dc004fc2e0 100644 --- a/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm +++ b/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm @@ -1,4 +1,7 @@ +// MODULAR ADDITIONS +// + /datum/techweb_node/adv_vision id = "adv_vision" display_name = "Combat Cybernetic Eyes" @@ -7,5 +10,37 @@ design_ids = list( "ci-thermals", "ci-xray", + "ci-thermals-moth", + "ci-xray-moth", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000) + +/datum/techweb_node/adv_biotech/New() + . = ..() + design_ids += list( + "monkey_helmet", + "brute2medicell", + "burn2medicell", + "toxin2medicell", + "oxy2medicell", + "relocatemedicell", + "tempmedicell", + "bodymedicell", + "clotmedicell", + ) + +// MODULAR REMOVALS +// + +// Modularly removes x-ray and thermals from here, it's in adv_vision instead +/datum/techweb_node/combat_cyber_implants/New() + . = ..() + design_ids -= list( + "ci-thermals", + "ci-xray", + "ci-thermals-moth", + "ci-xray-moth", + ) + +// MODULAR MODIFICATIONS +// diff --git a/modular_skyrat/modules/customization/modules/client/augment/organs.dm b/modular_skyrat/modules/customization/modules/client/augment/organs.dm index 3c1e422c02b..83c1c337221 100644 --- a/modular_skyrat/modules/customization/modules/client/augment/organs.dm +++ b/modular_skyrat/modules/customization/modules/client/augment/organs.dm @@ -69,12 +69,22 @@ name = "Cybernetic eyes" path = /obj/item/organ/internal/eyes/robotic +/datum/augment_item/organ/eyes/cybernetic/moth + name = "Cybernetic moth eyes" + path = /obj/item/organ/internal/eyes/robotic/moth + /datum/augment_item/organ/eyes/highlumi name = "High-luminosity eyes" path = /obj/item/organ/internal/eyes/robotic/glow allowed_biotypes = MOB_ORGANIC|MOB_ROBOTIC cost = 1 +/datum/augment_item/organ/eyes/highlumi/moth + name = "High Luminosity Moth Eyes" + path = /obj/item/organ/internal/eyes/robotic/glow/moth + allowed_biotypes = MOB_ORGANIC|MOB_ROBOTIC + cost = 1 + //TONGUES /datum/augment_item/organ/tongue slot = AUGMENT_SLOT_TONGUE diff --git a/modular_skyrat/modules/implants/icons/internal_HA.dmi b/modular_skyrat/modules/implants/icons/internal_HA.dmi index efa4509a16b..1efa03a1c59 100644 Binary files a/modular_skyrat/modules/implants/icons/internal_HA.dmi and b/modular_skyrat/modules/implants/icons/internal_HA.dmi differ diff --git a/tgstation.dme b/tgstation.dme index aabe3fc7b15..c5d93f3db5a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5822,6 +5822,7 @@ #include "modular_skyrat\master_files\code\modules\clothing\under\jobs\civilian\civilian.dm" #include "modular_skyrat\master_files\code\modules\clothing\under\jobs\civilian\suits.dm" #include "modular_skyrat\master_files\code\modules\events\_event.dm" +#include "modular_skyrat\master_files\code\modules\experisci\experiment.dm" #include "modular_skyrat\master_files\code\modules\food_and_drinks\recipes\food_mixtures.dm" #include "modular_skyrat\master_files\code\modules\jobs\off_duty_check.dm" #include "modular_skyrat\master_files\code\modules\jobs\departments\departments.dm"