diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 93228c7fee..ca481f0d80 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -26,6 +26,7 @@
"Firefighter",
"Odysseus",
"Gygax",
+ "Medical-Spec Gygax",
"Durand",
"H.O.N.K",
"Phazon",
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 5160282180..34cb57f661 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -642,6 +642,304 @@
user.visible_message("[user] unfastens Gygax Armor Plates.", "You unfasten Gygax Armor Plates.")
return TRUE
+//Begin Medigax
+/datum/component/construction/unordered/mecha_chassis/medigax
+ result = /datum/component/construction/mecha/medigax
+ steps = list(
+ /obj/item/mecha_parts/part/medigax_torso,
+ /obj/item/mecha_parts/part/medigax_left_arm,
+ /obj/item/mecha_parts/part/medigax_right_arm,
+ /obj/item/mecha_parts/part/medigax_left_leg,
+ /obj/item/mecha_parts/part/medigax_right_leg,
+ /obj/item/mecha_parts/part/medigax_head
+ )
+
+/datum/component/construction/mecha/medigax
+ result = /obj/mecha/medical/medigax
+ base_icon = "medigax"
+ steps = list(
+ //1
+ list(
+ "key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are disconnected."
+ ),
+
+ //2
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are connected."
+ ),
+
+ //3
+ list(
+ "key" = /obj/item/stack/cable_coil,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The hydraulic systems are active."
+ ),
+
+ //4
+ list(
+ "key" = TOOL_WIRECUTTER,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is added."
+ ),
+
+ //5
+ list(
+ "key" = /obj/item/circuitboard/mecha/gygax/main,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is adjusted."
+ ),
+
+ //6
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Central control module is installed."
+ ),
+
+ //7
+ list(
+ "key" = /obj/item/circuitboard/mecha/gygax/peripherals,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Central control module is secured."
+ ),
+
+ //8
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Peripherals control module is installed."
+ ),
+
+ //9
+ list(
+ "key" = /obj/item/circuitboard/mecha/gygax/targeting,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Peripherals control module is secured."
+ ),
+
+ //10
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Weapon control module is installed."
+ ),
+
+ //11
+ list(
+ "key" = /obj/item/stock_parts/scanning_module,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Weapon control module is secured."
+ ),
+
+ //12
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Scanner module is installed."
+ ),
+
+ //13
+ list(
+ "key" = /obj/item/stock_parts/capacitor,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Scanner module is secured."
+ ),
+
+ //14
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Capacitor is installed."
+ ),
+
+ //15
+ list(
+ "key" = /obj/item/stock_parts/cell,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Capacitor is secured."
+ ),
+
+ //16
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "The power cell is installed."
+ ),
+
+ //17
+ list(
+ "key" = /obj/item/stack/sheet/metal,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The power cell is secured."
+ ),
+
+ //18
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Internal armor is installed."
+ ),
+
+ //19
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "Internal armor is wrenched."
+ ),
+
+ //20
+ list(
+ "key" = /obj/item/mecha_parts/part/medigax_armor,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_WELDER,
+ "desc" = "Internal armor is welded."
+ ),
+
+ //21
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "External armor is installed."
+ ),
+
+ //22
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "External armor is wrenched."
+ ),
+
+ )
+
+/datum/component/construction/mecha/medigax/action(datum/source, atom/used_atom, mob/user)
+ return check_step(used_atom,user)
+
+/datum/component/construction/mecha/medigax/custom_action(obj/item/I, mob/living/user, diff)
+ if(!..())
+ return FALSE
+
+ switch(index)
+ if(1)
+ user.visible_message("[user] connects [parent] hydraulic systems", "You connect [parent] hydraulic systems.")
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.")
+ else
+ user.visible_message("[user] disconnects [parent] hydraulic systems", "You disconnect [parent] hydraulic systems.")
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].")
+ else
+ user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.")
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].")
+ else
+ user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].")
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
+ else
+ user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].")
+ if(6)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ else
+ user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].")
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ else
+ user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].")
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ else
+ user.visible_message("[user] removes the weapon control module from [parent].", "You remove the weapon control module from [parent].")
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].")
+ else
+ user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the scanner module.", "You secure the scanner module.")
+ else
+ user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].")
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].")
+ else
+ user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.")
+ if(14)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the capacitor.", "You secure the capacitor.")
+ else
+ user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].")
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
+ else
+ user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.")
+ if(16)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ else
+ user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].")
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the internal armor layer to [parent].", "You install the internal armor layer to [parent].")
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
+ else
+ user.visible_message("[user] pries internal armor layer from [parent].", "You pry internal armor layer from [parent].")
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the internal armor layer to [parent].", "You weld the internal armor layer to [parent].")
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ if(20)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].")
+ else
+ user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].")
+ if(21)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures Gygax Armor Plates.", "You secure Medical Gygax Armor Plates.")
+ else
+ user.visible_message("[user] pries Gygax Armor Plates from [parent].", "You pry Medical Gygax Armor Plates from [parent].")
+ if(22)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds Gygax Armor Plates to [parent].", "You weld Medical Gygax Armor Plates to [parent].")
+ else
+ user.visible_message("[user] unfastens Gygax Armor Plates.", "You unfasten Medical Gygax Armor Plates.")
+ return TRUE
+// End Medigax
+
/datum/component/construction/unordered/mecha_chassis/firefighter
result = /datum/component/construction/mecha/firefighter
steps = list(
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index 811ffdef35..14df70438f 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -129,6 +129,47 @@
desc = "A set of armor plates designed for the Gygax. Designed to effectively deflect damage with a lightweight construction."
icon_state = "gygax_armor"
+///////// Medical Gygax
+
+/obj/item/mecha_parts/chassis/medigax
+ name = "\improper Medical Gygax chassis"
+ construct_type = /datum/component/construction/unordered/mecha_chassis/medigax
+
+/obj/item/mecha_parts/part/medigax_torso
+ name = "\improper Medical Gygax torso"
+ desc = "A torso part of Gygax. Contains power unit, processing core and life support systems."
+ icon_state = "medigax_harness"
+
+/obj/item/mecha_parts/part/medigax_head
+ name = "\improper Medical Gygax head"
+ desc = "A Gygax head. Houses advanced surveillance and targeting sensors."
+ icon_state = "medigax_head"
+
+/obj/item/mecha_parts/part/medigax_left_arm
+ name = "\improper Medical Gygax left arm"
+ desc = "A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
+ icon_state = "medigax_l_arm"
+
+/obj/item/mecha_parts/part/medigax_right_arm
+ name = "\improper Medical Gygax right arm"
+ desc = "A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
+ icon_state = "medigax_r_arm"
+
+/obj/item/mecha_parts/part/medigax_left_leg
+ name = "\improper Medical Gygax left leg"
+ desc = "A Gygax left leg. Constructed with advanced servomechanisms and actuators to enable faster speed."
+ icon_state = "medigax_l_leg"
+
+/obj/item/mecha_parts/part/medigax_right_leg
+ name = "\improper Medical Gygax right leg"
+ desc = "A Gygax right leg. Constructed with advanced servomechanisms and actuators to enable faster speed."
+ icon_state = "medigax_r_leg"
+
+/obj/item/mecha_parts/part/medigax_armor
+ gender = PLURAL
+ name = "\improper Medical Gygax armor plates"
+ desc = "A set of armor plates designed for the Gygax. Designed to effectively deflect damage with a lightweight construction."
+ icon_state = "medigax_armor"
//////////// Durand
diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm
index ecf39bcb0b..9175489c89 100644
--- a/code/game/mecha/mecha_wreckage.dm
+++ b/code/game/mecha/mecha_wreckage.dm
@@ -125,6 +125,24 @@
name = "\improper Dark Gygax wreckage"
icon_state = "darkgygax-broken"
+/obj/structure/mecha_wreckage/medigax
+ name = "\improper Medical Gygax wreckage"
+ icon_state = "medigax-broken"
+
+/obj/structure/mecha_wreckage/medigax/Initialize()
+ . = ..()
+ var/list/parts = list(/obj/item/mecha_parts/part/medigax_torso,
+ /obj/item/mecha_parts/part/medigax_head,
+ /obj/item/mecha_parts/part/medigax_left_arm,
+ /obj/item/mecha_parts/part/medigax_right_arm,
+ /obj/item/mecha_parts/part/medigax_left_leg,
+ /obj/item/mecha_parts/part/medigax_right_leg)
+ for(var/i = 0; i < 2; i++)
+ if(parts.len && prob(40))
+ var/part = pick(parts)
+ welder_salvage += part
+ parts -= part
+
/obj/structure/mecha_wreckage/marauder
name = "\improper Marauder wreckage"
icon_state = "marauder-broken"
diff --git a/code/game/mecha/medical/medigax.dm b/code/game/mecha/medical/medigax.dm
new file mode 100644
index 0000000000..98b7c9455b
--- /dev/null
+++ b/code/game/mecha/medical/medigax.dm
@@ -0,0 +1,34 @@
+/obj/mecha/medical/medigax
+ desc = "A Gygax with it's actuator overload stripped and a slick white paint scheme, for medical use, These exosuits are developed and produced by Vey-Med. (© All rights reserved)."
+ name = "\improper Medical Gygax"
+ icon_state = "medigax"
+ step_in = 1.75 // a little faster than an odysseus
+ max_temperature = 25000
+ max_integrity = 250
+ wreckage = /obj/structure/mecha_wreckage/odysseus
+ armor = list("melee" = 25, "bullet" = 20, "laser" = 30, "energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
+ internal_damage_threshold = 35
+ deflect_chance = 15
+ step_energy_drain = 6
+ infra_luminosity = 6
+
+
+/obj/mecha/medical/medigax/moved_inside(mob/living/carbon/human/H)
+ . = ..()
+ if(.)
+ var/datum/atom_hud/hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED]
+ hud.add_hud_to(H)
+
+/obj/mecha/medical/medigax/go_out()
+ if(isliving(occupant))
+ var/mob/living/carbon/human/L = occupant
+ var/datum/atom_hud/hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED]
+ hud.remove_hud_from(L)
+ ..()
+
+/obj/mecha/medical/medigax/mmi_moved_inside(obj/item/mmi/mmi_as_oc, mob/user)
+ . = ..()
+ if(.)
+ var/datum/atom_hud/hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED]
+ var/mob/living/brain/B = mmi_as_oc.brainmob
+ hud.add_hud_to(B)
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index 02d16b8c2e..0268a8695e 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -264,6 +264,79 @@
construction_time = 600
category = list("Gygax")
+//Gygax
+/datum/design/medigax_chassis
+ name = "Exosuit Chassis (\"Medical Gygax\")"
+ id = "medigax_chassis"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/chassis/medigax
+ materials = list(/datum/material/iron=20000)
+ construction_time = 100
+ category = list("Medical-Spec Gygax")
+
+/datum/design/medigax_torso
+ name = "Exosuit Torso (\"Medical Gygax\")"
+ id = "medigax_torso"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/part/medigax_torso
+ materials = list(/datum/material/iron=20000,/datum/material/glass=10000,/datum/material/diamond=2000)
+ construction_time = 300
+ category = list("Medical-Spec Gygax")
+
+/datum/design/medigax_head
+ name = "Exosuit Head (\"Medical Gygax\")"
+ id = "medigax_head"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/part/medigax_head
+ materials = list(/datum/material/iron=10000,/datum/material/glass=5000, /datum/material/diamond=2000)
+ construction_time = 200
+ category = list("Medical-Spec Gygax")
+
+/datum/design/medigax_left_arm
+ name = "Exosuit Left Arm (\"Medical Gygax\")"
+ id = "medigax_left_arm"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/part/medigax_left_arm
+ materials = list(/datum/material/iron=15000, /datum/material/diamond=1000)
+ construction_time = 200
+ category = list("Medical-Spec Gygax")
+
+/datum/design/medigax_right_arm
+ name = "Exosuit Right Arm (\"Medical Gygax\")"
+ id = "medigax_right_arm"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/part/medigax_right_arm
+ materials = list(/datum/material/iron=15000, /datum/material/diamond=1000)
+ construction_time = 200
+ category = list("Medical-Spec Gygax")
+
+/datum/design/medigax_left_leg
+ name = "Exosuit Left Leg (\"Medical Gygax\")"
+ id = "medigax_left_leg"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/part/medigax_left_leg
+ materials = list(/datum/material/iron=15000, /datum/material/diamond=2000)
+ construction_time = 200
+ category = list("Medical-Spec Gygax")
+
+/datum/design/medigax_right_leg
+ name = "Exosuit Right Leg (\"Medical Gygax\")"
+ id = "medigax_right_leg"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/part/medigax_right_leg
+ materials = list(/datum/material/iron=15000, /datum/material/diamond=2000)
+ construction_time = 200
+ category = list("Medical-Spec Gygax")
+
+/datum/design/medigax_armor
+ name = "Exosuit Armor (\"Medical Gygax\")"
+ id = "medigax_armor"
+ build_type = MECHFAB
+ build_path = /obj/item/mecha_parts/part/medigax_armor
+ materials = list(/datum/material/iron=15000,/datum/material/diamond=10000,/datum/material/titanium=10000)
+ construction_time = 600
+ category = list("Medical-Spec Gygax")
+
//Durand
/datum/design/durand_chassis
name = "Exosuit Chassis (\"Durand\")"
diff --git a/code/modules/research/techweb/nodes/mecha_nodes.dm b/code/modules/research/techweb/nodes/mecha_nodes.dm
index 4d1b703cae..2e77f697da 100644
--- a/code/modules/research/techweb/nodes/mecha_nodes.dm
+++ b/code/modules/research/techweb/nodes/mecha_nodes.dm
@@ -42,6 +42,14 @@
"gygax_peri", "gygax_targ", "gygax_armor")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
+/datum/techweb_node/medigax
+ id = "mech_medigax"
+ display_name = "EXOSUIT: Medical-Spec Gygax"
+ description = "Medical-Spec Gygax designs"
+ prereq_ids = list("mech_gygax", "mecha_odysseus")
+ design_ids = list("medigax_chassis", "medigax_torso", "medigax_head", "medigax_left_arm", "medigax_right_arm", "medigax_left_leg", "medigax_right_leg", "medigax_armor")
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
+
/datum/techweb_node/durand
id = "mech_durand"
display_name = "EXOSUIT: Durand"
diff --git a/icons/mecha/mech_construct.dmi b/icons/mecha/mech_construct.dmi
index 6d48367f2a..2ae4a93a2e 100644
Binary files a/icons/mecha/mech_construct.dmi and b/icons/mecha/mech_construct.dmi differ
diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi
index a1ac490f00..1f50346b71 100644
Binary files a/icons/mecha/mech_construction.dmi and b/icons/mecha/mech_construction.dmi differ
diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi
index 4b09f791c3..99103f3ad4 100644
Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 5d1ce52784..1e7423b60f 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -875,6 +875,7 @@
#include "code\game\mecha\equipment\weapons\mecha_ammo.dm"
#include "code\game\mecha\equipment\weapons\weapons.dm"
#include "code\game\mecha\medical\medical.dm"
+#include "code\game\mecha\medical\medigax.dm"
#include "code\game\mecha\medical\odysseus.dm"
#include "code\game\mecha\working\ripley.dm"
#include "code\game\mecha\working\working.dm"