diff --git a/code/modules/heavy_vehicle/components/software.dm b/code/modules/heavy_vehicle/components/software.dm index 891fa32df81..56dd68a7d57 100644 --- a/code/modules/heavy_vehicle/components/software.dm +++ b/code/modules/heavy_vehicle/components/software.dm @@ -29,6 +29,6 @@ name = T_BOARD_MECHA("ballistic weapon systems") contains_software = list(MECH_SOFTWARE_WEAPONS) icon_state = "mainboard" - origin_tech = list(TECH_DATA = 4, TECH_COMBAT = 3) + origin_tech = list(TECH_DATA = 3, TECH_COMBAT = 3) #undef T_BOARD_MECHA \ No newline at end of file diff --git a/code/modules/heavy_vehicle/equipment/medical.dm b/code/modules/heavy_vehicle/equipment/medical.dm index 09f7ed6bd8c..fe4d4e5b9c8 100644 --- a/code/modules/heavy_vehicle/equipment/medical.dm +++ b/code/modules/heavy_vehicle/equipment/medical.dm @@ -229,6 +229,7 @@ L.adjustOxyLoss(oxy_heal * -1) L.adjustCloneLoss(clone_heal * -1) L.adjustHalLoss(hal_heal * -1) + L.add_chemical_effect(CE_PAINKILLER, 50) //Pain is bad :( if(ishuman(L) && bone_heal) var/mob/living/carbon/human/H = L @@ -263,6 +264,73 @@ restricted_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND) restricted_software = list(MECH_SOFTWARE_MEDICAL) +/obj/item/device/healthanalyzer/mech //Used to set up the full body scan feature + var/obj/machinery/body_scanconsole/internal_bodyscanner = null + var/fullScan = FALSE //Toggle whether to do full or basic scan + +/obj/item/device/healthanalyzer/mech/Initialize() + . = ..() + internal_bodyscanner = new /obj/machinery/body_scanconsole(src) + internal_bodyscanner.use_power = FALSE + +/obj/item/mecha_equipment/mounted_system/medanalyzer/CtrlClick(mob/user) + var/obj/item/device/healthanalyzer/mech/HA = holding + if(istype(HA)) + HA.fullScan = !HA.fullScan + to_chat(user, SPAN_NOTICE("You switch to \the [src]'s [HA.fullScan ? "full body" : "basic"] scan mode.")) + /obj/item/device/healthanalyzer/mech/attack(mob/living/M, var/mob/living/heavy_vehicle/user) - for(var/mob/pilot in user.pilots) - health_scan_mob(M, pilot, TRUE, TRUE) + if(!fullScan) + for(var/mob/pilot in user.pilots) + health_scan_mob(M, pilot, TRUE, TRUE) + else + user.visible_message("[user] starts scanning \the [M] with \the [src].", SPAN_NOTICE("You start scanning \the [M] with \the [src].")) + if(do_after(user, 7 SECONDS, TRUE)) + print_scan(M, user) + add_fingerprint(user) + +/obj/item/device/healthanalyzer/mech/proc/print_scan(var/mob/M, var/mob/living/user) + var/obj/item/paper/medscan/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(SPAN_NOTICE("\The [src] spits out a piece of paper.")) + +/obj/item/device/healthanalyzer/mech/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" = REAGENT_VOLUME(H.reagents, /decl/reagent/inaprovaline), + "dexalin_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/dexalin), + "stoxin_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/soporific), + "bicaridine_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/bicaridine), + "dermaline_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/dermaline), + "thetamycin_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/thetamycin), + "blood_amount" = REAGENT_VOLUME(H.vessel, /decl/reagent/blood), + "disabilities" = H.sdisabilities, + "lung_ruptured" = H.is_lung_ruptured(), + "lung_rescued" = H.is_lung_rescued(), + "external_organs" = H.organs.Copy(), + "internal_organs" = H.internal_organs.Copy(), + "species_organs" = H.species.has_organ + ) + return medical_data diff --git a/code/modules/research/designs/mechfab/mechs/designs_exosuit_equipment.dm b/code/modules/research/designs/mechfab/mechs/designs_exosuit_equipment.dm index 7b279a9fc56..781163536f8 100644 --- a/code/modules/research/designs/mechfab/mechs/designs_exosuit_equipment.dm +++ b/code/modules/research/designs/mechfab/mechs/designs_exosuit_equipment.dm @@ -33,7 +33,7 @@ /datum/design/item/mechfab/exosuit_equipment/ion name = "Mounted Ion Rifle" - materials = list(DEFAULT_WALL_MATERIAL = 10000) + materials = list(DEFAULT_WALL_MATERIAL = 10000, MATERIAL_GOLD = 3000, MATERIAL_URANIUM = 3000, MATERIAL_PHORON = 3000) req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4) build_path = /obj/item/mecha_equipment/mounted_system/combat/ion @@ -46,7 +46,7 @@ /datum/design/item/mechfab/exosuit_equipment/rcd name = "Mounted RFD-C" time = 90 - materials = list(DEFAULT_WALL_MATERIAL = 30000, MATERIAL_PHORON = 25000, DEFAULT_WALL_MATERIAL = 15000, MATERIAL_GOLD = 15000) + materials = list(DEFAULT_WALL_MATERIAL = 30000, MATERIAL_PHORON = 8000, DEFAULT_WALL_MATERIAL = 15000, MATERIAL_GOLD = 10000) req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_POWER = 4, TECH_ENGINEERING = 4) build_path = /obj/item/mecha_equipment/mounted_system/rfd @@ -76,7 +76,7 @@ name = "Mounted Flashbang Launcher" req_tech = list(TECH_COMBAT = 3) build_path = /obj/item/mecha_equipment/mounted_system/combat/grenadeflash - materials = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_GOLD = 6000, MATERIAL_PHORON = 6000) + materials = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_GOLD = 3000, MATERIAL_SILVER = 3000) /datum/design/item/mechfab/exosuit_equipment/cleaner name = "Mounted Cleaner Grenade Launcher" @@ -88,7 +88,7 @@ name = "Mounted Crisis Drone" build_path = /obj/item/mecha_equipment/crisis_drone req_tech = list(TECH_MAGNET = 3, TECH_DATA = 3, TECH_BIO = 3) - materials = list(DEFAULT_WALL_MATERIAL = 10000, MATERIAL_GOLD = 1000, MATERIAL_SILVER = 2000, MATERIAL_GLASS = 5000) + materials = list(DEFAULT_WALL_MATERIAL = 10000, MATERIAL_GLASS = 5000, MATERIAL_GOLD = 1000, MATERIAL_SILVER = 2000) /datum/design/item/mechfab/exosuit_equipment/analyzer name = "Mounted Health Analyzer" diff --git a/code/modules/research/designs/mechfab/mechs/designs_exosuits.dm b/code/modules/research/designs/mechfab/mechs/designs_exosuits.dm index 65d483d2aff..d46618b42da 100644 --- a/code/modules/research/designs/mechfab/mechs/designs_exosuits.dm +++ b/code/modules/research/designs/mechfab/mechs/designs_exosuits.dm @@ -145,7 +145,7 @@ /datum/design/item/mechfab/exosuit/heavy_head name = "Heavy Exosuit Sensors" time = 35 - materials = list(DEFAULT_WALL_MATERIAL = 12000, MATERIAL_PHORON = 12500, MATERIAL_SILVER = 10000, MATERIAL_GOLD = 10000) + materials = list(DEFAULT_WALL_MATERIAL = 12000, MATERIAL_URANIUM = 7000, MATERIAL_SILVER = 7000, MATERIAL_GOLD = 7000) build_path = /obj/item/mech_component/sensors/heavy req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4) @@ -159,14 +159,14 @@ /datum/design/item/mechfab/exosuit/heavy_arms name = "Heavy Exosuit Manipulators" time = 35 - materials = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_PHORON = 12500, MATERIAL_SILVER = 10000, MATERIAL_GOLD = 10000) + materials = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_URANIUM = 5000, MATERIAL_SILVER = 5000, MATERIAL_GOLD = 5000) build_path = /obj/item/mech_component/manipulators/heavy req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4) /datum/design/item/mechfab/exosuit/heavy_legs name = "Heavy Exosuit Motivators" time = 35 - materials = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_PHORON = 12500, MATERIAL_SILVER = 10000, MATERIAL_GOLD = 10000) + materials = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_URANIUM = 5000, MATERIAL_SILVER = 5000, MATERIAL_GOLD = 5000) build_path = /obj/item/mech_component/propulsion/heavy req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4) @@ -200,5 +200,4 @@ name = "Armored Treads" time = 35 materials = list(DEFAULT_WALL_MATERIAL = 25000) - build_path = /obj/item/mech_component/propulsion/tracks - req_tech = list(TECH_MATERIAL = 4) \ No newline at end of file + build_path = /obj/item/mech_component/propulsion/tracks \ No newline at end of file diff --git a/html/changelogs/Ben10083 - Exosuits.yml b/html/changelogs/Ben10083 - Exosuits.yml new file mode 100644 index 00000000000..808effb9459 --- /dev/null +++ b/html/changelogs/Ben10083 - Exosuits.yml @@ -0,0 +1,20 @@ +# Your name. +author: Ben10083 + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - balance: "Increased cost of exosuit Ion Rifle so it now requires rare material such as phoron instead of only requiring steel." + - balance: "Made exosuit flashbang launcher easier to produce by changing material requirements." + - balance: "Made exosuit RCD easier to produce by reducing phoron cost." + - balance: "Reduced Exosuit Combat Circuit tech cost so it is available at round start." + - balance: "Removed phoron requirement from heavy mech construction." + - tweak: "Removed tech requirement from exosuit treads." + - rscadd: "Exosuit health analyzer can now switch between basic and full body scans." + - rscadd: "Exosuit crisis drone now nullifies some of the pain of the target."