diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 79f7c7fb18c..4b76de95f12 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -615,7 +615,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_ccw_armor - name = "Reactive Armor Booster Module" + name = "Exosuit Impact Cushion Plates" desc = "Exosuit-mounted melee armor booster." id = "mech_ccw_armor" build_type = MECHFAB @@ -636,7 +636,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE /datum/design/mech_proj_armor - name = "Reflective Armor Booster Module" + name = "Exosuit Projectile Shielding" desc = "Exosuit-mounted ranged armor booster." id = "mech_proj_armor" build_type = MECHFAB @@ -656,6 +656,27 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE +/datum/design/mech_emp_armor + name = "Exosuit Ablative Insulation" + desc = "Exosuit-mounted energy and EMP armor booster. WARNING: This retrofit compromises exosuit hull plating stress points." + id = "mech_emp_armor" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/mecha_equipment/armor/antiemp_armor_booster + materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*10,/datum/material/gold=SHEET_MATERIAL_AMOUNT * 2.5) + construction_time = 10 SECONDS + category = list( + RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES, + RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PADDY + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_HONK + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_PHAZON + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT, + RND_CATEGORY_MECHFAB_CLARKE + RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + /datum/design/mech_diamond_drill name = "Diamond Mining Drill" desc = "An upgraded version of the standard drill." diff --git a/code/modules/research/techweb/nodes/mech_nodes.dm b/code/modules/research/techweb/nodes/mech_nodes.dm index bf520b2fc3d..4a7e589ac7e 100644 --- a/code/modules/research/techweb/nodes/mech_nodes.dm +++ b/code/modules/research/techweb/nodes/mech_nodes.dm @@ -109,6 +109,7 @@ design_ids = list( "mech_ccw_armor", "mech_proj_armor", + "mech_emp_armor", "paddyupgrade", "mech_hydraulic_claw", "mech_disabler", diff --git a/code/modules/vehicles/mecha/combat/gygax.dm b/code/modules/vehicles/mecha/combat/gygax.dm index 859ff875d37..85a9362a642 100644 --- a/code/modules/vehicles/mecha/combat/gygax.dm +++ b/code/modules/vehicles/mecha/combat/gygax.dm @@ -54,14 +54,14 @@ MECHA_R_ARM = 1, MECHA_UTILITY = 4, MECHA_POWER = 1, - MECHA_ARMOR = 0, + MECHA_ARMOR = 1, ) equip_by_category = list( MECHA_L_ARM = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot, MECHA_R_ARM = null, MECHA_UTILITY = list(/obj/item/mecha_parts/mecha_equipment/radio, /obj/item/mecha_parts/mecha_equipment/air_tank/full, /obj/item/mecha_parts/mecha_equipment/thrusters/ion), MECHA_POWER = list(), - MECHA_ARMOR = list(), + MECHA_ARMOR = list(/obj/item/mecha_parts/mecha_equipment/armor/antiemp_armor_booster/clandestine), ) destruction_sleep_duration = 20 diff --git a/code/modules/vehicles/mecha/combat/marauder.dm b/code/modules/vehicles/mecha/combat/marauder.dm index 76331dd2e21..aeff67f2f5a 100644 --- a/code/modules/vehicles/mecha/combat/marauder.dm +++ b/code/modules/vehicles/mecha/combat/marauder.dm @@ -21,7 +21,7 @@ MECHA_R_ARM = 1, MECHA_UTILITY = 5, MECHA_POWER = 1, - MECHA_ARMOR = 0, + MECHA_ARMOR = 1, ) bumpsmash = TRUE @@ -45,7 +45,7 @@ MECHA_R_ARM = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack, MECHA_UTILITY = list(/obj/item/mecha_parts/mecha_equipment/radio, /obj/item/mecha_parts/mecha_equipment/air_tank/full, /obj/item/mecha_parts/mecha_equipment/thrusters/ion), MECHA_POWER = list(), - MECHA_ARMOR = list(), + MECHA_ARMOR = list(/obj/item/mecha_parts/mecha_equipment/armor/antiemp_armor_booster/clandestine), ) /obj/vehicle/sealed/mecha/marauder/loaded/populate_parts() @@ -105,14 +105,14 @@ MECHA_R_ARM = 1, MECHA_UTILITY = 5, MECHA_POWER = 1, - MECHA_ARMOR = 0, + MECHA_ARMOR = 1, ) equip_by_category = list( MECHA_L_ARM = /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse, MECHA_R_ARM = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack, MECHA_UTILITY = list(/obj/item/mecha_parts/mecha_equipment/radio, /obj/item/mecha_parts/mecha_equipment/air_tank/full, /obj/item/mecha_parts/mecha_equipment/thrusters/ion), MECHA_POWER = list(), - MECHA_ARMOR = list(), + MECHA_ARMOR = list(/obj/item/mecha_parts/mecha_equipment/armor/antiemp_armor_booster/clandestine), ) /datum/armor/mecha_seraph @@ -140,7 +140,7 @@ MECHA_R_ARM = 1, MECHA_UTILITY = 4, MECHA_POWER = 1, - MECHA_ARMOR = 0, + MECHA_ARMOR = 1, ) equip_by_category = list( MECHA_L_ARM = null, @@ -166,7 +166,7 @@ MECHA_R_ARM = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack, MECHA_UTILITY = list(/obj/item/mecha_parts/mecha_equipment/radio, /obj/item/mecha_parts/mecha_equipment/air_tank/full, /obj/item/mecha_parts/mecha_equipment/thrusters/ion), MECHA_POWER = list(), - MECHA_ARMOR = list(), + MECHA_ARMOR = list(/obj/item/mecha_parts/mecha_equipment/armor/antiemp_armor_booster/clandestine), ) /obj/vehicle/sealed/mecha/marauder/mauler/loaded/Initialize(mapload) diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm index 1373a3b5bd3..10f997022a1 100644 --- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm @@ -165,7 +165,7 @@ return ..() /obj/item/mecha_parts/mecha_equipment/armor/anticcw_armor_booster - name = "Impact Cushion Plates" + name = "exosuit impact cushion plates" desc = "Boosts exosuit armor against melee attacks" icon_state = "mecha_abooster_ccw" iconstate_name = "melee" @@ -176,7 +176,7 @@ melee = 20 /obj/item/mecha_parts/mecha_equipment/armor/antiproj_armor_booster - name = "Projectile Shielding" + name = "exosuit projectile shielding" desc = "Boosts exosuit armor against ranged kinetic and energy projectiles. Completely blocks taser shots." icon_state = "mecha_abooster_proj" iconstate_name = "range" @@ -187,6 +187,36 @@ bullet = 15 laser = 15 +/obj/item/mecha_parts/mecha_equipment/armor/antiemp_armor_booster + name = "exosuit ablative insulation" + desc = "Boosts exosuit armor against energy-based attacks. Also shields the exosuit's internal wiring from hostile EMP attacks. However, this may leave the \ + exosuit slightly more vulnerable to kinetic blows due to taking up valuable hull cushioning." + icon_state = "mecha_abooster_emp" + iconstate_name = "range" + protect_name = "EMP and Energy Armor" + armor_mod = /datum/armor/mecha_equipment_energy_boost + +/datum/armor/mecha_equipment_energy_boost + melee = -5 + bullet = -10 + energy = 15 + +/obj/item/mecha_parts/mecha_equipment/armor/antiemp_armor_booster/attach(obj/vehicle/sealed/mecha/new_mecha, attach_right) + . = ..() + chassis.AddElement(/datum/element/empprotection, EMP_PROTECT_WIRES) + +/obj/item/mecha_parts/mecha_equipment/armor/antiemp_armor_booster/detach(atom/moveto) + chassis.RemoveElement(/datum/element/empprotection, EMP_PROTECT_WIRES) + return ..() + +/obj/item/mecha_parts/mecha_equipment/armor/antiemp_armor_booster/clandestine + name = "exosuit hardened ablative insulation" + desc = "Boosts exosuit armor against energy-based attacks. Also shields the exosuit's internal wiring from hostile EMP attacks." + armor_mod = /datum/armor/mecha_equipment_improved_energy_boost + +/datum/armor/mecha_equipment_improved_energy_boost + energy = 20 + ////////////////////////////////// REPAIR DROID ////////////////////////////////////////////////// diff --git a/icons/obj/devices/mecha_equipment.dmi b/icons/obj/devices/mecha_equipment.dmi index e22b021ae23..e600e2caaa6 100644 Binary files a/icons/obj/devices/mecha_equipment.dmi and b/icons/obj/devices/mecha_equipment.dmi differ