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"