From ff9ec4943b4d08c7d3ee25844fbdaa42cd11ab4f Mon Sep 17 00:00:00 2001 From: Aaron Date: Mon, 20 Jan 2020 19:28:16 -0500 Subject: [PATCH] New Mech "Scarab"! Plus a bunch of mech fixes Adds a new mech the "Scarab"! A fast scout mech with terrible armor and health and equipment slots, but it's fast! Ideal for enter a conflict, scouting, maybe taking a pot shot and and then BUGGERING off. Bug fixes: -Fixes Polecat armor to plasteel exploit and makes the polecat actually use up the armor. -Fixes the Serenity eating entire stacks of plasteel and giving gygax armor plates when you try to get it back. -Fixes the Phoron bore to HOPEFULLY show up in the mechfab in the server. --- code/game/mecha/combat/scarab_ch.dm | 20 ++ .../mecha/equipment/tools/phoron_bore_ch.dm | 2 + code/game/mecha/mecha_construction_paths.dm | 5 +- .../game/mecha/mecha_construction_paths_ch.dm | 278 ++++++++++++++++++ code/game/mecha/mecha_parts_ch.dm | 50 ++++ code/game/mecha/mecha_wreckage_ch.dm | 6 + .../micro/mecha_construction_paths_vr.dm | 4 +- .../items/weapons/circuitboards/mecha_ch.dm | 21 ++ .../research/designs/circuits/circuits_ch.dm | 21 ++ code/modules/research/mechfab_designs_ch.dm | 67 ++++- icons/mecha/mech_construct_ch.dmi | Bin 0 -> 674 bytes icons/mecha/mech_construction_ch.dmi | Bin 0 -> 1854 bytes icons/mecha/mecha_ch.dmi | Bin 684 -> 690 bytes vorestation.dme | 5 + 14 files changed, 462 insertions(+), 17 deletions(-) create mode 100644 code/game/mecha/combat/scarab_ch.dm create mode 100644 code/game/mecha/mecha_construction_paths_ch.dm create mode 100644 code/game/mecha/mecha_parts_ch.dm create mode 100644 code/game/mecha/mecha_wreckage_ch.dm create mode 100644 code/game/objects/items/weapons/circuitboards/mecha_ch.dm create mode 100644 icons/mecha/mech_construct_ch.dmi create mode 100644 icons/mecha/mech_construction_ch.dmi diff --git a/code/game/mecha/combat/scarab_ch.dm b/code/game/mecha/combat/scarab_ch.dm new file mode 100644 index 0000000000..2c4f3cf3cb --- /dev/null +++ b/code/game/mecha/combat/scarab_ch.dm @@ -0,0 +1,20 @@ +//ChompEdit - Making use of unused assets. +/obj/mecha/combat/scarab + desc = "A very speedy and cramped quadredped combat mech designed for recon operations." + name = "Scarab" + icon_state = "scarab_militia" + initial_icon = "scarab_militia" + step_in = 2 // Four legs means FAST AS FUCK BOI + dir_in = 1 //Facing North. + opacity = 0 + health = 250 + maxhealth = 250 + deflect_chance = 10 + damage_absorption = list("brute"=0.8,"fire"=1,"bullet"=0.8,"laser"=0.8,"energy"=1,"bomb"=1) + max_temperature = 20000 + infra_luminosity = 6 + + wreckage = /obj/effect/decal/mecha_wreckage/scarab + + max_hull_equip = 1 + max_weapon_equip = 1 \ No newline at end of file diff --git a/code/game/mecha/equipment/tools/phoron_bore_ch.dm b/code/game/mecha/equipment/tools/phoron_bore_ch.dm index 55665356d8..a41c1fca15 100644 --- a/code/game/mecha/equipment/tools/phoron_bore_ch.dm +++ b/code/game/mecha/equipment/tools/phoron_bore_ch.dm @@ -10,4 +10,6 @@ projectile = /obj/item/projectile/bullet/magnetic/bore fire_sound = 'sound/weapons/railgun.ogg' + equip_type = EQUIP_UTILITY + origin_tech = list(TECH_MATERIAL = 5, TECH_PHORON = 5, TECH_POWER = 5) diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 3cbe670a41..f509c8ac26 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -818,7 +818,7 @@ if(3) if(diff==FORWARD) user.visible_message("[user] installs the external armor layer to [holder].", "You install the external armor layer to [holder].") - qdel(I) + //CHOMPedit. Prevents Sereniy from eating entire stacks of plasteel. holder.icon_state = "gygax18" else user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") @@ -829,7 +829,8 @@ holder.icon_state = "gygax19-s" else user.visible_message("[user] pries the external armor layer from [holder].", "You pry the external armor layer from [holder].") - new /obj/item/mecha_parts/part/gygax_armour(get_turf(holder)) + var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder)) //CHOMPedit, Fixes serenity giving Gygax Armor Plates for the reverse action... + MS.amount = 5 holder.icon_state = "gygax17" if(1) if(diff==FORWARD) diff --git a/code/game/mecha/mecha_construction_paths_ch.dm b/code/game/mecha/mecha_construction_paths_ch.dm new file mode 100644 index 0000000000..8d9ce06602 --- /dev/null +++ b/code/game/mecha/mecha_construction_paths_ch.dm @@ -0,0 +1,278 @@ +/datum/construction/mecha/scarab_chassis + steps = list(list("key"=/obj/item/mecha_parts/part/scarab_torso),//1 + list("key"=/obj/item/mecha_parts/part/scarab_left_arm),//2 + list("key"=/obj/item/mecha_parts/part/scarab_right_arm),//3 + list("key"=/obj/item/mecha_parts/part/scarab_left_legs),//4 + list("key"=/obj/item/mecha_parts/part/scarab_right_legs),//5 + list("key"=/obj/item/mecha_parts/part/scarab_head) + ) + +/datum/construction/mecha/scarab_chassis/custom_action(step, obj/item/I, mob/user) + user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder]") + holder.overlays += I.icon_state + qdel(I) + return 1 + +/datum/construction/mecha/scarab_chassis/action(obj/item/I,mob/user as mob) + return check_all_steps(I,user) + +/datum/construction/mecha/scarab_chassis/spawn_result() + var/obj/item/mecha_parts/chassis/const_holder = holder + const_holder.construct = new /datum/construction/reversible/mecha/scarab(const_holder) + const_holder.icon = 'icons/mecha/mech_construction_ch.dmi' + const_holder.icon_state = "scarab_chassis_complete" + const_holder.density = 1 + spawn() + qdel(src) + return + + +/datum/construction/reversible/mecha/scarab + result = "/obj/mecha/combat/scarab" + steps = list( + //1 + list("key"=/obj/item/weapon/weldingtool, + "backkey"=IS_WRENCH, + "desc"="External armor is wrenched."), + //2 + list("key"=IS_WRENCH, + "backkey"=IS_CROWBAR, + "desc"="External armor is installed."), + //3 + list("key"=/obj/item/stack/material/plasteel, + "backkey"=/obj/item/weapon/weldingtool, + "desc"="Internal armor is welded."), + //4 + list("key"=/obj/item/weapon/weldingtool, + "backkey"=IS_WRENCH, + "desc"="Internal armor is wrenched"), + //5 + list("key"=IS_WRENCH, + "backkey"=IS_CROWBAR, + "desc"="Internal armor is installed"), + //6 + list("key"=/obj/item/stack/material/steel, + "backkey"=IS_SCREWDRIVER, + "desc"="Advanced capacitor is secured"), + //7 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="Advanced capacitor is installed"), + //8 + list("key"=/obj/item/weapon/stock_parts/capacitor/adv, + "backkey"=IS_SCREWDRIVER, + "desc"="Advanced scanner module is secured"), + //9 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="Advanced scanner module is installed"), + //10 + list("key"=/obj/item/weapon/stock_parts/scanning_module/adv, + "backkey"=IS_SCREWDRIVER, + "desc"="Targeting module is secured"), + //11 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="Targeting module is installed"), + //12 + list("key"=/obj/item/weapon/circuitboard/mecha/scarab/targeting, + "backkey"=IS_SCREWDRIVER, + "desc"="Peripherals control module is secured"), + //13 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="Peripherals control module is installed"), + //14 + list("key"=/obj/item/weapon/circuitboard/mecha/scarab/peripherals, + "backkey"=IS_SCREWDRIVER, + "desc"="Central control module is secured"), + //15 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="Central control module is installed"), + //16 + list("key"=/obj/item/weapon/circuitboard/mecha/scarab/main, + "backkey"=IS_SCREWDRIVER, + "desc"="The wiring is adjusted"), + //17 + list("key"=/obj/item/weapon/tool/wirecutters, + "backkey"=IS_SCREWDRIVER, + "desc"="The wiring is added"), + //18 + list("key"=/obj/item/stack/cable_coil, + "backkey"=IS_SCREWDRIVER, + "desc"="The hydraulic systems are active."), + //19 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_WRENCH, + "desc"="The hydraulic systems are connected."), + //20 + list("key"=IS_WRENCH, + "desc"="The hydraulic systems are disconnected.") + ) + +/datum/construction/reversible/mecha/scarab/action(obj/item/I,mob/user as mob) + return check_step(I,user) + +/datum/construction/reversible/mecha/scarab/custom_action(index, diff, obj/item/I, mob/user) + if(!..()) + return 0 + + switch(index) + if(20) + user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.") + holder.icon_state = "scarab_chassis_complete" + if(19) + if(diff==FORWARD) + user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.") + holder.icon_state = "scarab_chassis_complete" + else + user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.") + holder.icon_state = "scarab_chassis_complete" + if(18) + if(diff==FORWARD) + user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].") + holder.icon_state = "scarab_wire1" + else + user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.") + holder.icon_state = "scarab_chassis_complete" + if(17) + if(diff==FORWARD) + user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].") + holder.icon_state = "scarab_wire2" + else + user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].") + var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder)) + coil.amount = 4 + holder.icon_state = "scarab_chassis_complete" + if(16) + if(diff==FORWARD) + user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].") + qdel(I) + holder.icon_state = "scarab_chip1" + else + user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].") + holder.icon_state = "scarab_wire1" + if(15) + if(diff==FORWARD) + user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + holder.icon_state = "scarab_chip1" + else + user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].") + new /obj/item/weapon/circuitboard/mecha/scarab/main(get_turf(holder)) + holder.icon_state = "scarab_wire2" + if(14) + if(diff==FORWARD) + user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") + qdel(I) + holder.icon_state = "scarab_chip2" + else + user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + holder.icon_state = "scarab_chip1" + if(13) + if(diff==FORWARD) + user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + holder.icon_state = "scarab_chip2" + else + user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].") + new /obj/item/weapon/circuitboard/mecha/scarab/peripherals(get_turf(holder)) + holder.icon_state = "scarab_chip1" + if(12) + if(diff==FORWARD) + user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].") + qdel(I) + holder.icon_state = "scarab_chip3" + else + user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "scarab_chip1" + if(11) + if(diff==FORWARD) + user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.") + holder.icon_state = "scarab_chip3" + else + user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].") + new /obj/item/weapon/circuitboard/mecha/scarab/targeting(get_turf(holder)) + holder.icon_state = "scarab_chip2" + if(10) + if(diff==FORWARD) + user.visible_message("[user] installs advanced scanner module to [holder].", "You install advanced scanner module to [holder].") + qdel(I) + holder.icon_state = "scarab_chip4" + else + user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.") + holder.icon_state = "scarab_chip3" + if(9) + if(diff==FORWARD) + user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.") + holder.icon_state = "scarab_chip4" + else + user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].") + new /obj/item/weapon/stock_parts/scanning_module/adv(get_turf(holder)) + holder.icon_state = "scarab_chip3" + if(8) + if(diff==FORWARD) + user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].") + qdel(I) + holder.icon_state = "scarab_chip5" + else + user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.") + holder.icon_state = "scarab_chip3" + if(7) + if(diff==FORWARD) + user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.") + holder.icon_state = "scarab_chip5" + else + user.visible_message("[user] removes the advanced capacitor from [holder].", "You remove the advanced capacitor from [holder].") + new /obj/item/weapon/stock_parts/capacitor/adv(get_turf(holder)) + holder.icon_state = "scarab_chip5" + if(6) + if(diff==FORWARD) + user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].") + holder.icon_state = "scarab_chip5" + else + user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.") + holder.icon_state = "scarab_chip4" + if(5) + if(diff==FORWARD) + user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.") + holder.icon_state = "scarab_chip5" + else + user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].") + var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder)) + MS.amount = 5 + holder.icon_state = "scarab_chip5" + if(4) + if(diff==FORWARD) + user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].") + holder.icon_state = "scarab_weld1" + else + user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + holder.icon_state = "scarab_chip5" + if(3) + if(diff==FORWARD) + user.visible_message("[user] installs external armour layers to [holder].", "You install the external armor layer to [holder].") + holder.icon_state = "scarab_weld2" + else + user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") + holder.icon_state = "scarab_chip5" + if(2) + if(diff==FORWARD) + user.visible_message("[user] secures external armor layer.", "You secure the external armor layer.") + holder.icon_state = "scarab_weld2" + else + user.visible_message("[user] pries the external armor layer from [holder].", "You pry external armor layer from [holder].") + var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder)) + MS.amount = 5 + holder.icon_state = "scarab_weld1" + if(1) + if(diff==FORWARD) + user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].") + else + user.visible_message("[user] unfastens external armor layer.", "You unfasten the external armor layer.") + holder.icon_state = "scarab_weld2" + return 1 + +/datum/construction/reversible/mecha/scarab/spawn_result() + ..() + feedback_inc("mecha_scarab_created",1) + return \ No newline at end of file diff --git a/code/game/mecha/mecha_parts_ch.dm b/code/game/mecha/mecha_parts_ch.dm new file mode 100644 index 0000000000..ad61572d22 --- /dev/null +++ b/code/game/mecha/mecha_parts_ch.dm @@ -0,0 +1,50 @@ +/obj/item/mecha_parts/chassis/scarab + name = "Scarab Chassis" + icon = 'icons/mecha/mech_construct_ch.dmi' + icon_state = "scarab_chassis" + + New() + ..() + construct = new /datum/construction/mecha/scarab_chassis(src) + +/obj/item/mecha_parts/part/scarab_torso + name="Scarab Torso" + desc="A torso part of Scarab. Contains power unit, processing core and life support systems." + icon = 'icons/mecha/mech_construct_ch.dmi' + icon_state = "scarab_torso" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 4, TECH_ENGINEERING = 3) + +/obj/item/mecha_parts/part/scarab_head + name="Scarab Head" + desc="A Scarab head. Houses advanced surveilance and target marking equipment." + icon = 'icons/mecha/mech_construct_ch.dmi' + icon_state = "scarab_head" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3) + +/obj/item/mecha_parts/part/scarab_left_arm + name="Scarab Left Arm" + desc="A Scarab left arm. Data and power sockets are compatible with most exosuit tools and weapons." + icon = 'icons/mecha/mech_construct_ch.dmi' + icon_state = "scarab_l_arm" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3) + +/obj/item/mecha_parts/part/scarab_right_arm + name="Scarab Right Arm" + desc="A Scarab right arm. Data and power sockets are compatible with most exosuit tools and weapons." + icon = 'icons/mecha/mech_construct_ch.dmi' + icon_state = "scarab_r_arm" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3) + +/obj/item/mecha_parts/part/scarab_left_legs + name="Scarab Left Legs" + desc="A powerful, yet lightweight, pair of legs." + icon = 'icons/mecha/mech_construct_ch.dmi' + icon_state = "scarab_l_legs" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3) + +/obj/item/mecha_parts/part/scarab_right_legs + name="Scarab Right Legs" + desc="A powerful, yet lightweight, pair of legs." + icon = 'icons/mecha/mech_construct_ch.dmi' + icon_state = "scarab_r_legs" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3) diff --git a/code/game/mecha/mecha_wreckage_ch.dm b/code/game/mecha/mecha_wreckage_ch.dm new file mode 100644 index 0000000000..1da40d538d --- /dev/null +++ b/code/game/mecha/mecha_wreckage_ch.dm @@ -0,0 +1,6 @@ + +/obj/effect/decal/mecha_wreckage/scarab + name = "Scarab Wreckage" + icon = 'icons/mecha/mecha_ch.dmi' + icon_state = "scarab_militia-broken" + desc = "Wasn't fast enough..." \ No newline at end of file diff --git a/code/game/mecha/micro/mecha_construction_paths_vr.dm b/code/game/mecha/micro/mecha_construction_paths_vr.dm index 6857d7b1c4..83c6b38bc1 100644 --- a/code/game/mecha/micro/mecha_construction_paths_vr.dm +++ b/code/game/mecha/micro/mecha_construction_paths_vr.dm @@ -253,6 +253,7 @@ if(3) if(diff==FORWARD) user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].") + qdel(used_atom)//CHOMPedit. Fixes polecat not useing it's armor plates up. holder.icon_state = "polecat18" else user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") @@ -263,8 +264,7 @@ holder.icon_state = "polecat19" else user.visible_message("[user] pries external armor layer from [holder].", "You prie external armor layer from [holder].") - var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder)) - MS.amount = 5 + new /obj/item/mecha_parts/micro/part/polecat_armour(get_turf(holder))//CHOMPedit, actually gives you the polecat's armored plates back instead of plasteel. holder.icon_state = "polecat17" if(1) if(diff==FORWARD) diff --git a/code/game/objects/items/weapons/circuitboards/mecha_ch.dm b/code/game/objects/items/weapons/circuitboards/mecha_ch.dm new file mode 100644 index 0000000000..b44e45869e --- /dev/null +++ b/code/game/objects/items/weapons/circuitboards/mecha_ch.dm @@ -0,0 +1,21 @@ +#ifdef T_BOARD_CHMecha +#error T_BOARD_CHMECHA already defined elsewhere, we can't use it. +#endif +#define T_BOARD_CHMECHA(name) "exosuit module circuit board (" + (name) + ")" +//renaming CHmecha for Chomp mecha to allow for more to be made if needed. + +/obj/item/weapon/circuitboard/mecha/scarab + origin_tech = list(TECH_DATA = 4) + +/obj/item/weapon/circuitboard/mecha/scarab/peripherals + name = T_BOARD_CHMECHA("Scarab peripherals control") + icon_state = "mcontroller" + +/obj/item/weapon/circuitboard/mecha/scarab/targeting + name = T_BOARD_CHMECHA("Scarab weapon control and targeting") + icon_state = "mcontroller" + origin_tech = list(TECH_DATA = 4, TECH_COMBAT = 4) + +/obj/item/weapon/circuitboard/mecha/scarab/main + name = T_BOARD_CHMECHA("Scarab central control") + icon_state = "mainboard" diff --git a/code/modules/research/designs/circuits/circuits_ch.dm b/code/modules/research/designs/circuits/circuits_ch.dm index d06824799e..68d9ca3cf8 100644 --- a/code/modules/research/designs/circuits/circuits_ch.dm +++ b/code/modules/research/designs/circuits/circuits_ch.dm @@ -4,3 +4,24 @@ req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4) build_path = /obj/item/weapon/circuitboard/microwave/advanced sort_string = "MAAAC" + +/datum/design/circuit/mecha/scarab_main + name = "'Scarab' central control" + id = "scarab_main" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/mecha/scarab/main + sort_string = "SAAAA" + +/datum/design/circuit/mecha/scarab_peri + name = "'scarab' peripherals control" + id = "scarab_peri" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/mecha/scarab/peripherals + sort_string = "SAAAB" + +/datum/design/circuit/mecha/scarab_targ + name = "'Scarab' weapon control and targeting" + id = "scarab_targ" + req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) + build_path = /obj/item/weapon/circuitboard/mecha/scarab/targeting + sort_string = "SAAAC" \ No newline at end of file diff --git a/code/modules/research/mechfab_designs_ch.dm b/code/modules/research/mechfab_designs_ch.dm index f7bb85aa72..b8c2ee9415 100644 --- a/code/modules/research/mechfab_designs_ch.dm +++ b/code/modules/research/mechfab_designs_ch.dm @@ -1,18 +1,59 @@ - -/datum/design/item/mecha - build_type = MECHFAB - category = "Exosuit Equipment" - time = 10 - materials = list(DEFAULT_WALL_MATERIAL = 7500) - -/datum/design/item/mecha/AssembleDesignDesc() - if(!desc) - desc = "Allows for the construction of \a '[item_name]' exosuit module." - /datum/design/item/mecha/phoron_bore name = "PB-23 \"Phobos\" Phoron Bore" - desc = "A large, mecha-mounted Phoron bore. It makes use a specialized compressed phoron crystal. The bolt it fires travels for 6 tiles before disapaiting, breaking rocks and extracting minerals." + category = "Exosuit Equipment" id ="mech_phoron_bore" req_tech = list(TECH_POWER = 5, TECH_PHORON = 5, TECH_MATERIAL = 5) materials = list(MAT_PLASTEEL = 4000, "phoron" = 10000, "silver" = 2000) - build_path =/obj/item/mecha_parts/mecha_equipment/weapon/phoron_bore \ No newline at end of file + build_path =/obj/item/mecha_parts/mecha_equipment/weapon/phoron_bore + +/datum/design/item/mechfab/scarab + category = "Scarab" + +/datum/design/item/mechfab/scarab/chassis + name = "Scarab Chassis" + id = "scarab_chassis" + build_path = /obj/item/mecha_parts/chassis/scarab + time = 10 + materials = list(DEFAULT_WALL_MATERIAL = 15000) + +/datum/design/item/mechfab/scarab/torso + name = "Scarab Torso" + id = "scarab_torso" + build_path = /obj/item/mecha_parts/part/scarab_torso + time = 30 + materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 10000) + +/datum/design/item/mechfab/scarab/head + name = "Scarab Head" + id = "scarab_head" + build_path = /obj/item/mecha_parts/part/scarab_head + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 5000) + +/datum/design/item/mechfab/scarab/left_arm + name = "Scarab Left Arm" + id = "scarab_left_arm" + build_path = /obj/item/mecha_parts/part/scarab_left_arm + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 10000) + +/datum/design/item/mechfab/scarab/right_arm + name = "Scarab Right Arm" + id = "scarab_right_arm" + build_path = /obj/item/mecha_parts/part/scarab_right_arm + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 10000) + +/datum/design/item/mechfab/scarab/left_leg + name = "Scarab Left Legs" + id = "scarab_left_legs" + build_path = /obj/item/mecha_parts/part/scarab_left_legs + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 30000) + +/datum/design/item/mechfab/scarab/right_leg + name = "Scarab Right Legs" + id = "scarab_right_legs" + build_path = /obj/item/mecha_parts/part/scarab_right_legs + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 30000) \ No newline at end of file diff --git a/icons/mecha/mech_construct_ch.dmi b/icons/mecha/mech_construct_ch.dmi new file mode 100644 index 0000000000000000000000000000000000000000..fdeb04725c2d320e9554110173e4cd5042a0f686 GIT binary patch literal 674 zcmV;T0$u%yP)R0d!JMQvg8b*k%9#0G4`G zSad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1O} z0oTF+9e8xi8DemXlMdP}UJ?-7j^a0(@p^RN=|aGA^Jm7#X0+6b1E6BSj`FxM+>F*G zVAlafTup)UlA1GwLxA;daX`GW!s3dX#r?8}Py;YZ06bvZDzRnXmMhLoEYJ6Xc?AgO zzQ;3*1TU2S2!MoAzglPpaE%$O_Q2Ax5RkecUHpCs0U{e9{|5E!8eg;!1LRE?`pI1$ z5A76)3cy_mfv!~pbel^$1?qd4)|E6BxcM6uC8-&ZkFL3C4!BkcG+!$poMU1JSKSXS zbh;lJMY8>%BY?wxXb<$VPwN7cf$s-YN$Gw-08&y2oh|kT^@AWr`M2*+H9t0DCCkYq z_(TAVemzr67kx(Q*?+P>wM$lej9+2N3U{x&{SKEwO6ouA7l?^hz+~P)eo3ug|@Os+2N zwd+-L>*NcFahcUw)rX@L8(Qx|sY)pv;M4iNu-6_!%-Cqs_rW;Lj69fST1W7ZNnw#V z5QP*E(i80YcW#5xmeDX06e)1D**ILI%^x_)T&2Ku3Vcer^WOz?)%MNz`)|M^nC$;+ z)`|cC1&c{UK~!jg?OAJgn>Y{!WAMmin?;Bwi-?=1yUt>p^p!Y0{Qn=eGm_04%iW-J z^1*X3Sh||gWi$fc#BnZmv5UPgbJ1-28}S+1sS%zx_uk-dz+J?Be>Mw(u@UnH+9-pj zKm3pQE@Oz(h!K*DO|BnyX;WZu~ z{_HZq!Jz#?`9sGa0-*Sy;{(N~uG#`jOBA>&1WxZ_1G^e?FBT5xI6p^=udg`AbS$gz zwLdTz^2Y`s4lctq;3bHlg*$-=82Y#gGQbl?6WCS3%a8nKaeKS?i>Fei{CbJssjI%h z+8+k|ReT^Ea{z=x8+Q=L08FKTPC>+)DO~c5^SiqhPv)QEdBRtB_Z++Gg@D>02K*`C zNT3m)n$0C(hX6_9(nkjn^$L9EtNVxhTQ1Z1Q!4qFyVd=Q|GhZv4}Ag^-X(zf5Evk+ zj)*l=w7B_*YyWV|lO#=(gnwCK^QK;c5r3$vop2xo)IkK=OQ4IW8K7N6@cCSQTT7fQ#itk+SA>^; zk(89@`=5g!MriBddFrK3G@Bg`C-pXYdjz!o2Oh1^5_cMA3FZJ2|7OXTi zWpUc|2bj_BR{qfOS2(_fC_WI)E{+cpBoO5^Ade#5Zq1)%-iGGSwjqAWvTc(=!yiET zL(4xcb&@$?1tU$KSLND{;?C=E%ZPO8d==jGxl)wsDhww~ZV1yKUU4-)-YY{camK>UZ0?QNJJX zm;E{T{^hrEqkcc&`~5jMo_`lN>h}Xqu4Y_KFoM4hT?IG?*AoomzsB)5>-)3t zSHs^2#`U{x+@#-a<7WMC8?W^H%gc~{w~aUS`+h&9-)-X!{f+}p-GL>%q2KrWVf}6! zH|uxnxIw?$#!u>Z+qhA`+r}?;v5UPcGwJsd&FcIHeP8Bi_86G-dx`Tih72rGFzNeJ zh@76`xe${xFzNSP|Iu&x4$aGN+k|M_vksT^0z8>GuPHJi)t9l6-msCjG9LK&`*3gUOe`q~CQB z>I%#c1ST!Qrhb1N(C@V8q9%c8;%!KF)bGE>^nIJa^mf$muVebYRGUC;gK|)RPr%@` zzSo;j2pjX8^t*lw3lWuNq{@Hl*Rn~!(|rq_e|?$wg=Et2WywUvL4RYDrog1%OQs3v zU7!iDNeLMA`ym67CJ;@Z0i%A``EL@Kx&}_`ceVK%k6uM!LIx)NUeb~`Z&|k|V_?$n sYJS$Jx>DnlF)-=(@@N%-ZpRz!Kl{VvM3bLjM*si-07*qoM6N<$g5KJVuK)l5 literal 0 HcmV?d00001 diff --git a/icons/mecha/mecha_ch.dmi b/icons/mecha/mecha_ch.dmi index fe4dfdfd8d6adac721828402c400c5ca512bcb05..43b9be7a5c2e1161cf6bb28934cd367e9dfb894d 100644 GIT binary patch delta 383 zcmV-_0f7Fj1+oQ@Wd;}&7%3(vk!3IgR8KpRo*o1N_3a*!z?FYUNklZz0 z3`K1~S%wV(PFsa1+v$rR1$UkrV&=@=!9f8 z1pp;go@<@wu*!c%0>c?H!zBler~%){A(1A8AEZizssc+yqYOw%X+OwXtm?W#Ybjzw z!y+=KtEy`1x(V&`=}&!Wqgk_FU#}<5G*R0drYKC{T8@Q|+O}(y39Sr9CzTp=A-G%w zE?P335puH`Y!Iy=zA#Gk4@MZ0Qa&0+2((-(Bq0cmD6C%$P>-Wsz$z2^bU@R8Ko8CMS`e9t4eeB4v@lm48A>L_t(IjqQ+abAm7o zfQt~7@X}4w*+q(*fKuQ8|F2u{bPl|I+_&Y*rQvznl0gjmmGZ07GE!jCL%CaEmc%=G< zBT~u~MX@T&m86fSm-;l;sMUIXTTfgW=BhJno?GFj9tsUtRU=%I7Ne;*n;}QEO~*c!%ZC6|*N%aL9 W{2=<)$Zh-p0000