diff --git a/code/game/machinery/body_scanner.dm b/code/game/machinery/body_scanner.dm index 8d19315ae8b..6b2b41ca9c2 100644 --- a/code/game/machinery/body_scanner.dm +++ b/code/game/machinery/body_scanner.dm @@ -306,7 +306,8 @@ for(var/obj/machinery/bodyscanner/C in orange(1,src)) connected = C break - connected.connected = src + if(connected) + connected.connected = src update_icon() /obj/machinery/body_scanconsole/attack_ai(var/mob/user) diff --git a/code/game/machinery/mech_recharger.dm b/code/game/machinery/mech_recharger.dm index 377497acde6..9468ffadf10 100644 --- a/code/game/machinery/mech_recharger.dm +++ b/code/game/machinery/mech_recharger.dm @@ -110,4 +110,22 @@ /obj/machinery/mech_recharger/proc/stop_charging() update_use_power(1) - charging = null \ No newline at end of file + charging = null + + +/obj/machinery/mech_recharger/hephaestus + name = "hephaestus exosuit dock" + desc = "A massive vehicle dock elevated slightly above the ground, constructed for equally massive charging speeds." + icon_state = "supermechcharger" + idle_power_usage = 400 + active_power_usage = 120 KILOWATTS + + base_charge_rate = 120 KILOWATTS + repair = 1 + + component_types = list( + /obj/item/circuitboard/mech_recharger/hephaestus, + /obj/item/stock_parts/capacitor = 3, + /obj/item/stock_parts/scanning_module = 2, + /obj/item/stock_parts/manipulator = 3 + ) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 80cae247231..f97ee9dfeed 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -625,3 +625,78 @@ BREATH ANALYZER ++unknown if(unknown) to_chat(user,"Non-medical reagent[(unknown > 1)?"s":""] found in subject's respitory system.") + + +/obj/item/device/advanced_healthanalyzer + name = "zeng-hu body analyzer" + desc = "An expensive and varied-use health analyzer that prints full-body scans after a short scanning delay." + icon_state = "zh-analyzer" + item_state = "healthanalyzer" + slot_flags = SLOT_BELT + w_class = ITEMSIZE_NORMAL + origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 3) + var/obj/machinery/body_scanconsole/internal_bodyscanner = null //this is used to print the date and to deal with extra + +/obj/item/device/advanced_healthanalyzer/Initialize() + . = ..() + if(!internal_bodyscanner) + var/obj/machinery/body_scanconsole/S = new (src) + S.forceMove(src) + S.use_power = FALSE + internal_bodyscanner = S + +/obj/item/device/advanced_healthanalyzer/Destroy() + if(internal_bodyscanner) + QDEL_NULL(internal_bodyscanner) + return ..() + +/obj/item/device/advanced_healthanalyzer/attack(mob/living/M, mob/living/user) + if(!internal_bodyscanner) + return + if(do_after(user, 7 SECONDS, TRUE)) + print_scan(M, user) + add_fingerprint(user) + +/obj/item/device/advanced_healthanalyzer/proc/print_scan(var/mob/M, var/mob/living/user) + var/obj/item/paper/R = new(user.loc) + R.color = "#eeffe8" + R.set_content_unsafe("Scan ([M.name])", internal_bodyscanner.format_occupant_data(get_medical_data(M))) + + if(ishuman(user) && !(user.l_hand && user.r_hand)) + user.put_in_hands(R) + user.visible_message("\The [src] spits out a piece of paper.") + +/obj/item/device/advanced_healthanalyzer/proc/get_medical_data(var/mob/living/carbon/human/H) + if (!ishuman(H)) + return + + var/list/medical_data = list( + "stationtime" = worldtime2text(), + "brain_activity" = H.get_brain_status(), + "blood_volume" = H.get_blood_volume(), + "blood_oxygenation" = H.get_blood_oxygenation(), + "blood_pressure" = H.get_blood_pressure(), + + "bruteloss" = get_severity(H.getBruteLoss(), TRUE), + "fireloss" = get_severity(H.getFireLoss(), TRUE), + "oxyloss" = get_severity(H.getOxyLoss(), TRUE), + "toxloss" = get_severity(H.getToxLoss(), TRUE), + "cloneloss" = get_severity(H.getCloneLoss(), TRUE), + + "rads" = H.total_radiation, + "paralysis" = H.paralysis, + "bodytemp" = H.bodytemperature, + "borer_present" = H.has_brain_worms(), + "inaprovaline_amount" = H.reagents.get_reagent_amount(/datum/reagent/inaprovaline), + "dexalin_amount" = H.reagents.get_reagent_amount(/datum/reagent/dexalin), + "stoxin_amount" = H.reagents.get_reagent_amount(/datum/reagent/soporific), + "bicaridine_amount" = H.reagents.get_reagent_amount(/datum/reagent/bicaridine), + "dermaline_amount" = H.reagents.get_reagent_amount(/datum/reagent/dermaline), + "blood_amount" = H.vessel.get_reagent_amount(/datum/reagent/blood), + "disabilities" = H.sdisabilities, + "lung_ruptured" = H.is_lung_ruptured(), + "external_organs" = H.organs.Copy(), + "internal_organs" = H.internal_organs.Copy(), + "species_organs" = H.species.has_organ + ) + return medical_data diff --git a/code/game/objects/items/weapons/RFD.dm b/code/game/objects/items/weapons/RFD.dm index ed8dd7180cc..6445b5e260f 100644 --- a/code/game/objects/items/weapons/RFD.dm +++ b/code/game/objects/items/weapons/RFD.dm @@ -336,6 +336,7 @@ RFD Construction-Class /obj/item/rfd/construction/mounted/can_use(var/mob/user,var/turf/T) return (user.Adjacent(T) && !user.stat && !user.restrained()) + /* RFD Service-Class */ diff --git a/code/game/objects/items/weapons/circuitboards/machinery/mech_recharger.dm b/code/game/objects/items/weapons/circuitboards/machinery/mech_recharger.dm index a8614345b91..9d226321301 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/mech_recharger.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/mech_recharger.dm @@ -1,5 +1,5 @@ #ifndef T_BOARD -#error T_BOARD macro is not defined but we need it! +#error T_BOARD macro is not defined but we need it! #endif /obj/item/circuitboard/mech_recharger @@ -10,4 +10,13 @@ req_components = list( "/obj/item/stock_parts/capacitor" = 2, "/obj/item/stock_parts/scanning_module" = 1, - "/obj/item/stock_parts/manipulator" = 2) \ No newline at end of file + "/obj/item/stock_parts/manipulator" = 2) + +/obj/item/circuitboard/mech_recharger/hephaestus + name = T_BOARD("hephaestus mech recharger") + build_path = /obj/machinery/mech_recharger/hephaestus + origin_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 3) + req_components = list( + "/obj/item/stock_parts/capacitor" = 3, + "/obj/item/stock_parts/scanning_module" = 2, + "/obj/item/stock_parts/manipulator" = 3) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index fc6ef02a400..51453d59cc7 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -513,3 +513,20 @@ canremove = 0 species_restricted = list(BODYTYPE_VAURCA_BREEDER) sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/back.dmi') + +/obj/item/storage/backpack/service + name = "idris service backpack" + desc = "The infamously Idris Service Standard refers to this monstrous, self-stabilizing back-mounted utensil and service item holder, not anything professional." + icon_state = "idris_backpack" + storage_slots = 6 + max_w_class = ITEMSIZE_LARGE + can_hold = list( + /obj/item/tray, + /obj/item/material/kitchen/utensil/fork, + /obj/item/material/kitchen/utensil/knife, + /obj/item/material/kitchen/utensil/spoon, + /obj/item/material/knife, + /obj/item/material/hatchet/butch, + /obj/item/reagent_containers/food/drinks/drinkingglass, + /obj/item/storage/toolbox/lunchbox/nt + ) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index c5263f700b7..700d6c2dd67 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -118,6 +118,7 @@ new /obj/item/storage/box/inhalers(src) new /obj/item/clothing/glasses/hud/health/aviator(src) new /obj/item/storage/box/fancy/keypouch/med(src) + new /obj/item/device/advanced_healthanalyzer(src) /obj/structure/closet/secure_closet/CMO2 name = "chief medical officer's attire" diff --git a/code/modules/research/designs/circuit/machine_circuits.dm b/code/modules/research/designs/circuit/machine_circuits.dm index 4202af83a46..ee9794afc13 100644 --- a/code/modules/research/designs/circuit/machine_circuits.dm +++ b/code/modules/research/designs/circuit/machine_circuits.dm @@ -56,6 +56,11 @@ req_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/mech_recharger +/datum/design/circuit/machine/heph_mech_recharger + name = "Hephaestus Mech Recharger" + req_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_ENGINEERING = 4) + build_path = /obj/item/circuitboard/mech_recharger/hephaestus + /datum/design/circuit/machine/recharge_station name = "Cyborg Recharge Station" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) diff --git a/code/modules/research/designs/protolathe/tool_designs.dm b/code/modules/research/designs/protolathe/tool_designs.dm index 0e2a6e78f08..3cc1067955f 100644 --- a/code/modules/research/designs/protolathe/tool_designs.dm +++ b/code/modules/research/designs/protolathe/tool_designs.dm @@ -137,4 +137,10 @@ datum/design/item/tool/advanced_light_replacer desc = "A heavily modified RFD, modified to construct pipes and piping accessories." req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 5) materials = list(DEFAULT_WALL_MATERIAL = 3000, MATERIAL_GLASS = 2500, MATERIAL_SILVER = 2500) - build_path = /obj/item/rfd/piping \ No newline at end of file + build_path = /obj/item/rfd/piping + +/datum/design/item/tool/idris_backpack + desc = "The infamously Idris Service Standard refers to this monstrous, self-stabilizing back-mounted utensil and service item holder, not anything professional." + req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2) + materials = list(DEFAULT_WALL_MATERIAL = 1500, MATERIAL_GLASS = 1500) + build_path = /obj/item/storage/backpack/service \ No newline at end of file diff --git a/html/changelogs/alberyk-kotwstuff.yml b/html/changelogs/alberyk-kotwstuff.yml new file mode 100644 index 00000000000..3dac5f68d02 --- /dev/null +++ b/html/changelogs/alberyk-kotwstuff.yml @@ -0,0 +1,6 @@ +author: Alberyk, Kyres1 + +delete-after: True + +changes: + - rscadd: "Added some items related to the end of the King of World Arc and the creation of the SCC; zeng-hu body analyzer, hephaestus exosuit dock, and idris service backpack." diff --git a/icons/mecha/mech_bay.dmi b/icons/mecha/mech_bay.dmi index a45960b58fd..e0e84b955dd 100644 Binary files a/icons/mecha/mech_bay.dmi and b/icons/mecha/mech_bay.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 4e87dc8265f..f62ee282efd 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index abfd28050d3..ae061403f76 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 4ead3dc559c..1f74ee23702 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ