diff --git a/code/__defines/exosuit_fab.dm b/code/__defines/exosuit_fab.dm index 030c324cd3..e3da26b840 100644 --- a/code/__defines/exosuit_fab.dm +++ b/code/__defines/exosuit_fab.dm @@ -35,10 +35,16 @@ #define EXOSUIT_MODULE_DURAND (1<<3) /// Module is compatible with Phazon Exosuit models #define EXOSUIT_MODULE_PHAZON (1<<4) +/// Module is compatible with Pinnace Fighter models +#define EXOSUIT_MODULE_PINNACE (1<<5) +/// Module is compatible with Baron Fighter models +#define EXOSUIT_MODULE_BARON (1<<6) /// Module is compatible with "Working" Exosuit models - Ripley #define EXOSUIT_MODULE_WORKING EXOSUIT_MODULE_RIPLEY /// Module is compatible with "Combat" Exosuit models - Gygax, Durand and Phazon #define EXOSUIT_MODULE_COMBAT EXOSUIT_MODULE_GYGAX | EXOSUIT_MODULE_DURAND | EXOSUIT_MODULE_PHAZON -/// Module is compatible with "Medical" Exosuit modelsm - Odysseus +/// Module is compatible with "Medical" Exosuit models - Odysseus #define EXOSUIT_MODULE_MEDICAL EXOSUIT_MODULE_ODYSSEUS +/// Module is compatible with "Fighter" Exosuit models - Pinnace, Baron +#define EXOSUIT_MODULE_FIGHTER EXOSUIT_MODULE_PINNACE | EXOSUIT_MODULE_BARON diff --git a/code/game/mecha/combat/fighter.dm b/code/game/mecha/combat/fighter.dm index 8fc517641c..790ef9f1c6 100644 --- a/code/game/mecha/combat/fighter.dm +++ b/code/game/mecha/combat/fighter.dm @@ -5,7 +5,7 @@ desc = "The base type of fightercraft. Don't spawn this one!" var/datum/effect/effect/system/ion_trail_follow/ion_trail - var/stabilization_enabled = TRUE //If our anti-space-drift is on + var/landing_gear_raised = FALSE //If our landing gear for safely crossing ground turfs is on. var/ground_capable = FALSE //If we can fly over normal turfs and not just space icon = 'icons/mecha/fighters64x64.dmi' //See ATTRIBUTIONS.md for details on license @@ -27,8 +27,8 @@ wreckage = /obj/effect/decal/mecha_wreckage/gunpod - stomp_sound = 'sound/machines/generator/generator_end.ogg' - swivel_sound = 'sound/machines/hiss.ogg' + stomp_sound = 'sound/mecha/fighter/engine_mid_fighter_move.ogg' + swivel_sound = 'sound/mecha/fighter/engine_mid_boost_01.ogg' bound_height = 64 bound_width = 64 @@ -135,17 +135,17 @@ //Modified phazon code /obj/mecha/combat/fighter/Topic(href, href_list) ..() - if (href_list["toggle_stabilization"]) - stabilization_enabled = !stabilization_enabled - send_byjax(src.occupant,"exosuit.browser","stabilization_command","[stabilization_enabled?"Dis":"En"]able thruster stabilization") - src.occupant_message(span_notice("Thruster stabilization [stabilization_enabled? "enabled" : "disabled"].")) + if (href_list["toggle_landing_gear"]) + landing_gear_raised = !landing_gear_raised + send_byjax(src.occupant,"exosuit.browser","landing_gear_command","[landing_gear_raised?"Lower":"Raise"] landing gear") + src.occupant_message(span_notice("Landing gear [landing_gear_raised? "raised" : "lowered"].")) return /obj/mecha/combat/fighter/get_commands() var/output = {"
"} @@ -153,22 +153,28 @@ return output /obj/mecha/combat/fighter/can_ztravel() - return (stabilization_enabled && has_charge(step_energy_drain)) + return (landing_gear_raised && has_charge(step_energy_drain)) // No space drifting +// This doesnt work but I actually dont want it to anyways, so I'm not touching it at all. Space drifting is cool. /obj/mecha/combat/fighter/check_for_support() - if (stabilization_enabled) + if (landing_gear_raised) return 1 return ..() // No falling if we've got our boosters on /obj/mecha/combat/fighter/can_fall() - return (stabilization_enabled && has_charge(step_energy_drain)) + if(landing_gear_raised && has_charge(step_energy_drain)) + return FALSE + else + return TRUE /obj/mecha/combat/fighter/proc/consider_gravity(var/moved = FALSE) var/gravity = get_gravity() - if(gravity && ground_capable && occupant) + if (gravity && !landing_gear_raised) + playsound(src, 'sound/effects/roll.ogg', 50, 1) + else if(gravity && ground_capable && occupant) start_hover() else if((!gravity && ground_capable) || !occupant) stop_hover() @@ -177,6 +183,11 @@ take_damage(NOGRAV_FIGHTER_DAMAGE, "brute") playsound(src, 'sound/effects/grillehit.ogg', 50, 1) +/obj/mecha/combat/fighter/get_step_delay() + . = ..() + if(get_gravity() && !landing_gear_raised) + . += 4 + /obj/mecha/combat/fighter/handle_equipment_movement() . = ..() consider_gravity(TRUE) @@ -202,7 +213,7 @@ animate(src, pixel_y = old_y, time = 5, easing = SINE_EASING | EASE_IN) //halt animation /obj/mecha/combat/fighter/check_for_support() - if (has_charge(step_energy_drain) && stabilization_enabled) + if (has_charge(step_energy_drain) && landing_gear_raised) return 1 var/list/things = orange(1, src) @@ -241,7 +252,7 @@ var/image/stripe1_overlay var/image/stripe2_overlay -/obj/mecha/combat/fighter/gunpod/loaded/Initialize() //Loaded version with gans +/obj/mecha/combat/fighter/gunpod/loaded/Initialize() //Loaded version with guns . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser ME.attach(src) @@ -313,7 +324,7 @@ ground_capable = FALSE -/obj/mecha/combat/fighter/baron/loaded/Initialize() //Loaded version with gans +/obj/mecha/combat/fighter/baron/loaded/Initialize() //Loaded version with guns . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser ME.attach(src) @@ -350,7 +361,7 @@ ground_capable = FALSE -/obj/mecha/combat/fighter/scoralis/loaded/Initialize() //Loaded version with gans +/obj/mecha/combat/fighter/scoralis/loaded/Initialize() //Loaded version with guns . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg ME.attach(src) @@ -389,7 +400,7 @@ health = 500 maxhealth = 500 -/obj/mecha/combat/fighter/allure/loaded/Initialize() //Loaded version with gans +/obj/mecha/combat/fighter/allure/loaded/Initialize() //Loaded version with guns . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/cloak ME.attach(src) @@ -429,7 +440,7 @@ ground_capable = TRUE -/obj/mecha/combat/fighter/pinnace/loaded/Initialize() //Loaded version with gans +/obj/mecha/combat/fighter/pinnace/loaded/Initialize() //Loaded version with guns . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger ME.attach(src) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 0e89bcfb94..e9cb47b4e4 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -68,6 +68,8 @@ "Vehicle", "Rigsuit", "Phazon", + "Pinnace", + "Baron", //"Gopher", // VOREStation Add //CHOMPedit commented micromech stuff, because fuck this trash //"Polecat", // VOREStation Add //CHOMPedit commented micromech stuff, because fuck this trash //"Weasel", // VOREStation Add //CHOMPedit commented micromech stuff, because fuck this trash @@ -184,6 +186,10 @@ category_override += "Durand" if(mech_types & EXOSUIT_MODULE_PHAZON) category_override += "Phazon" + if(mech_types & EXOSUIT_MODULE_PINNACE) + category_override += "Pinnace" + if(mech_types & EXOSUIT_MODULE_BARON) + category_override += "Baron" var/list/part = list( "name" = D.name, diff --git a/code/game/mecha/mech_prosthetics.dm b/code/game/mecha/mech_prosthetics.dm index e39c6cbb41..af95409564 100644 --- a/code/game/mecha/mech_prosthetics.dm +++ b/code/game/mecha/mech_prosthetics.dm @@ -49,6 +49,8 @@ "Vehicle", "Rigsuit", "Phazon", + "Pinnace", + "Baron", //"Gopher", // VOREStation Add //CHOMPedit commented micromech stuff, because fuck this trash //"Polecat", // VOREStation Add //CHOMPedit commented micromech stuff, because fuck this trash //"Weasel", // VOREStation Add //CHOMPedit commented micromech stuff, because fuck this trash diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index e44e1dc196..b59f8de05f 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -2132,3 +2132,571 @@ ..() feedback_inc("mecha_janus_created",1) return + +//Fighters + +////////////////////// +// Pinnace +////////////////////// +/datum/construction/mecha/fighter/pinnace_chassis + result = "/obj/mecha/combat/fighter/pinnace" + steps = list(list("key"=/obj/item/mecha_parts/fighter/part/pinnace_core),//1 + list("key"=/obj/item/mecha_parts/fighter/part/pinnace_cockpit),//2 + list("key"=/obj/item/mecha_parts/fighter/part/pinnace_main_engine),//3 + list("key"=/obj/item/mecha_parts/fighter/part/pinnace_left_engine),//4 + list("key"=/obj/item/mecha_parts/fighter/part/pinnace_right_engine),//5 + list("key"=/obj/item/mecha_parts/fighter/part/pinnace_left_wing),//6 + list("key"=/obj/item/mecha_parts/fighter/part/pinnace_right_wing)//final + ) + +/datum/construction/mecha/fighter/pinnace_chassis/custom_action(step, obj/item/I, mob/user) + user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder]") + holder.add_overlay("[I.icon_state]+o") + qdel(I) + return 1 + +/datum/construction/mecha/fighter/pinnace_chassis/action(obj/item/I,mob/user as mob) + return check_all_steps(I,user) + +/datum/construction/mecha/fighter/pinnace_chassis/spawn_result() + var/obj/item/mecha_parts/chassis/const_holder = holder + const_holder.construct = new /datum/construction/reversible/mecha/fighter/pinnace(const_holder) + const_holder.icon = 'icons/mecha/fighters_construction64x64.dmi' + const_holder.icon_state = "pinnace0" + const_holder.density = 1 + spawn() + qdel(src) + return + +/datum/construction/reversible/mecha/fighter/pinnace + result = "/obj/mecha/combat/fighter/pinnace" + steps = list( + //1 + list("key"=/obj/item/weldingtool, + "backkey"=IS_WRENCH, + "desc"="External armor is bolted into place."), + //2 + list("key"=IS_WRENCH, + "backkey"=IS_CROWBAR, + "desc"="External armor is installed."), + //3 + list("key"=/obj/item/stack/material/plasteel, + "backkey"=/obj/item/weldingtool, + "desc"="The internal armor is welded into place."), + //4 + list("key"=/obj/item/weldingtool, + "backkey"=IS_WRENCH, + "desc"="The internal armor is bolted into place."), + //5 + list("key"=IS_WRENCH, + "backkey"=IS_CROWBAR, + "desc"="The internal armor is installed."), + //6 + list("key"=/obj/item/stack/material/steel, + "backkey"=IS_SCREWDRIVER, + "desc"="The manual flight control instruments are secured."), + //7 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The manual flight control instruments are installed."), + //8 + list("key"=/obj/item/circuitboard/mecha/fighter/pinnace/cockpitboard, + "backkey"=IS_SCREWDRIVER, + "desc"="The advanced capacitor is secured."), + //9 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The advanced capacitor is installed."), + //10 + list("key"=/obj/item/stock_parts/capacitor/adv, + "backkey"=IS_SCREWDRIVER, + "desc"="The targeting module is secured."), + //11 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The targeting module is installed."), + //12 + list("key"=/obj/item/circuitboard/mecha/fighter/pinnace/targeting, + "backkey"=IS_SCREWDRIVER, + "desc"="The flight control module is secured."), + //13 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The flight control module is installed."), + //14 + list("key"=/obj/item/circuitboard/mecha/fighter/pinnace/flight, + "backkey"=IS_SCREWDRIVER, + "desc"="The central control module is secured."), + //15 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The central control module is installed."), + //16 + list("key"=/obj/item/circuitboard/mecha/fighter/pinnace/main, + "backkey"=IS_SCREWDRIVER, + "desc"="The internal wiring is adjusted."), + //17 + list("key"=/obj/item/tool/wirecutters, + "backkey"=IS_SCREWDRIVER, + "desc"="The internal wiring is added."), + //18 + list("key"=/obj/item/stack/cable_coil, + "backkey"=IS_SCREWDRIVER, + "desc"="The hydraulic landing gear are deployed."), + //19 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_WRENCH, + "desc"="The hydraulic landing gear are attached."), + //20 + list("key"=IS_WRENCH, + "desc"="The hydraulic landing gear are detached.") + ) + +/datum/construction/reversible/mecha/fighter/pinnace/action(obj/item/I,mob/user as mob) + return check_step(I,user) + +/datum/construction/reversible/mecha/fighter/pinnace/custom_action(index, diff, obj/item/I, mob/user) + if(!..()) + return 0 + + switch(index) + if(20) + user.visible_message("[user] attaches [holder]'s hydraulic landing gear.", "You attach [holder]'s hydraulic landing gear.") + holder.icon_state = "pinnace1" + if(19) + if(diff==FORWARD) + user.visible_message("[user] deploys [holder]'s hydraulic landing gear.", "You deploy [holder]'s hydraulic landing gear.") + holder.icon_state = "pinnace2" + else + user.visible_message("[user] removes [holder]'s hydraulic landing gear.", "You remove [holder]'s hydraulic landing gear.") + holder.icon_state = "pinnace0" + if(18) + if(diff==FORWARD) + user.visible_message("[user] adds the internal wiring to [holder].", "You add the internal wiring to [holder].") + holder.icon_state = "pinnace3" + else + user.visible_message("[user] retracts [holder]'s hydraulic landing gear.", "You retract [holder]'s hydraulic landing gear.") + holder.icon_state = "pinnace1" + if(17) + if(diff==FORWARD) + user.visible_message("[user] adjusts the internal wiring of [holder].", "You adjust the internal wiring of [holder].") + holder.icon_state = "pinnace4" + else + user.visible_message("[user] removes the internal wiring from [holder].", "You remove the internal 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 = "pinnace2" + if(16) + if(diff==FORWARD) + user.visible_message("[user] installs the central control module into [holder].", "You install the central control module into [holder].") + qdel(I) + holder.icon_state = "pinnace5" + else + user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].") + holder.icon_state = "pinnace3" + if(15) + if(diff==FORWARD) + user.visible_message("[user] secures the central control module.", "You secure the central control module.") + holder.icon_state = "pinnace6" + else + user.visible_message("[user] removes the central control module from [holder].", "You remove the central control module from [holder].") + new /obj/item/circuitboard/mecha/fighter/pinnace/main(get_turf(holder)) + holder.icon_state = "pinnace4" + if(14) + if(diff==FORWARD) + user.visible_message("[user] installs the flight control module into [holder].", "You install the flight control module into [holder].") + qdel(I) + holder.icon_state = "pinnace7" + else + user.visible_message("[user] unfastens the central control module.", "You unfasten the central control module.") + holder.icon_state = "pinnace5" + if(13) + if(diff==FORWARD) + user.visible_message("[user] secures the flight control module.", "You secure the flight control module.") + holder.icon_state = "pinnace8" + else + user.visible_message("[user] removes the flight control module from [holder].", "You remove the flight control module from [holder].") + new /obj/item/circuitboard/mecha/fighter/pinnace/flight(get_turf(holder)) + holder.icon_state = "pinnace6" + if(12) + if(diff==FORWARD) + user.visible_message("[user] installs the targeting control module into [holder].", "You install the targeting control module into [holder].") + qdel(I) + holder.icon_state = "pinnace9" + else + user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "pinnace7" + if(11) + if(diff==FORWARD) + user.visible_message("[user] secures the targeting control module.", "You secure the targeting control module.") + holder.icon_state = "pinnace10" + else + user.visible_message("[user] removes the targeting control module from [holder].", "You remove the targeting control module from [holder].") + new /obj/item/circuitboard/mecha/fighter/pinnace/targeting(get_turf(holder)) + holder.icon_state = "pinnace8" + if(10) + if(diff==FORWARD) + user.visible_message("[user] installs the advanced capacitor into [holder].", "You install the advanced capacitor into [holder].") + qdel(I) + holder.icon_state = "pinnace11" + else + user.visible_message("[user] unfastens the targeting control module.", "You unfasten the targeting control module.") + holder.icon_state = "pinnace9" + if(9) + if(diff==FORWARD) + user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.") + holder.icon_state = "pinnace12" + else + user.visible_message("[user] removes the advanced capacitor from [holder].", "You remove the advanced capacitor from [holder].") + new /obj/item/stock_parts/capacitor/adv(get_turf(holder)) + holder.icon_state = "pinnace10" + if(8) + if(diff==FORWARD) + user.visible_message("[user] installs the manual flight controls to [holder].", "You install the manual flight controls to [holder].") + qdel(I) + holder.icon_state = "pinnace13" + else + user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.") + holder.icon_state = "pinnace11" + if(7) + if(diff==FORWARD) + user.visible_message("[user] secures the manual flight controls.", "You secure the manual flight controls.") + holder.icon_state = "pinnace14" + else + user.visible_message("[user] removes the manual flight controls from [holder].", "You remove the manual flight controls from [holder].") + new /obj/item/circuitboard/mecha/fighter/pinnace/cockpitboard(get_turf(holder)) + holder.icon_state = "pinnace12" + if(6) + if(diff==FORWARD) + user.visible_message("[user] installs the internal armor layer to [holder].", "You install the internal armor layer to [holder].") + holder.icon_state = "pinnace19" + else + user.visible_message("[user] unfastens the manual flight controls.", "You unfasten the manual flight controls.") + holder.icon_state = "pinnace13" + if(5) + if(diff==FORWARD) + user.visible_message("[user] bolts the internal armor layer.", "You bolt the internal armor layer.") + holder.icon_state = "pinnace20" + else + user.visible_message("[user] pries the internal armor layer from [holder].", "You pry the 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 = "pinnace14" + if(4) + if(diff==FORWARD) + user.visible_message("[user] welds the internal armor layer into place on [holder].", "You weld the internal armor layer into place on [holder].") + holder.icon_state = "pinnace21" + else + user.visible_message("[user] unbolt the internal armor layer.", "You unbolt the internal armor layer.") + holder.icon_state = "pinnace19" + if(3) + if(diff==FORWARD) + user.visible_message("[user] installs the external reinforced armor layer to [holder].", "You install the external reinforced armor layer to [holder].") + holder.icon_state = "pinnace22" + else + user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") + holder.icon_state = "pinnace20" + if(2) + if(diff==FORWARD) + user.visible_message("[user] bolts external armor layer.", "You bolt external reinforced armor layer.") + holder.icon_state = "pinnace23" + 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 = "pinnace21" + if(1) + if(diff==FORWARD) + user.visible_message("[user] welds the external armor layer to [holder].", "You weld the external armor layer to [holder].") + else + user.visible_message("[user] unbolts the external armor layer.", "You unbolt the external armor layer.") + holder.icon_state = "pinnace22" + return 1 + +/datum/construction/reversible/mecha/fighter/pinnace/spawn_result() + ..() + feedback_inc("mecha_fighter_pinnace_created",1) + return + +////////////////////// +// Baron +////////////////////// +/datum/construction/mecha/fighter/baron_chassis + result = "/obj/mecha/combat/fighter/baron" + steps = list(list("key"=/obj/item/mecha_parts/fighter/part/baron_core),//1 + list("key"=/obj/item/mecha_parts/fighter/part/baron_cockpit),//2 + list("key"=/obj/item/mecha_parts/fighter/part/baron_main_engine),//3 + list("key"=/obj/item/mecha_parts/fighter/part/baron_left_engine),//4 + list("key"=/obj/item/mecha_parts/fighter/part/baron_right_engine),//5 + list("key"=/obj/item/mecha_parts/fighter/part/baron_left_wing),//6 + list("key"=/obj/item/mecha_parts/fighter/part/baron_right_wing)//final + ) + +/datum/construction/mecha/fighter/baron_chassis/custom_action(step, obj/item/I, mob/user) + user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder]") + holder.add_overlay("[I.icon_state]+o") + qdel(I) + return 1 + +/datum/construction/mecha/fighter/baron_chassis/action(obj/item/I,mob/user as mob) + return check_all_steps(I,user) + +/datum/construction/mecha/fighter/baron_chassis/spawn_result() + var/obj/item/mecha_parts/chassis/const_holder = holder + const_holder.construct = new /datum/construction/reversible/mecha/fighter/baron(const_holder) + const_holder.icon = 'icons/mecha/fighters_construction64x64.dmi' + const_holder.icon_state = "baron0" + const_holder.density = 1 + spawn() + qdel(src) + return + +/datum/construction/reversible/mecha/fighter/baron + result = "/obj/mecha/combat/fighter/baron" + steps = list( + //1 + list("key"=/obj/item/weldingtool, + "backkey"=IS_WRENCH, + "desc"="External armor is bolted into place."), + //2 + list("key"=IS_WRENCH, + "backkey"=IS_CROWBAR, + "desc"="External armor is installed."), + //3 + list("key"=/obj/item/stack/material/plasteel, + "backkey"=/obj/item/weldingtool, + "desc"="The internal armor is welded into place."), + //4 + list("key"=/obj/item/weldingtool, + "backkey"=IS_WRENCH, + "desc"="The internal armor is bolted into place."), + //5 + list("key"=IS_WRENCH, + "backkey"=IS_CROWBAR, + "desc"="The internal armor is installed."), + //6 + list("key"=/obj/item/stack/material/steel, + "backkey"=IS_SCREWDRIVER, + "desc"="The manual flight control instruments are secured."), + //7 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The manual flight control instruments are installed."), + //8 + list("key"=/obj/item/circuitboard/mecha/fighter/baron/cockpitboard, + "backkey"=IS_SCREWDRIVER, + "desc"="The advanced capacitor is secured."), + //9 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The advanced capacitor is installed."), + //10 + list("key"=/obj/item/stock_parts/capacitor/adv, + "backkey"=IS_SCREWDRIVER, + "desc"="The targeting module is secured."), + //11 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The targeting module is installed."), + //12 + list("key"=/obj/item/circuitboard/mecha/fighter/baron/targeting, + "backkey"=IS_SCREWDRIVER, + "desc"="The flight control module is secured."), + //13 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The flight control module is installed."), + //14 + list("key"=/obj/item/circuitboard/mecha/fighter/baron/flight, + "backkey"=IS_SCREWDRIVER, + "desc"="The central control module is secured."), + //15 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_CROWBAR, + "desc"="The central control module is installed."), + //16 + list("key"=/obj/item/circuitboard/mecha/fighter/baron/main, + "backkey"=IS_SCREWDRIVER, + "desc"="The internal wiring is adjusted."), + //17 + list("key"=/obj/item/tool/wirecutters, + "backkey"=IS_SCREWDRIVER, + "desc"="The internal wiring is added."), + //18 + list("key"=/obj/item/stack/cable_coil, + "backkey"=IS_SCREWDRIVER, + "desc"="The hydraulic landing gear are deployed."), + //19 + list("key"=IS_SCREWDRIVER, + "backkey"=IS_WRENCH, + "desc"="The hydraulic landing gear are attached."), + //20 + list("key"=IS_WRENCH, + "desc"="The hydraulic landing gear are detached.") + ) + +/datum/construction/reversible/mecha/fighter/baron/action(obj/item/I,mob/user as mob) + return check_step(I,user) + +/datum/construction/reversible/mecha/fighter/baron/custom_action(index, diff, obj/item/I, mob/user) + if(!..()) + return 0 + + switch(index) + if(20) + user.visible_message("[user] attaches [holder]'s hydraulic landing gear.", "You attach [holder]'s hydraulic landing gear.") + holder.icon_state = "baron1" + if(19) + if(diff==FORWARD) + user.visible_message("[user] deploys [holder]'s hydraulic landing gear.", "You deploy [holder]'s hydraulic landing gear.") + holder.icon_state = "baron2" + else + user.visible_message("[user] removes [holder]'s hydraulic landing gear.", "You remove [holder]'s hydraulic landing gear.") + holder.icon_state = "baron0" + if(18) + if(diff==FORWARD) + user.visible_message("[user] adds the internal wiring to [holder].", "You add the internal wiring to [holder].") + holder.icon_state = "baron3" + else + user.visible_message("[user] retracts [holder]'s hydraulic landing gear.", "You retract [holder]'s hydraulic landing gear.") + holder.icon_state = "baron1" + if(17) + if(diff==FORWARD) + user.visible_message("[user] adjusts the internal wiring of [holder].", "You adjust the internal wiring of [holder].") + holder.icon_state = "baron4" + else + user.visible_message("[user] removes the internal wiring from [holder].", "You remove the internal 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 = "baron2" + if(16) + if(diff==FORWARD) + user.visible_message("[user] installs the central control module into [holder].", "You install the central control module into [holder].") + qdel(I) + holder.icon_state = "baron5" + else + user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].") + holder.icon_state = "baron3" + if(15) + if(diff==FORWARD) + user.visible_message("[user] secures the central control module.", "You secure the central control module.") + holder.icon_state = "baron6" + else + user.visible_message("[user] removes the central control module from [holder].", "You remove the central control module from [holder].") + new /obj/item/circuitboard/mecha/fighter/baron/main(get_turf(holder)) + holder.icon_state = "baron4" + if(14) + if(diff==FORWARD) + user.visible_message("[user] installs the flight control module into [holder].", "You install the flight control module into [holder].") + qdel(I) + holder.icon_state = "baron7" + else + user.visible_message("[user] unfastens the central control module.", "You unfasten the central control module.") + holder.icon_state = "baron5" + if(13) + if(diff==FORWARD) + user.visible_message("[user] secures the flight control module.", "You secure the flight control module.") + holder.icon_state = "baron8" + else + user.visible_message("[user] removes the flight control module from [holder].", "You remove the flight control module from [holder].") + new /obj/item/circuitboard/mecha/fighter/baron/flight(get_turf(holder)) + holder.icon_state = "baron6" + if(12) + if(diff==FORWARD) + user.visible_message("[user] installs the targeting control module into [holder].", "You install the targeting control module into [holder].") + qdel(I) + holder.icon_state = "baron9" + else + user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "baron7" + if(11) + if(diff==FORWARD) + user.visible_message("[user] secures the targeting control module.", "You secure the targeting control module.") + holder.icon_state = "baron10" + else + user.visible_message("[user] removes the targeting control module from [holder].", "You remove the targeting control module from [holder].") + new /obj/item/circuitboard/mecha/fighter/baron/targeting(get_turf(holder)) + holder.icon_state = "baron8" + if(10) + if(diff==FORWARD) + user.visible_message("[user] installs the advanced capacitor into [holder].", "You install the advanced capacitor into [holder].") + qdel(I) + holder.icon_state = "baron11" + else + user.visible_message("[user] unfastens the targeting control module.", "You unfasten the targeting control module.") + holder.icon_state = "baron9" + if(9) + if(diff==FORWARD) + user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.") + holder.icon_state = "baron12" + else + user.visible_message("[user] removes the advanced capacitor from [holder].", "You remove the advanced capacitor from [holder].") + new /obj/item/stock_parts/capacitor/adv(get_turf(holder)) + holder.icon_state = "baron10" + if(8) + if(diff==FORWARD) + user.visible_message("[user] installs the manual flight controls to [holder].", "You install the manual flight controls to [holder].") + qdel(I) + holder.icon_state = "baron13" + else + user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.") + holder.icon_state = "baron11" + if(7) + if(diff==FORWARD) + user.visible_message("[user] secures the manual flight controls.", "You secure the manual flight controls.") + holder.icon_state = "baron14" + else + user.visible_message("[user] removes the manual flight controls from [holder].", "You remove the manual flight controls from [holder].") + new /obj/item/circuitboard/mecha/fighter/baron/cockpitboard(get_turf(holder)) + holder.icon_state = "baron12" + if(6) + if(diff==FORWARD) + user.visible_message("[user] installs the internal armor layer to [holder].", "You install the internal armor layer to [holder].") + holder.icon_state = "baron19" + else + user.visible_message("[user] unfastens the manual flight controls.", "You unfasten the manual flight controls.") + holder.icon_state = "baron13" + if(5) + if(diff==FORWARD) + user.visible_message("[user] bolts the internal armor layer.", "You bolt the internal armor layer.") + holder.icon_state = "baron20" + else + user.visible_message("[user] pries the internal armor layer from [holder].", "You pry the 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 = "baron14" + if(4) + if(diff==FORWARD) + user.visible_message("[user] welds the internal armor layer into place on [holder].", "You weld the internal armor layer into place on [holder].") + holder.icon_state = "baron21" + else + user.visible_message("[user] unbolt the internal armor layer.", "You unbolt the internal armor layer.") + holder.icon_state = "baron19" + if(3) + if(diff==FORWARD) + user.visible_message("[user] installs the external reinforced armor layer to [holder].", "You install the external reinforced armor layer to [holder].") + holder.icon_state = "baron22" + else + user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") + holder.icon_state = "baron20" + if(2) + if(diff==FORWARD) + user.visible_message("[user] bolts external armor layer.", "You bolt external reinforced armor layer.") + holder.icon_state = "baron23" + 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 = "baron21" + if(1) + if(diff==FORWARD) + user.visible_message("[user] welds the external armor layer to [holder].", "You weld the external armor layer to [holder].") + else + user.visible_message("[user] unbolts the external armor layer.", "You unbolt the external armor layer.") + holder.icon_state = "baron22" + return 1 + +/datum/construction/reversible/mecha/fighter/baron/spawn_result() + ..() + feedback_inc("mecha_fighter_baron_created",1) + return diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 1a9a4324ff..a8e4aee892 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -340,3 +340,120 @@ name="Prototype Durand Right Leg" icon_state = "janus_r_leg" origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3, TECH_ARCANE = 1) + + +///Fighters/// + + +/obj/item/mecha_parts/fighter + icon = 'icons/mecha/fighters_construct64x64.dmi' + +/obj/item/mecha_parts/fighter/chassis + name="Fighter Chassis" + icon_state = "backbone" + var/datum/construction/construct + +/obj/item/mecha_parts/fighter/chassis/attackby(obj/item/W, mob/user) + if(!construct || !construct.action(W, user)) + ..() + return + +/obj/item/mecha_parts/fighter/chassis/attack_hand(mob/user, list/params) + return + + +//! Pinnace + +/obj/item/mecha_parts/fighter/chassis/pinnace + name = "\improper Pinnace Chassis" + icon_state = "pinnace_chassis" + + origin_tech = list(TECH_MATERIAL = 2) + +/obj/item/mecha_parts/fighter/chassis/pinnace/New() + ..() + construct = new /datum/construction/mecha/fighter/pinnace_chassis(src) + + +/obj/item/mecha_parts/fighter/part/pinnace_core + name="\improper Pinnace Core" + icon_state = "pinnace_core" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + +/obj/item/mecha_parts/fighter/part/pinnace_cockpit + name="\improper Pinnace Cockpit" + icon_state = "pinnace_cockpit" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + +/obj/item/mecha_parts/fighter/part/pinnace_left_wing + name="\improper Pinnace Left Wing" + icon_state = "pinnace_l_wing" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + +/obj/item/mecha_parts/fighter/part/pinnace_right_wing + name="\improper Pinnace Right Wing" + icon_state = "pinnace_r_wing" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + +/obj/item/mecha_parts/fighter/part/pinnace_main_engine + name="\improper Pinnace Main Engine" + icon_state = "pinnace_m_engine" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + +/obj/item/mecha_parts/fighter/part/pinnace_left_engine + name="\improper Pinnace Left Engine" + icon_state = "pinnace_l_engine" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + +/obj/item/mecha_parts/fighter/part/pinnace_right_engine + name="\improper Pinnace Right Engine" + icon_state = "pinnace_r_engine" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + +//! Baron + +/obj/item/mecha_parts/fighter/chassis/baron + name = "\improper Baron Chassis" + icon_state = "baron_chassis" + + origin_tech = list(TECH_MATERIAL = 2) + +/obj/item/mecha_parts/fighter/chassis/baron/New() + ..() + construct = new /datum/construction/mecha/fighter/baron_chassis(src) + + +/obj/item/mecha_parts/fighter/part/baron_core + name="\improper Baron Core" + icon_state = "baron_core" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_BIO = 2, TECH_ENGINEERING = 4) + +/obj/item/mecha_parts/fighter/part/baron_cockpit + name="\improper Baron Cockpit" + icon_state = "baron_cockpit" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_BIO = 2, TECH_ENGINEERING = 4) + +/obj/item/mecha_parts/fighter/part/baron_left_wing + name="\improper Baron Left Wing" + icon_state = "baron_l_wing" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4) + +/obj/item/mecha_parts/fighter/part/baron_right_wing + name="\improper Baron Right Wing" + icon_state = "baron_r_wing" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4) + +/obj/item/mecha_parts/fighter/part/baron_main_engine + name="\improper Baron Main Engine" + icon_state = "baron_m_engine" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4) + +/obj/item/mecha_parts/fighter/part/baron_left_engine + name="\improper Baron Left Engine" + icon_state = "baron_l_engine" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4) + +/obj/item/mecha_parts/fighter/part/baron_right_engine + name="\improper Baron Right Engine" + icon_state = "baron_r_engine" + origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4) diff --git a/code/game/objects/items/weapons/circuitboards/mecha.dm b/code/game/objects/items/weapons/circuitboards/mecha.dm index dd3e06d3a7..b17053a055 100644 --- a/code/game/objects/items/weapons/circuitboards/mecha.dm +++ b/code/game/objects/items/weapons/circuitboards/mecha.dm @@ -2,6 +2,10 @@ #error T_BOARD_MECHA already defined elsewhere, we can't use it. #endif #define T_BOARD_MECHA(name) "exosuit module circuit board (" + (name) + ")" +#ifdef T_BOARD_FIGHTER +#error T_BOARD_FIGHTER already defined elsewhere, we can't use it. +#endif +#define T_BOARD_FIGHTER(name) "fightercraft circuit board (" + (name) + ")" /obj/item/circuitboard/mecha name = "exosuit circuit board" @@ -124,5 +128,56 @@ desc = "It is marked with a " + span_alien("constantly shifting glyph") + "." origin_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 1, TECH_PRECURSOR = 2) -//Undef the macro, shouldn't be needed anywhere else +///Fighters/// + +//Pinnace// + +/obj/item/circuitboard/mecha/fighter/pinnace + +/obj/item/circuitboard/mecha/fighter/pinnace/main + name = T_BOARD_FIGHTER("Pinnace central control") + origin_tech = list(TECH_DATA = 4, TECH_BIO = 2, TECH_BLUESPACE = 2) + icon_state = "mainboard" + +/obj/item/circuitboard/mecha/fighter/pinnace/flight + name = T_BOARD_FIGHTER("Pinnace flight control") + icon_state = "mcontroller" + origin_tech = list(TECH_DATA = 4, TECH_BLUESPACE = 2) + +/obj/item/circuitboard/mecha/fighter/pinnace/targeting + name = T_BOARD_FIGHTER("Pinnace weapon control and targeting") + icon_state = "mcontroller" + origin_tech = list(TECH_DATA = 4, TECH_COMBAT = 1) + +/obj/item/circuitboard/mecha/fighter/pinnace/cockpitboard + name = T_BOARD_FIGHTER("Pinnace manual flight control instruments") + origin_tech = list(TECH_DATA = 4, TECH_BLUESPACE = 2) + icon_state = "card_mod" + +//Baron// + +/obj/item/circuitboard/mecha/fighter/baron + +/obj/item/circuitboard/mecha/fighter/baron/main + name = T_BOARD_FIGHTER("Baron central control") + icon_state = "mainboard" + origin_tech = list(TECH_DATA = 6, TECH_BIO = 4, TECH_BLUESPACE = 5) + +/obj/item/circuitboard/mecha/fighter/baron/flight + name = T_BOARD_FIGHTER("Baron flight control") + icon_state = "mcontroller" + origin_tech = list(TECH_DATA = 6, TECH_BLUESPACE = 5) + +/obj/item/circuitboard/mecha/fighter/baron/targeting + name = T_BOARD_FIGHTER("Baron weapon control and targeting") + icon_state = "mcontroller" + origin_tech = list(TECH_DATA = 6, TECH_BIO = 4, TECH_COMBAT = 5) + +/obj/item/circuitboard/mecha/fighter/baron/cockpitboard + name = T_BOARD_FIGHTER("Baron manual flight control instruments") + icon_state = "card_mod" + origin_tech = list(TECH_DATA = 6, TECH_BLUESPACE = 5) + +//Undef the macros, shouldn't be needed anywhere else #undef T_BOARD_MECHA +#undef T_BOARD_FIGHTER diff --git a/code/modules/research/designs/circuits/circuits.dm b/code/modules/research/designs/circuits/circuits.dm index 6f8bc42156..8b542cfb76 100644 --- a/code/modules/research/designs/circuits/circuits.dm +++ b/code/modules/research/designs/circuits/circuits.dm @@ -864,3 +864,65 @@ CIRCUITS BELOW build_path = /obj/item/circuitboard/recycler_stamper sort_string = "OAABE" department = LATHE_ALL | LATHE_ENGINEERING // CHOMPAdd + +///Fighters/// + +//Pinnace// + +/datum/design/circuit/mecha/fighter/pinnace_main + name = "Pinnace central control board" + id = "pinnace_main" + req_tech = list(TECH_DATA = 3, TECH_POWER = 4) + build_path = /obj/item/circuitboard/mecha/fighter/pinnace/main + sort_string = "NAAGA" + +/datum/design/circuit/mecha/fighter/pinnace_flight + name = "Pinnace flight control board" + id = "pinnace_flight" + req_tech = list(TECH_DATA = 3, TECH_POWER = 4) + build_path = /obj/item/circuitboard/mecha/fighter/pinnace/flight + sort_string = "NAAGB" + +/datum/design/circuit/mecha/fighter/pinnace_targeting + name = "Pinnace weapon control and targeting board" + id = "pinnace_targeting" + req_tech = list(TECH_DATA = 3, TECH_POWER = 4) + build_path = /obj/item/circuitboard/mecha/fighter/pinnace/targeting + sort_string = "NAAGC" + +/datum/design/circuit/mecha/fighter/pinnace_cockpit_control + name = "Pinnace manual flight control instruments" + id = "pinnace_cockpit_control" + req_tech = list(TECH_DATA = 3, TECH_POWER = 4) + build_path = /obj/item/circuitboard/mecha/fighter/pinnace/cockpitboard + sort_string = "NAAGD" + +//Baron// + +/datum/design/circuit/mecha/fighter/baron_main + name = "Baron central control board" + id = "baron_main" + req_tech = list(TECH_DATA = 5, TECH_POWER = 4) + build_path = /obj/item/circuitboard/mecha/fighter/baron/main + sort_string = "NAAHA" + +/datum/design/circuit/mecha/fighter/baron_flight + name = "Baron flight control board" + id = "baron_flight" + req_tech = list(TECH_DATA = 5, TECH_POWER = 4) + build_path = /obj/item/circuitboard/mecha/fighter/baron/flight + sort_string = "NAAHB" + +/datum/design/circuit/mecha/fighter/baron_targeting + name = "Baron weapon control and targeting board" + id = "baron_targeting" + req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3) + build_path = /obj/item/circuitboard/mecha/fighter/baron/targeting + sort_string = "NAAHC" + +/datum/design/circuit/mecha/fighter/baron_cockpit_control + name = "Baron manual flight control instruments" + id = "baron_cockpit_control" + req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3) + build_path = /obj/item/circuitboard/mecha/fighter/baron/cockpitboard + sort_string = "NAAHD" diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm index 5d3f7bc26c..a1e77b000b 100644 --- a/code/modules/research/mechfab_designs.dm +++ b/code/modules/research/mechfab_designs.dm @@ -1253,3 +1253,129 @@ req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 4) materials = list(MAT_PLASTEEL = 10000, MAT_OSMIUM = 3000, MAT_GOLD = 5000) build_path = /obj/item/mecha_parts/component/actuator/hispeed + +///--------/// +///Fighters/// +///--------/// + +///Pinnace/// + +/datum/design/item/mechfab/fighter/pinnace + category = list("Pinnace") + +/datum/design/item/mechfab/fighter/pinnace/chassis + name = "Pinnace Chassis" + id = "pinnace_chassis" + build_path = /obj/item/mecha_parts/fighter/chassis/pinnace + time = 30 + materials = list(MAT_STEEL = 25000, MAT_GLASS = 10000, MAT_PLASTEEL = 10000) + +/datum/design/item/mechfab/fighter/pinnace/core + name = "Pinnace Core" + id = "pinnace_core" + build_path = /obj/item/mecha_parts/fighter/part/pinnace_core + time = 60 + materials = list(MAT_STEEL = 25000, MAT_GLASS = 7000, MAT_PLASTEEL = 7000) + +/datum/design/item/mechfab/fighter/pinnace/cockpit + name = "Pinnace Cockpit" + id = "pinnace_cockpit" + build_path = /obj/item/mecha_parts/fighter/part/pinnace_cockpit + time = 15 + materials = list(MAT_STEEL = 2500, MAT_PLASTEEL = 2500, MAT_GLASS = 7500, MAT_PLASTIC = 2500) + +/datum/design/item/mechfab/fighter/pinnace/main_engine + name = "Pinnace Main Engine" + id = "pinnace_main_engine" + build_path = /obj/item/mecha_parts/fighter/part/pinnace_main_engine + time = 25 + materials = list(MAT_STEEL = 15000, MAT_PLASTEEL = 5000) + +/datum/design/item/mechfab/fighter/pinnace/left_engine + name = "Pinnace Left Engine" + id = "pinnace_left_engine" + build_path = /obj/item/mecha_parts/fighter/part/pinnace_left_engine + time = 25 + materials = list(MAT_STEEL = 10000, MAT_PLASTEEL = 2500) + +/datum/design/item/mechfab/fighter/pinnace/right_engine + name = "Pinnace Right Engine" + id = "pinnace_right_engine" + build_path = /obj/item/mecha_parts/fighter/part/pinnace_right_engine + time = 25 + materials = list(MAT_STEEL = 10000, MAT_PLASTEEL = 2500) + +/datum/design/item/mechfab/fighter/pinnace/left_wing + name = "Pinnace Left Wing" + id = "pinnace_left_wing" + build_path = /obj/item/mecha_parts/fighter/part/pinnace_left_wing + time = 20 + materials = list(MAT_STEEL = 7000, MAT_PLASTIC = 3000, MAT_PLASTEEL = 5000) + +/datum/design/item/mechfab/fighter/pinnace/right_wing + name = "Pinnace Right Wing" + id = "pinnace_right_wing" + build_path = /obj/item/mecha_parts/fighter/part/pinnace_right_wing + time = 20 + materials = list(MAT_STEEL = 7000, MAT_PLASTIC = 3000, MAT_PLASTEEL = 5000) + +///Baron/// + +/datum/design/item/mechfab/fighter/baron + category = list("Baron") + +/datum/design/item/mechfab/fighter/baron/chassis + name = "Baron Chassis" + id = "baron_chassis" + build_path = /obj/item/mecha_parts/fighter/chassis/baron + time = 30 + materials = list(MAT_STEEL = 37500, MAT_GLASS = 15000, MAT_PLASTEEL = 15000) + +/datum/design/item/mechfab/fighter/baron/core + name = "Baron Core" + id = "baron_core" + build_path = /obj/item/mecha_parts/fighter/part/baron_core + time = 60 + materials = list(MAT_STEEL = 37500, MAT_GLASS = 15000, MAT_PLASTEEL = 15000) + +/datum/design/item/mechfab/fighter/baron/cockpit + name = "Baron Cockpit" + id = "baron_cockpit" + build_path = /obj/item/mecha_parts/fighter/part/baron_cockpit + time = 15 + materials = list(MAT_STEEL = 5000, MAT_PLASTEEL = 5000, MAT_GLASS = 10000, MAT_PLASTIC = 5000) + +/datum/design/item/mechfab/fighter/baron/main_engine + name = "Baron Main Engine" + id = "baron_main_engine" + build_path = /obj/item/mecha_parts/fighter/part/baron_main_engine + time = 25 + materials = list(MAT_STEEL = 25000, MAT_PLASTEEL = 10000) + +/datum/design/item/mechfab/fighter/baron/left_engine + name = "Baron Left Engine" + id = "baron_left_engine" + build_path = /obj/item/mecha_parts/fighter/part/baron_left_engine + time = 25 + materials = list(MAT_STEEL = 20000, MAT_PLASTEEL = 5000) + +/datum/design/item/mechfab/fighter/baron/right_engine + name = "Baron Right Engine" + id = "baron_right_engine" + build_path = /obj/item/mecha_parts/fighter/part/baron_right_engine + time = 25 + materials = list(MAT_STEEL = 20000, MAT_PLASTEEL = 5000) + +/datum/design/item/mechfab/fighter/baron/left_wing + name = "Baron Left Wing" + id = "baron_left_wing" + build_path = /obj/item/mecha_parts/fighter/part/baron_left_wing + time = 20 + materials = list(MAT_STEEL = 15000, MAT_PLASTIC = 6000, MAT_PLASTEEL = 10000) + +/datum/design/item/mechfab/fighter/baron/right_wing + name = "Baron Right Wing" + id = "baron_right_wing" + build_path = /obj/item/mecha_parts/fighter/part/baron_right_wing + time = 20 + materials = list(MAT_STEEL = 15000, MAT_PLASTIC = 6000, MAT_PLASTEEL = 10000) diff --git a/icons/mecha/fighters_construct64x64.dmi b/icons/mecha/fighters_construct64x64.dmi new file mode 100644 index 0000000000..74402ff8d8 Binary files /dev/null and b/icons/mecha/fighters_construct64x64.dmi differ diff --git a/icons/mecha/fighters_construction64x64.dmi b/icons/mecha/fighters_construction64x64.dmi new file mode 100644 index 0000000000..af8215d0f5 Binary files /dev/null and b/icons/mecha/fighters_construction64x64.dmi differ diff --git a/sound/mecha/fighter/engine_mid_boost_01.ogg b/sound/mecha/fighter/engine_mid_boost_01.ogg new file mode 100644 index 0000000000..90425b768f Binary files /dev/null and b/sound/mecha/fighter/engine_mid_boost_01.ogg differ diff --git a/sound/mecha/fighter/engine_mid_fighter_move.ogg b/sound/mecha/fighter/engine_mid_fighter_move.ogg new file mode 100644 index 0000000000..365d7265cd Binary files /dev/null and b/sound/mecha/fighter/engine_mid_fighter_move.ogg differ