"}
- for(var/obj/item/mecha_parts/mecha_equipment/W in hull_equipment)
+ for(var/obj/item/vehicle_module/W in hull_equipment)
output_text += "Hull Module: [W.name]
Detach"
- for(var/obj/item/mecha_parts/mecha_equipment/W in weapon_equipment)
+ for(var/obj/item/vehicle_module/W in weapon_equipment)
output_text += "Weapon Module: [W.name]
Detach"
- for(var/obj/item/mecha_parts/mecha_equipment/W in utility_equipment)
+ for(var/obj/item/vehicle_module/W in utility_equipment)
output_text += "Utility Module: [W.name]
Detach"
- for(var/obj/item/mecha_parts/mecha_equipment/W in universal_equipment)
+ for(var/obj/item/vehicle_module/W in universal_equipment)
output_text += "Universal Module: [W.name]
Detach"
- for(var/obj/item/mecha_parts/mecha_equipment/W in special_equipment)
+ for(var/obj/item/vehicle_module/W in special_equipment)
output_text += "Special Module: [W.name]
Detach"
- for(var/obj/item/mecha_parts/mecha_equipment/W in micro_utility_equipment)
+ for(var/obj/item/vehicle_module/W in micro_utility_equipment)
output_text += "Micro Utility Module: [W.name]
Detach"
- for(var/obj/item/mecha_parts/mecha_equipment/W in micro_weapon_equipment)
+ for(var/obj/item/vehicle_module/W in micro_weapon_equipment)
output_text += "Micro Weapon Module: [W.name]
Detach"
output_text += {"
Available hull slots: [max_hull_equip-hull_equipment.len]
Available weapon slots: [max_weapon_equip-weapon_equipment.len]
@@ -1983,7 +1983,7 @@
if(!equipment.len)
return
var/output_text = "
Equipment:"
- for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment)
+ for(var/obj/item/vehicle_module/MT in equipment)
output_text += "
[MT.get_equip_info()]
"
output_text += "
"
return output_text
@@ -2038,7 +2038,7 @@
if(!id_card || !user) return
var/maint_options = "
Set Cabin Air Pressure"
- if (locate(/obj/item/mecha_parts/mecha_equipment/tool/passenger) in contents)
+ if (locate(/obj/item/vehicle_module/tool/passenger) in contents)
maint_options += "
Remove Passenger"
var/output_text = {"
@@ -2097,7 +2097,7 @@
var/datum/topic_input/top_filter = new /datum/topic_input(href,href_list)
if(href_list["select_equip"])
if(usr != src.occupant_legacy) return
- var/obj/item/mecha_parts/mecha_equipment/equip = top_filter.getObj("select_equip")
+ var/obj/item/vehicle_module/equip = top_filter.getObj("select_equip")
if(equip)
src.selected = equip
src.occupant_message("You switch to [equip]")
@@ -2214,7 +2214,7 @@
if(href_list["remove_passenger"] && state >= MECHA_BOLTS_SECURED)
var/mob/user = top_filter.getMob("user")
var/list/passengers = list()
- for (var/obj/item/mecha_parts/mecha_equipment/tool/passenger/P in contents)
+ for (var/obj/item/vehicle_module/tool/passenger/P in contents)
if (P.occupant_legacy)
passengers["[P.occupant_legacy]"] = P
@@ -2227,7 +2227,7 @@
if (!pname)
return
- var/obj/item/mecha_parts/mecha_equipment/tool/passenger/P = passengers[pname]
+ var/obj/item/vehicle_module/tool/passenger/P = passengers[pname]
var/mob/occupant_legacy = P.occupant_legacy
user.visible_message("
\The [user] begins opening the hatch on \the [P]...", "
You begin opening the hatch on \the [P]...")
@@ -2357,7 +2357,7 @@
/obj/vehicle/sealed/mecha/proc/dynusepower(amount)
update_cell_alerts()
- var/obj/item/mecha_parts/component/electrical/EC = internal_components[MECH_ELECTRIC]
+ var/obj/item/vehicle_component/electrical/EC = internal_components[MECH_ELECTRIC]
if(EC)
amount = amount * (2 - EC.get_efficiency()) * EC.charge_cost_mod
@@ -2371,7 +2371,7 @@
/obj/vehicle/sealed/mecha/proc/give_power(amount)
update_cell_alerts()
- var/obj/item/mecha_parts/component/electrical/EC = internal_components[MECH_ELECTRIC]
+ var/obj/item/vehicle_component/electrical/EC = internal_components[MECH_ELECTRIC]
if(!EC)
amount /= 4
@@ -2386,7 +2386,7 @@
//This is for mobs mostly.
/obj/vehicle/sealed/mecha/attack_generic(var/mob/user, var/damage, var/attack_message)
- var/obj/item/mecha_parts/component/armor/ArmC = internal_components[MECH_ARMOR]
+ var/obj/item/vehicle_component/armor/ArmC = internal_components[MECH_ARMOR]
var/temp_deflect_chance = deflect_chance
var/temp_damage_minimum = damage_minimum
diff --git a/code/modules/vehicles/sealed/mecha/mecha_appearance.dm b/code/modules/vehicles/sealed/mecha/mecha_appearance.dm
index 9d8ca1a731d..dc82eeec41b 100644
--- a/code/modules/vehicles/sealed/mecha/mecha_appearance.dm
+++ b/code/modules/vehicles/sealed/mecha/mecha_appearance.dm
@@ -60,6 +60,6 @@
if(face_overlay)
add_overlay(face_overlay)
- for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)
+ for(var/obj/item/vehicle_module/ME in equipment)
ME.add_equip_overlay(src)
diff --git a/code/modules/vehicles/sealed/mecha/mecha_construction_paths.dm b/code/modules/vehicles/sealed/mecha/mecha_construction_paths.dm
index 25cd1f7a7e4..d9a69d77a9e 100644
--- a/code/modules/vehicles/sealed/mecha/mecha_construction_paths.dm
+++ b/code/modules/vehicles/sealed/mecha/mecha_construction_paths.dm
@@ -1,6 +1,4 @@
-////////////////////////////////
-///// Construction datums //////
-////////////////////////////////
+/datum/construction/mecha
/datum/construction/mecha/custom_action(step, obj/item/I, mob/user)
if(istype(I, /obj/item/weldingtool))
@@ -34,6 +32,8 @@
S.use(5)
return 1
+/datum/construction/reversible/mecha
+
/datum/construction/reversible/mecha/custom_action(index as num, diff as num, obj/item/I, mob/user as mob)
if(istype(I, /obj/item/weldingtool))
var/obj/item/weldingtool/W = I
@@ -65,3720 +65,3 @@
else
S.use(5)
return 1
-
-//////////////////////
-// Ripley
-//////////////////////
-/datum/construction/mecha/ripley_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1
- list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/ripley_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/ripley_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/ripley_right_leg)//5
- )
-
-/datum/construction/mecha/ripley_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/ripley_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/ripley_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/ripley(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "ripley0"
- const_holder.density = 1
- const_holder.cut_overlays()
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/ripley
- result = "/obj/vehicle/sealed/mecha/working/ripley"
- steps = list(
- //1
- list("key"=/obj/item/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/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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"="Peripherals control module is secured"),
- //7
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Peripherals control module is installed"),
- //8
- list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Central control module is secured"),
- //9
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Central control module is installed"),
- //10
- list("key"=/obj/item/circuitboard/mecha/ripley/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //11
- list("key"=IS_WIRECUTTER,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is added"),
- //12
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The hydraulic systems are active."),
- //13
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_WRENCH,
- "desc"="The hydraulic systems are connected."),
- //14
- list("key"=IS_WRENCH,
- "desc"="The hydraulic systems are disconnected.")
- )
-
-/datum/construction/reversible/mecha/ripley/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/ripley/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(14)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "ripley1"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "ripley2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "ripley0"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "ripley3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "ripley1"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "ripley4"
- 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 = "ripley2"
- if(10)
- 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 = "ripley5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "ripley3"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "ripley6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
- holder.icon_state = "ripley4"
- if(8)
- 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 = "ripley7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "ripley5"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "ripley8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
- holder.icon_state = "ripley6"
- 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 = "ripley9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "ripley7"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "ripley10"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "ripley8"
- 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 = "ripley11"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "ripley9"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
- holder.icon_state = "ripley12"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "ripley10"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "ripley13"
- else
- user.visible_message("[user] pries 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 = "ripley11"
- 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 the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "ripley12"
- return 1
-
-/datum/construction/reversible/mecha/ripley/spawn_result()
- ..()
- feedback_inc("mecha_ripley_created",1)
- return
-
-//////////////////////
-// Gygax
-//////////////////////
-/datum/construction/mecha/gygax_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/gygax_torso),//1
- list("key"=/obj/item/mecha_parts/part/gygax_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/gygax_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/gygax_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/gygax_right_leg),//5
- list("key"=/obj/item/mecha_parts/part/gygax_head)
- )
-
-/datum/construction/mecha/gygax_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/gygax_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/gygax_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/gygax(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "gygax0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/gygax
- result = "/obj/vehicle/sealed/mecha/combat/gygax"
- steps = list(
- //1
- list("key"=/obj/item/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/mecha_parts/part/gygax_armour,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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/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/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/circuitboard/mecha/gygax/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/circuitboard/mecha/gygax/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/circuitboard/mecha/gygax/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //17
- list("key"=/obj/item/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/gygax/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/gygax/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(20)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "gygax1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "gygax2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "gygax0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "gygax3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "gygax1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "gygax4"
- 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 = "gygax2"
- 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 = "gygax5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "gygax3"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "gygax6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/gygax/main(get_turf(holder))
- holder.icon_state = "gygax4"
- 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 = "gygax7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "gygax5"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "gygax8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/gygax/peripherals(get_turf(holder))
- holder.icon_state = "gygax6"
- 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 = "gygax9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "gygax7"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "gygax10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
- new /obj/item/circuitboard/mecha/gygax/targeting(get_turf(holder))
- holder.icon_state = "gygax8"
- 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 = "gygax11"
- else
- user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "gygax9"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
- holder.icon_state = "gygax12"
- else
- user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
- new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
- holder.icon_state = "gygax10"
- 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 = "gygax13"
- else
- user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
- holder.icon_state = "gygax11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
- holder.icon_state = "gygax14"
- 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 = "gygax12"
- 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 = "gygax15"
- else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
- holder.icon_state = "gygax13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "gygax16"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "gygax14"
- 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 = "gygax17"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "gygax15"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs Gygax Armour Plates to [holder].", "You install Gygax Armour Plates to [holder].")
- qdel(I)
- holder.icon_state = "gygax18"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "gygax16"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures Gygax Armour Plates.", "You secure Gygax Armour Plates.")
- holder.icon_state = "gygax19"
- else
- user.visible_message("[user] pries Gygax Armour Plates from [holder].", "You pry Gygax Armour Plates from [holder].")
- new /obj/item/mecha_parts/part/gygax_armour(get_turf(holder))
- holder.icon_state = "gygax17"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds Gygax Armour Plates to [holder].", "You weld Gygax Armour Plates to [holder].")
- else
- user.visible_message("[user] unfastens Gygax Armour Plates.", "You unfasten Gygax Armour Plates.")
- holder.icon_state = "gygax18"
- return 1
-
-/datum/construction/reversible/mecha/gygax/spawn_result()
- ..()
- feedback_inc("mecha_gygax_created",1)
- return
-
-
- //////////////////////
-// Serenity
-//////////////////////
-/datum/construction/mecha/serenity_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/gygax_torso),//1
- list("key"=/obj/item/mecha_parts/part/gygax_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/gygax_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/gygax_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/gygax_right_leg),//5
- list("key"=/obj/item/mecha_parts/part/gygax_head)
- )
-
-/datum/construction/mecha/serenity_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/serenity_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/serenity_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/serenity(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "gygax0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/serenity
- result = "/obj/vehicle/sealed/mecha/combat/gygax/serenity"
- steps = list(
- //1
- list("key"=/obj/item/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/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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/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/stock_parts/scanning_module/adv,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Medical module is secured"),
- //11
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Medical module is installed"),
- //12
- list("key"=/obj/item/circuitboard/mecha/gygax/medical,
- "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/circuitboard/mecha/gygax/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/circuitboard/mecha/gygax/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //17
- list("key"=/obj/item/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/serenity/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/serenity/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(20)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "gygax1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "gygax2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "gygax0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "gygax3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "gygax1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "gygax4"
- 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 = "gygax2"
- 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 = "gygax5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "gygax3"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "gygax6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/gygax/main(get_turf(holder))
- holder.icon_state = "gygax4"
- 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 = "gygax7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "gygax5"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "gygax8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/gygax/peripherals(get_turf(holder))
- holder.icon_state = "gygax6"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] installs the medical control module into [holder].", "You install the medical control module into [holder].")
- qdel(I)
- holder.icon_state = "gygax9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "gygax7"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the medical control module.", "You secure the medical control module.")
- holder.icon_state = "gygax10"
- else
- user.visible_message("[user] removes the medical control module from [holder].", "You remove the medical control module from [holder].")
- new /obj/item/circuitboard/mecha/gygax/medical(get_turf(holder))
- holder.icon_state = "gygax8"
- 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 = "gygax11"
- else
- user.visible_message("[user] unfastens the medical control module.", "You unfasten the medical control module.")
- holder.icon_state = "gygax9"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
- holder.icon_state = "gygax12"
- else
- user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
- new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
- holder.icon_state = "gygax10"
- 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 = "gygax13"
- else
- user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
- holder.icon_state = "gygax11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
- holder.icon_state = "gygax14"
- 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 = "gygax12"
- 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 = "gygax15"
- else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
- holder.icon_state = "gygax13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "gygax16"
- else
- user.visible_message("[user] pries 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 = "gygax14"
- 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 = "gygax17"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "gygax15"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs the external armor layer to [holder].", "You install the external armor layer to [holder].")
- holder.icon_state = "gygax18"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "gygax16"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures the external armor layer.", "You secure the external armor layer.")
- 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].")
- var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder)) // Fixes serenity giving Gygax Armor Plates for the reverse action...
- MS.amount = 5
- holder.icon_state = "gygax17"
- 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] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "gygax18"
- return 1
-
-/datum/construction/reversible/mecha/serenity/spawn_result()
- ..()
- feedback_inc("mecha_serenity_created",1)
- return
-
-
-
-////////////////////////
-// Firefighter
-////////////////////////
-/datum/construction/mecha/firefighter_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1
- list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/ripley_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/ripley_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/ripley_right_leg),//5
- list("key"=/obj/item/clothing/suit/fire)//6
- )
-
-/datum/construction/mecha/firefighter_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/firefighter_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/firefighter_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/firefighter(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "fireripley0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/firefighter
- result = "/obj/vehicle/sealed/mecha/working/ripley/firefighter"
- steps = list(
- //1
- list("key"=/obj/item/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"=IS_CROWBAR,
- "desc"="External armor is being installed."),
- //4
- list("key"=/obj/item/stack/material/plasteel,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //5
- list("key"=/obj/item/weldingtool,
- "backkey"=IS_WRENCH,
- "desc"="Internal armor is wrenched"),
- //6
- list("key"=IS_WRENCH,
- "backkey"=IS_CROWBAR,
- "desc"="Internal armor is installed"),
- //7
- list("key"=/obj/item/stack/material/plasteel,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Peripherals control module is secured"),
- //8
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Peripherals control module is installed"),
- //9
- list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Central control module is secured"),
- //10
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Central control module is installed"),
- //11
- list("key"=/obj/item/circuitboard/mecha/ripley/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //12
- list("key"=/obj/item/tool/wirecutters,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is added"),
- //13
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The hydraulic systems are active."),
- //14
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_WRENCH,
- "desc"="The hydraulic systems are connected."),
- //15
- list("key"=IS_WRENCH,
- "desc"="The hydraulic systems are disconnected.")
- )
-
-/datum/construction/reversible/mecha/firefighter/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/firefighter/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(15)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "fireripley1"
- if(14)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "fireripley2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "fireripley0"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "fireripley3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "fireripley1"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "fireripley4"
- 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 = "fireripley2"
- if(11)
- 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 = "fireripley5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "fireripley3"
- if(10)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "fireripley6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
- holder.icon_state = "fireripley4"
- if(9)
- 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 = "fireripley7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "fireripley5"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "fireripley8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
- holder.icon_state = "fireripley6"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].")
- holder.icon_state = "fireripley9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "fireripley7"
- if(6)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "fireripley10"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You pry internal 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 = "fireripley8"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
- holder.icon_state = "fireripley11"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "fireripley9"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] starts to install the external armor layer to [holder].", "You start to install the external armor layer to [holder].")
- holder.icon_state = "fireripley12"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "fireripley10"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
- holder.icon_state = "fireripley13"
- else
- user.visible_message("[user] removes the external armor from [holder].", "You remove the external armor from [holder].")
- var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "fireripley11"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "fireripley14"
- else
- user.visible_message("[user] pries 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 = "fireripley12"
- 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 the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "fireripley13"
- return 1
-
-/datum/construction/reversible/mecha/firefighter/spawn_result()
- ..()
- feedback_inc("mecha_firefighter_created",1)
- return
-
-//////////////////////
-// Geiger
-//////////////////////
-/datum/construction/mecha/geiger_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/geiger_torso),//1
- list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/ripley_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/ripley_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/ripley_right_leg)//5
- )
-
-/datum/construction/mecha/geiger_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/geiger_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/geiger_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/geiger(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "ripley0"
- const_holder.density = 1
- const_holder.cut_overlays()
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/geiger
- result = "/obj/vehicle/sealed/mecha/working/ripley/geiger"
- steps = list(
- //1
- list("key"=/obj/item/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/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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"="Peripherals control module is secured"),
- //7
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Peripherals control module is installed"),
- //8
- list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Central control module is secured"),
- //9
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Central control module is installed"),
- //10
- list("key"=/obj/item/circuitboard/mecha/ripley/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //11
- list("key"=IS_WIRECUTTER,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is added"),
- //12
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The hydraulic systems are active."),
- //13
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_WRENCH,
- "desc"="The hydraulic systems are connected."),
- //14
- list("key"=IS_WRENCH,
- "desc"="The hydraulic systems are disconnected.")
- )
-
-/datum/construction/reversible/mecha/geiger/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/geiger/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(14)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "ripley1"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "ripley2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "ripley0"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "ripley3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "ripley1"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "ripley4"
- 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 = "ripley2"
- if(10)
- 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 = "ripley5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "ripley3"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "ripley6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
- holder.icon_state = "ripley4"
- if(8)
- 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 = "ripley7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "ripley5"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "ripley8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
- holder.icon_state = "ripley6"
- 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 = "ripley9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "ripley7"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "ripley10"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "ripley8"
- 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 = "ripley11"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "ripley9"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
- holder.icon_state = "ripley12"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "ripley10"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "oldripley13"
- else
- user.visible_message("[user] pries 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 = "ripley11"
- 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 the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "ripley12"
- return 1
-
-/datum/construction/reversible/mecha/geiger/spawn_result()
- ..()
- feedback_inc("mecha_geiger_created",1)
- return
-
-
-//////////////////////
-// Durand
-//////////////////////
-/datum/construction/mecha/durand_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso),//1
- list("key"=/obj/item/mecha_parts/part/durand_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/durand_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/durand_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/durand_right_leg),//5
- list("key"=/obj/item/mecha_parts/part/durand_head)
- )
-
-/datum/construction/mecha/durand_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/durand_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/durand_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/durand(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "durand0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/durand
- result = "/obj/vehicle/sealed/mecha/combat/durand"
- steps = list(
- //1
- list("key"=/obj/item/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/mecha_parts/part/durand_armour,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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/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/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/circuitboard/mecha/durand/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/circuitboard/mecha/durand/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/circuitboard/mecha/durand/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //17
- list("key"=/obj/item/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/durand/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/durand/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(20)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "durand1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "durand2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "durand0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "durand3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "durand1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "durand4"
- 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 = "durand2"
- 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 = "durand5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "durand3"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "durand6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/durand/main(get_turf(holder))
- holder.icon_state = "durand4"
- 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 = "durand7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "durand5"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "durand8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/durand/peripherals(get_turf(holder))
- holder.icon_state = "durand6"
- 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 = "durand9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "durand7"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "durand10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
- new /obj/item/circuitboard/mecha/durand/targeting(get_turf(holder))
- holder.icon_state = "durand8"
- 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 = "durand11"
- else
- user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "durand9"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
- holder.icon_state = "durand12"
- else
- user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
- new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
- holder.icon_state = "durand10"
- 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 = "durand13"
- else
- user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
- holder.icon_state = "durand11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
- holder.icon_state = "durand14"
- 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 = "durand12"
- 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 = "durand15"
- else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
- holder.icon_state = "durand13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "durand16"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "durand14"
- 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 = "durand17"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "durand15"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs Durand Armour Plates to [holder].", "You install Durand Armour Plates to [holder].")
- qdel(I)
- holder.icon_state = "durand18"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "durand16"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures Durand Armour Plates.", "You secure Durand Armour Plates.")
- holder.icon_state = "durand19"
- else
- user.visible_message("[user] pries Durand Armour Plates from [holder].", "You pry Durand Armour Plates from [holder].")
- new /obj/item/mecha_parts/part/durand_armour(get_turf(holder))
- holder.icon_state = "durand17"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds Durand Armour Plates to [holder].", "You weld Durand Armour Plates to [holder].")
- else
- user.visible_message("[user] unfastens Durand Armour Plates.", "You unfasten Durand Armour Plates.")
- holder.icon_state = "durand18"
- return 1
-
-/datum/construction/reversible/mecha/durand/spawn_result()
- ..()
- feedback_inc("mecha_durand_created",1)
- return
-
-////////////////////////
-// Odysseus
-////////////////////////
-/datum/construction/mecha/odysseus_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso),//1
- list("key"=/obj/item/mecha_parts/part/odysseus_head),//2
- list("key"=/obj/item/mecha_parts/part/odysseus_left_arm),//3
- list("key"=/obj/item/mecha_parts/part/odysseus_right_arm),//4
- list("key"=/obj/item/mecha_parts/part/odysseus_left_leg),//5
- list("key"=/obj/item/mecha_parts/part/odysseus_right_leg)//6
- )
-
-/datum/construction/mecha/odysseus_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/odysseus_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/odysseus_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/odysseus(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "odysseus0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/odysseus
- result = "/obj/vehicle/sealed/mecha/medical/odysseus"
- steps = list(
- //1
- list("key"=/obj/item/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/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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"="Peripherals control module is secured"),
- //7
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Peripherals control module is installed"),
- //8
- list("key"=/obj/item/circuitboard/mecha/odysseus/peripherals,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Central control module is secured"),
- //9
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Central control module is installed"),
- //10
- list("key"=/obj/item/circuitboard/mecha/odysseus/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //11
- list("key"=/obj/item/tool/wirecutters,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is added"),
- //12
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The hydraulic systems are active."),
- //13
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_WRENCH,
- "desc"="The hydraulic systems are connected."),
- //14
- list("key"=IS_WRENCH,
- "desc"="The hydraulic systems are disconnected.")
- )
-
-/datum/construction/reversible/mecha/odysseus/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/odysseus/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(14)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "odysseus1"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "odysseus2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "odysseus0"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "odysseus3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "odysseus1"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "odysseus4"
- 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 = "odysseus2"
- if(10)
- 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 = "odysseus5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "odysseus3"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "odysseus6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/odysseus/main(get_turf(holder))
- holder.icon_state = "odysseus4"
- if(8)
- 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 = "odysseus7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "odysseus5"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "odysseus8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/odysseus/peripherals(get_turf(holder))
- holder.icon_state = "odysseus6"
- 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 = "odysseus9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "odysseus7"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "odysseus10"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "odysseus8"
- 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 = "odysseus11"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "odysseus9"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs [I] layer to [holder].", "You install external reinforced armor layer to [holder].")
- holder.icon_state = "odysseus12"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "odysseus10"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "odysseus13"
- else
- var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
- MS.amount = 5
- user.visible_message("[user] pries [MS] from [holder].", "You pry [MS] from [holder].")
- holder.icon_state = "odysseus11"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
- holder.icon_state = "odysseus14"
- else
- user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "odysseus12"
- return 1
-
-/datum/construction/reversible/mecha/odysseus/spawn_result()
- ..()
- feedback_inc("mecha_odysseus_created",1)
- return
-
-//////////////////////
-// Phazon
-//////////////////////
-/datum/construction/mecha/phazon_chassis
- result = "/obj/vehicle/sealed/mecha/combat/phazon"
- steps = list(list("key"=/obj/item/mecha_parts/part/phazon_torso),//1
- list("key"=/obj/item/mecha_parts/part/phazon_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/phazon_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/phazon_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/phazon_right_leg),//5
- list("key"=/obj/item/mecha_parts/part/phazon_head)
- )
-
-/datum/construction/mecha/phazon_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/phazon_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/phazon_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/phazon(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "phazon0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-/datum/construction/reversible/mecha/phazon
- result = "/obj/vehicle/sealed/mecha/combat/phazon"
- steps = list(
- //1
- list("key"=/obj/item/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/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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"="Hand teleporter is secured"),
- //7
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Hand teleporter is installed"),
- //8
- list("key"=/obj/item/hand_tele,
- "backkey"=IS_SCREWDRIVER,
- "desc"="SMES coil is secured"),
- //9
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="SMES coil is installed"),
- //10
- list("key"=/obj/item/smes_coil/super_capacity,
- "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/circuitboard/mecha/phazon/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/circuitboard/mecha/phazon/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/circuitboard/mecha/phazon/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //17
- list("key"=/obj/item/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/phazon/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/phazon/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 = "phazon1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "phazon2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "phazon0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "phazon3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "phazon1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "phazon4"
- 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 = "phazon2"
- 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 = "phazon5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "phazon3"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "phazon6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/phazon/main(get_turf(holder))
- holder.icon_state = "phazon4"
- 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 = "phazon7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "phazon5"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "phazon8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/phazon/peripherals(get_turf(holder))
- holder.icon_state = "phazon6"
- 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 = "phazon9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "phazon7"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "phazon10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
- new /obj/item/circuitboard/mecha/phazon/targeting(get_turf(holder))
- holder.icon_state = "phazon8"
- if(10)
- if(diff==FORWARD)
- user.visible_message("[user] installs the SMES coil to [holder].", "You install the SMES coil to [holder].")
- qdel(I)
- holder.icon_state = "phazon11"
- else
- user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "phazon9"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the SMES coil.", "You secure the SMES coil.")
- holder.icon_state = "phazon12"
- else
- user.visible_message("[user] removes the SMES coil from [holder].", "You remove the SMES coil from [holder].")
- new /obj/item/smes_coil/super_capacity(get_turf(holder))
- holder.icon_state = "phazon10"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] installs the hand teleporter to [holder].", "You install the hand teleporter to [holder].")
- qdel(I)
- holder.icon_state = "phazon13"
- else
- user.visible_message("[user] unfastens the SMES coil.", "You unfasten the SMES coil.")
- holder.icon_state = "phazon11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the hand teleporter.", "You secure the hand teleporter.")
- holder.icon_state = "phazon14"
- else
- user.visible_message("[user] removes the hand teleporter from [holder].", "You remove the hand teleporter from [holder].")
- new /obj/item/hand_tele(get_turf(holder))
- holder.icon_state = "phazon12"
- 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 = "phazon19"
- else
- user.visible_message("[user] unfastens the hand teleporter.", "You unfasten the hand teleporter.")
- holder.icon_state = "phazon13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "phazon20"
- 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 = "phazon14"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
- holder.icon_state = "phazon21"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "phazon19"
- 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 = "phazon22"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "phazon20"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "phazon23"
- 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 = "phazon21"
- 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] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "phazon22"
- return 1
-
-/datum/construction/reversible/mecha/phazon/spawn_result()
- ..()
- feedback_inc("mecha_phazon_created",1)
- return
-
-//////////////////////
-// Janus
-//////////////////////
-/datum/construction/mecha/janus_chassis
- result = "/obj/vehicle/sealed/mecha/combat/phazon/janus"
- steps = list(list("key"=/obj/item/mecha_parts/part/janus_torso),//1
- list("key"=/obj/item/mecha_parts/part/janus_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/janus_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/janus_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/janus_right_leg),//5
- list("key"=/obj/item/mecha_parts/part/janus_head)
- )
-
-/datum/construction/mecha/janus_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/janus_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/janus_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/janus(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "janus0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-/datum/construction/reversible/mecha/janus
- result = "/obj/vehicle/sealed/mecha/combat/phazon/janus"
- steps = list(
- //1
- list("key"=/obj/item/weldingtool,
- "backkey"=IS_CROWBAR,
- "desc"="External armor is installed."),
- //2
- list("key"=IS_WRENCH,
- "backkey"=IS_CROWBAR,
- "desc"="External armor is attached."),
- //3
- list("key"=/obj/item/stack/material/morphium,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded"),
- //4
- list("key"=/obj/item/weldingtool,
- "backkey"=IS_CROWBAR,
- "desc"="Internal armor is wrenched"),
- //5
- list("key"=IS_WRENCH,
- "backkey"=IS_CROWBAR,
- "desc"="Internal armor is attached."),
- //6
- list("key"=/obj/item/stack/material/durasteel,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Durand auxiliary board is secured."),
- //7
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Durand auxiliary board is installed"),
- //8
- list("key"=/obj/item/circuitboard/mecha/durand/peripherals,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Phase coil is secured"),
- //9
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Phase coil is installed"),
- //10
- list("key"=/obj/item/prop/alien/phasecoil,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Gygax balance system secured"),
- //11
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Gygax balance system installed"),
- //12
- list("key"=/obj/item/circuitboard/mecha/gygax/peripherals,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Targeting module is secured"),
- //13
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Targeting module is installed"),
- //14
- list("key"=/obj/item/circuitboard/mecha/imperion/targeting,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Peripherals control module is secured"),
- //15
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Peripherals control module is installed"),
- //16
- list("key"=/obj/item/circuitboard/mecha/imperion/peripherals,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Central control module is secured"),
- //17
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Central control module is installed"),
- //18
- list("key"=/obj/item/circuitboard/mecha/imperion/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //19
- list("key"=/obj/item/tool/wirecutters,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is added"),
- //20
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The hydraulic systems are active."),
- //21
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_WRENCH,
- "desc"="The hydraulic systems are connected."),
- //22
- list("key"=IS_WRENCH,
- "desc"="The hydraulic systems are disconnected.")
- )
-
-/datum/construction/reversible/mecha/janus/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/janus/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- switch(index)
- if(22)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "janus1"
- if(21)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "janus2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "janus0"
- if(20)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "janus3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "janus1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "janus4"
- 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 = "janus2"
- if(18)
- 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 = "janus5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "janus3"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "janus6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/imperion/main(get_turf(holder))
- holder.icon_state = "janus4"
- if(16)
- 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 = "janus7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "janus5"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "janus8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/imperion/peripherals(get_turf(holder))
- holder.icon_state = "janus6"
- if(14)
- 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 = "janus9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "janus7"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "janus10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
- new /obj/item/circuitboard/mecha/imperion/targeting(get_turf(holder))
- holder.icon_state = "janus8"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] installs the Gygax control module into [holder].", "You install the Gygax control module into [holder].")
- qdel(I)
- holder.icon_state = "janus11"
- else
- user.visible_message("[user] unfastens the Gygax control module.", "You unfasten the Gygax control module.")
- holder.icon_state = "janus9"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the Gygax control module.", "You secure the Gygax control module.")
- holder.icon_state = "janus12"
- else
- user.visible_message("[user] removes the Gygax control module from [holder].", "You remove the Gygax control module from [holder].")
- new /obj/item/circuitboard/mecha/gygax/peripherals(get_turf(holder))
- holder.icon_state = "janus10"
- if(10)
- if(diff==FORWARD)
- user.visible_message("[user] installs the phase coil into [holder].", "You install the phase coil into [holder].")
- qdel(I)
- holder.icon_state = "janus13"
- else
- user.visible_message("[user] unfastens the Gygax control module.", "You unfasten the Gygax control module.")
- holder.icon_state = "janus11"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the phase coil.", "You secure the phase coil.")
- holder.icon_state = "janus14"
- else
- user.visible_message("[user] removes the phase coil from [holder].", "You remove the phase coil from [holder].")
- new /obj/item/prop/alien/phasecoil(get_turf(holder))
- holder.icon_state = "janus12"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] installs the Durand control module into [holder].", "You install the Durand control module into [holder].")
- qdel(I)
- holder.icon_state = "janus15"
- else
- user.visible_message("[user] unfastens the phase coil.", "You unfasten the phase coil.")
- holder.icon_state = "janus13"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the Durand control module.", "You secure the Durand control module.")
- holder.icon_state = "janus16"
- else
- user.visible_message("[user] removes the Durand control module from [holder].", "You remove the Durand control module from [holder].")
- new /obj/item/circuitboard/mecha/durand/peripherals(get_turf(holder))
- holder.icon_state = "janus14"
- 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 = "janus17"
- else
- user.visible_message("[user] unfastens the Durand control module.", "You unfasten the Durand control module.")
- holder.icon_state = "janus15"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "janus18"
- 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/durasteel/MS = new /obj/item/stack/material/durasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "janus16"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
- holder.icon_state = "janus19"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "janus17"
- 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 = "janus20"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "janus18"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "janus21"
- else
- user.visible_message("[user] pries the external armor layer from [holder].", "You pry external armor layer from [holder].")
- var/obj/item/stack/material/morphium/MS = new /obj/item/stack/material/morphium(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "janus19"
- 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] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "janus20"
- return 1
-
-/datum/construction/reversible/mecha/janus/spawn_result()
- ..()
- feedback_inc("mecha_janus_created",1)
- return
-
-//////////////////////
-// Honker
-//////////////////////
-/datum/construction/mecha/honker_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/honker_torso),//1
- list("key"=/obj/item/mecha_parts/part/honker_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/honker_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/honker_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/honker_right_leg),//5
- list("key"=/obj/item/mecha_parts/part/honker_head)
- )
-
-/datum/construction/mecha/honker_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/honker_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/honker_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/honker(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "honker0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/honker
- result = "/obj/vehicle/sealed/mecha/combat/honker"
- steps = list(
- //1
- list("key"=/obj/item/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/mecha_parts/part/honker_armour,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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/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/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/circuitboard/mecha/honker/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/circuitboard/mecha/honker/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/circuitboard/mecha/honker/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //17
- list("key"=/obj/item/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/honker/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/honker/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(20)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "honker1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "honker2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "honker0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "honker3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "honker1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "honker4"
- 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 = "honker2"
- 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 = "honker5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "honker3"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "honker6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/honker/main(get_turf(holder))
- holder.icon_state = "honker4"
- 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 = "honker7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "honker5"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "honker8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/honker/peripherals(get_turf(holder))
- holder.icon_state = "honker6"
- 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 = "honker9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "honker7"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "honker10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
- new /obj/item/circuitboard/mecha/honker/targeting(get_turf(holder))
- holder.icon_state = "honker8"
- 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 = "honker11"
- else
- user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "honker9"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
- holder.icon_state = "honker12"
- else
- user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
- new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
- holder.icon_state = "honker10"
- 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 = "honker13"
- else
- user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
- holder.icon_state = "honker11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
- holder.icon_state = "honker14"
- 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 = "honker12"
- 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 = "honker15"
- else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
- holder.icon_state = "honker13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "honker16"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "honker14"
- 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 = "honker17"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "honker15"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs H.O.N.K. Armour Plates to [holder].", "You install H.O.N.K. Armour Plates to [holder].")
- qdel(I)
- holder.icon_state = "honker18"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "honker16"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures H.O.N.K. Armour Plates.", "You secure H.O.N.K. Armour Plates.")
- holder.icon_state = "honker19"
- else
- user.visible_message("[user] pries H.O.N.K. Armour Plates from [holder].", "You pry H.O.N.K. Armour Plates from [holder].")
- new /obj/item/mecha_parts/part/honker_armour(get_turf(holder))
- holder.icon_state = "honker17"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds H.O.N.K. Armour Plates to [holder].", "You weld H.O.N.K. Armour Plates to [holder].")
- else
- user.visible_message("[user] unfastens H.O.N.K. Armour Plates.", "You unfasten H.O.N.K. Armour Plates.")
- holder.icon_state = "honker18"
- return 1
-
-/datum/construction/reversible/mecha/honker/spawn_result()
- ..()
- feedback_inc("mecha_honker_created",1)
- return
-
-//////////////////////
-// Reticent
-//////////////////////
-/datum/construction/mecha/reticent_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/reticent_torso),//1
- list("key"=/obj/item/mecha_parts/part/reticent_left_arm),//2
- list("key"=/obj/item/mecha_parts/part/reticent_right_arm),//3
- list("key"=/obj/item/mecha_parts/part/reticent_left_leg),//4
- list("key"=/obj/item/mecha_parts/part/reticent_right_leg),//5
- list("key"=/obj/item/mecha_parts/part/reticent_head)
- )
-
-/datum/construction/mecha/reticent_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/reticent_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/reticent_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/reticent(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "reticent0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/reticent
- result = "/obj/vehicle/sealed/mecha/combat/reticent"
- steps = list(
- //1
- list("key"=/obj/item/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/mecha_parts/part/reticent_armour,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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/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/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/circuitboard/mecha/reticent/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/circuitboard/mecha/reticent/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/circuitboard/mecha/reticent/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //17
- list("key"=/obj/item/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/reticent/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/reticent/custom_action(index, diff, obj/item/I, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(20)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "reticent1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "reticent2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "reticent0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "reticent3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "reticent1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "reticent4"
- 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 = "reticent2"
- 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 = "reticent5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "reticent3"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "reticent6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/reticent/main(get_turf(holder))
- holder.icon_state = "reticent4"
- 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 = "reticent7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "reticent5"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "reticent8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/reticent/peripherals(get_turf(holder))
- holder.icon_state = "reticent6"
- 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 = "reticent9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "reticent7"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "reticent10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
- new /obj/item/circuitboard/mecha/reticent/targeting(get_turf(holder))
- holder.icon_state = "reticent8"
- 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 = "reticent11"
- else
- user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "reticent9"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
- holder.icon_state = "reticent12"
- else
- user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
- new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
- holder.icon_state = "reticent10"
- 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 = "reticent13"
- else
- user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
- holder.icon_state = "reticent11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
- holder.icon_state = "reticent14"
- 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 = "reticent12"
- 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 = "reticent15"
- else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
- holder.icon_state = "reticent13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "reticent16"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "reticent14"
- 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 = "reticent17"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "reticent15"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs Reticent Armour Plates to [holder].", "You install Reticent Armour Plates to [holder].")
- qdel(I)
- holder.icon_state = "reticent18"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "reticent16"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures Reticent Armour Plates.", "You secure Reticent Armour Plates.")
- holder.icon_state = "reticent19"
- else
- user.visible_message("[user] pries Reticent Armour Plates from [holder].", "You pry Reticent Armour Plates from [holder].")
- new /obj/item/mecha_parts/part/reticent_armour(get_turf(holder))
- holder.icon_state = "reticent17"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds Reticent Armour Plates to [holder].", "You weld Reticent Armour Plates to [holder].")
- else
- user.visible_message("[user] unfastens Reticent Armour Plates.", "You unfasten Reticent Armour Plates.")
- holder.icon_state = "reticent18"
- return 1
-
-/datum/construction/reversible/mecha/reticent/spawn_result()
- ..()
- feedback_inc("mecha_reticent_created",1)
- return
-
-//Fighters
-
-//////////////////////
-// Pinnace
-//////////////////////
-/datum/construction/mecha/fighter/pinnace_chassis
- result = "/obj/vehicle/sealed/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/vehicle/sealed/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/vehicle/sealed/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/vehicle/sealed/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
-
-//////////////////////
-// Duke
-//////////////////////
-/datum/construction/mecha/fighter/duke_chassis
- result = "/obj/vehicle/sealed/mecha/combat/fighter/duke"
- steps = list(list("key"=/obj/item/mecha_parts/fighter/part/duke_core),//1
- list("key"=/obj/item/mecha_parts/fighter/part/duke_cockpit),//2
- list("key"=/obj/item/mecha_parts/fighter/part/duke_main_engine),//3
- list("key"=/obj/item/mecha_parts/fighter/part/duke_left_engine),//4
- list("key"=/obj/item/mecha_parts/fighter/part/duke_right_engine),//5
- list("key"=/obj/item/mecha_parts/fighter/part/duke_left_wing),//6
- list("key"=/obj/item/mecha_parts/fighter/part/duke_right_wing)//final
- )
-
-/datum/construction/mecha/fighter/duke_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/duke_chassis/action(obj/item/I,mob/user as mob)
- return check_all_steps(I,user)
-
-/datum/construction/mecha/fighter/duke_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/fighter/duke(const_holder)
- const_holder.icon = 'icons/mecha/fighters_construction64x64.dmi'
- const_holder.icon_state = "duke0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-/datum/construction/reversible/mecha/fighter/duke
- result = "/obj/vehicle/sealed/mecha/combat/fighter/duke"
- 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/duke/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/duke/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/duke/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/duke/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/duke/action(obj/item/I,mob/user as mob)
- return check_step(I,user)
-
-/datum/construction/reversible/mecha/fighter/duke/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 = "duke1"
- 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 = "duke2"
- else
- user.visible_message("[user] removes [holder]'s hydraulic landing gear.", "You remove [holder]'s hydraulic landing gear.")
- holder.icon_state = "duke0"
- 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 = "duke3"
- else
- user.visible_message("[user] retracts [holder]'s hydraulic landing gear.", "You retract [holder]'s hydraulic landing gear.")
- holder.icon_state = "duke1"
- 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 = "duke4"
- 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 = "duke2"
- 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 = "duke5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "duke3"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the central control module.", "You secure the central control module.")
- holder.icon_state = "duke6"
- 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/duke/main(get_turf(holder))
- holder.icon_state = "duke4"
- 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 = "duke7"
- else
- user.visible_message("[user] unfastens the central control module.", "You unfasten the central control module.")
- holder.icon_state = "duke5"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the flight control module.", "You secure the flight control module.")
- holder.icon_state = "duke8"
- 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/duke/flight(get_turf(holder))
- holder.icon_state = "duke6"
- 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 = "duke9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "duke7"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the targeting control module.", "You secure the targeting control module.")
- holder.icon_state = "duke10"
- 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/duke/targeting(get_turf(holder))
- holder.icon_state = "duke8"
- 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 = "duke11"
- else
- user.visible_message("[user] unfastens the targeting control module.", "You unfasten the targeting control module.")
- holder.icon_state = "duke9"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
- holder.icon_state = "duke12"
- 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 = "duke10"
- 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 = "duke13"
- else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
- holder.icon_state = "duke11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the manual flight controls.", "You secure the manual flight controls.")
- holder.icon_state = "duke14"
- 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/duke/cockpitboard(get_turf(holder))
- holder.icon_state = "duke12"
- 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 = "duke19"
- else
- user.visible_message("[user] unfastens the manual flight controls.", "You unfasten the manual flight controls.")
- holder.icon_state = "duke13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] bolts the internal armor layer.", "You bolt the internal armor layer.")
- holder.icon_state = "duke20"
- 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 = "duke14"
- 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 = "duke21"
- else
- user.visible_message("[user] unbolt the internal armor layer.", "You unbolt the internal armor layer.")
- holder.icon_state = "duke19"
- 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 = "duke22"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "duke20"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] bolts external armor layer.", "You bolt external reinforced armor layer.")
- holder.icon_state = "duke23"
- 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 = "duke21"
- 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 = "duke22"
- return 1
-
-/datum/construction/reversible/mecha/fighter/duke/spawn_result()
- ..()
- feedback_inc("mecha_fighter_duke_created",1)
- return
diff --git a/code/modules/vehicles/sealed/mecha/mecha_control_console.dm b/code/modules/vehicles/sealed/mecha/mecha_control_console.dm
index b9c9ee11c8e..35e405b78ae 100644
--- a/code/modules/vehicles/sealed/mecha/mecha_control_console.dm
+++ b/code/modules/vehicles/sealed/mecha/mecha_control_console.dm
@@ -28,7 +28,7 @@
var/list/data = ..()
data["beacons"] = list()
- for(var/obj/item/mecha_parts/mecha_tracking/TR in world)
+ for(var/obj/item/vehicle_tracking_beacon/TR in world)
var/list/tr_data = TR.ui_data(user)
if(tr_data)
data["beacons"] += list(tr_data)
@@ -44,7 +44,7 @@
switch(action)
if("send_message")
- var/obj/item/mecha_parts/mecha_tracking/MT = locate(params["mt"])
+ var/obj/item/vehicle_tracking_beacon/MT = locate(params["mt"])
if(istype(MT))
var/message = sanitize(input(usr, "Input message", "Transmit message") as text)
var/obj/vehicle/sealed/mecha/M = MT.in_mecha()
@@ -53,13 +53,13 @@
return TRUE
if("shock")
- var/obj/item/mecha_parts/mecha_tracking/MT = locate(params["mt"])
+ var/obj/item/vehicle_tracking_beacon/MT = locate(params["mt"])
if(istype(MT))
MT.shock()
return TRUE
if("get_log")
- var/obj/item/mecha_parts/mecha_tracking/MT = locate(params["mt"])
+ var/obj/item/vehicle_tracking_beacon/MT = locate(params["mt"])
if(istype(MT))
stored_data = MT.get_mecha_log()
return TRUE
@@ -67,74 +67,3 @@
if("clear_log")
stored_data = null
return TRUE
-
-/obj/item/mecha_parts/mecha_tracking
- name = "Exosuit tracking beacon"
- desc = "Device used to transmit exosuit data."
- icon = 'icons/obj/device.dmi'
- icon_state = "motion2"
- origin_tech = list(TECH_DATA = 2, TECH_MAGNET = 2)
-
-/obj/item/mecha_parts/mecha_tracking/ui_data(mob/user, datum/tgui/ui)
- var/list/data = ..()
- if(!in_mecha())
- return FALSE
-
- var/obj/vehicle/sealed/mecha/M = loc
- data["ref"] = REF(src)
- data["charge"] = M.get_charge()
- data["name"] = M.name
- data["integrity"] = M.integrity
- data["maxHealth"] = initial(M.integrity)
- data["cell"] = M.cell
- if(M.cell)
- data["cellCharge"] = M.cell.charge
- data["cellMaxCharge"] = M.cell.charge
- data["airtank"] = M.return_pressure()
- data["pilot"] = M.occupant_legacy
- data["location"] = get_area(M)
- data["active"] = M.selected
- if(istype(M, /obj/vehicle/sealed/mecha/working/ripley))
- var/obj/vehicle/sealed/mecha/working/ripley/RM = M
- data["cargoUsed"] = RM.cargo.len
- data["cargoMax"] = RM.cargo_capacity
-
- return data
-
-/obj/item/mecha_parts/mecha_tracking/emp_act()
- qdel(src)
- return
-
-/obj/item/mecha_parts/mecha_tracking/legacy_ex_act()
- qdel(src)
- return
-
-/obj/item/mecha_parts/mecha_tracking/proc/in_mecha()
- if(istype(loc, /obj/vehicle/sealed/mecha))
- return loc
- return 0
-
-/obj/item/mecha_parts/mecha_tracking/proc/shock()
- var/obj/vehicle/sealed/mecha/M = in_mecha()
- if(M)
- M.emp_act(4)
- qdel(src)
-
-/obj/item/mecha_parts/mecha_tracking/proc/get_mecha_log()
- if(!in_mecha())
- return list()
- var/obj/vehicle/sealed/mecha/M = loc
- return M.get_log_tgui()
-
-
-/obj/item/storage/box/mechabeacons
- name = "Exosuit Tracking Beacons"
-
-/obj/item/storage/box/mechabeacons/legacy_spawn_contents()
- new /obj/item/mecha_parts/mecha_tracking(src)
- new /obj/item/mecha_parts/mecha_tracking(src)
- new /obj/item/mecha_parts/mecha_tracking(src)
- new /obj/item/mecha_parts/mecha_tracking(src)
- new /obj/item/mecha_parts/mecha_tracking(src)
- new /obj/item/mecha_parts/mecha_tracking(src)
- new /obj/item/mecha_parts/mecha_tracking(src)
diff --git a/code/modules/vehicles/sealed/mecha/mecha_parts.dm b/code/modules/vehicles/sealed/mecha/mecha_parts.dm
deleted file mode 100644
index 22f7f2c7407..00000000000
--- a/code/modules/vehicles/sealed/mecha/mecha_parts.dm
+++ /dev/null
@@ -1,616 +0,0 @@
- /////////////////////////
-////// Mecha Parts //////
-/////////////////////////
-
-// Mecha circuitboards can be found in /code/game/objects/items/weapons/circuitboards/mecha.dm
-
-/obj/item/mecha_parts
- name = "mecha part"
- icon = 'icons/mecha/mech_construct.dmi'
- icon_state = "blank"
- w_class = WEIGHT_CLASS_HUGE
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2)
-
-
-/obj/item/mecha_parts/chassis
- name="Mecha Chassis"
- icon_state = "backbone"
- var/datum/construction/construct
-
-/obj/item/mecha_parts/chassis/attackby(obj/item/W, mob/user)
- if(!construct || !construct.action(W, user))
- ..()
- return
-
-/obj/item/mecha_parts/chassis/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
- return
-
-//! Ripley
-
-/obj/item/mecha_parts/chassis/ripley
- name = "Ripley Chassis"
-
-/obj/item/mecha_parts/chassis/ripley/New()
- ..()
- construct = new /datum/construction/mecha/ripley_chassis(src)
-
-/obj/item/mecha_parts/part/ripley_torso
- name="Ripley Torso"
- desc="A torso part of Ripley APLU. Contains power unit, processing core and life support systems."
- icon_state = "ripley_harness"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/part/ripley_left_arm
- name="Ripley Left Arm"
- desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "ripley_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/part/ripley_right_arm
- name="Ripley Right Arm"
- desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "ripley_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/part/ripley_left_leg
- name="Ripley Left Leg"
- desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "ripley_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/part/ripley_right_leg
- name="Ripley Right Leg"
- desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "ripley_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-//! Gygax
-
-/obj/item/mecha_parts/chassis/gygax
- name = "Gygax Chassis"
-
-/obj/item/mecha_parts/chassis/gygax/New()
- ..()
- construct = new /datum/construction/mecha/gygax_chassis(src)
-
-/obj/item/mecha_parts/part/gygax_torso
- name="Gygax Torso"
- desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot."
- icon_state = "gygax_harness"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/gygax_head
- name="Gygax Head"
- desc="A Gygax head. Houses advanced surveilance and targeting sensors."
- icon_state = "gygax_head"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/gygax_left_arm
- name="Gygax Left Arm"
- desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
- icon_state = "gygax_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/gygax_right_arm
- name="Gygax Right Arm"
- desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
- icon_state = "gygax_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/gygax_left_leg
- name="Gygax Left Leg"
- icon_state = "gygax_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/gygax_right_leg
- name="Gygax Right Leg"
- icon_state = "gygax_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/gygax_armour
- name="Gygax Armour Plates"
- icon_state = "gygax_armour"
- origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
-
-//! Serenity
-
-/obj/item/mecha_parts/chassis/serenity
- name = "Serenity Chassis"
-
-/obj/item/mecha_parts/chassis/serenity/New()
- ..()
- construct = new /datum/construction/mecha/serenity_chassis(src)
-
-//! Durand
-
-/obj/item/mecha_parts/chassis/durand
- name = "Durand Chassis"
-
-/obj/item/mecha_parts/chassis/durand/New()
- ..()
- construct = new /datum/construction/mecha/durand_chassis(src)
-
-/obj/item/mecha_parts/part/durand_torso
- name="Durand Torso"
- icon_state = "durand_harness"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/durand_head
- name="Durand Head"
- icon_state = "durand_head"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/durand_left_arm
- name="Durand Left Arm"
- icon_state = "durand_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/durand_right_arm
- name="Durand Right Arm"
- icon_state = "durand_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/durand_left_leg
- name="Durand Left Leg"
- icon_state = "durand_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/durand_right_leg
- name="Durand Right Leg"
- icon_state = "durand_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/part/durand_armour
- name="Durand Armour Plates"
- icon_state = "durand_armour"
- origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
-
-
-
-//! Firefighter
-
-/obj/item/mecha_parts/chassis/firefighter
- name = "Firefighter Chassis"
-
-/obj/item/mecha_parts/chassis/firefighter/New()
- ..()
- construct = new /datum/construction/mecha/firefighter_chassis(src)
-/*
-/obj/item/mecha_parts/part/firefighter_torso
- name="Ripley-on-Fire Torso"
- icon_state = "ripley_harness"
-
-/obj/item/mecha_parts/part/firefighter_left_arm
- name="Ripley-on-Fire Left Arm"
- icon_state = "ripley_l_arm"
-
-/obj/item/mecha_parts/part/firefighter_right_arm
- name="Ripley-on-Fire Right Arm"
- icon_state = "ripley_r_arm"
-
-/obj/item/mecha_parts/part/firefighter_left_leg
- name="Ripley-on-Fire Left Leg"
- icon_state = "ripley_l_leg"
-
-/obj/item/mecha_parts/part/firefighter_right_leg
- name="Ripley-on-Fire Right Leg"
- icon_state = "ripley_r_leg"
-*/
-
-//! Geiger
-
-/obj/item/mecha_parts/chassis/geiger
- name = "Lightweight APLU Chassis"
-
-/obj/item/mecha_parts/chassis/geiger/New()
- ..()
- construct = new /datum/construction/mecha/geiger_chassis(src)
-
-/obj/item/mecha_parts/part/geiger_torso
- name="Lightweight APLU Torso"
- icon_state = "ripley_harness"
-
-
-//! Phazon
-
-/obj/item/mecha_parts/chassis/phazon
- name = "Phazon Chassis"
- origin_tech = list(TECH_MATERIAL = 7)
-
-/obj/item/mecha_parts/chassis/phazon/New()
- ..()
- construct = new /datum/construction/mecha/phazon_chassis(src)
-
-/obj/item/mecha_parts/part/phazon_torso
- name="Phazon Torso"
- icon_state = "phazon_harness"
- //construction_time = 300
- //construction_cost = list(MAT_STEEL=35000,"glass"=10000,"phoron"=20000)
- origin_tech = list(TECH_DATA = 5, TECH_MATERIAL = 7, TECH_BLUESPACE = 6, TECH_POWER = 6)
-
-/obj/item/mecha_parts/part/phazon_head
- name="Phazon Head"
- icon_state = "phazon_head"
- //construction_time = 200
- //construction_cost = list(MAT_STEEL=15000,"glass"=5000,"phoron"=10000)
- origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 5, TECH_MAGNET = 6)
-
-/obj/item/mecha_parts/part/phazon_left_arm
- name="Phazon Left Arm"
- icon_state = "phazon_l_arm"
- //construction_time = 200
- //construction_cost = list(MAT_STEEL=20000,"phoron"=10000)
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
-
-/obj/item/mecha_parts/part/phazon_right_arm
- name="Phazon Right Arm"
- icon_state = "phazon_r_arm"
- //construction_time = 200
- //construction_cost = list(MAT_STEEL=20000,"phoron"=10000)
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
-
-/obj/item/mecha_parts/part/phazon_left_leg
- name="Phazon Left Leg"
- icon_state = "phazon_l_leg"
- //construction_time = 200
- //construction_cost = list(MAT_STEEL=20000,"phoron"=10000)
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
-
-/obj/item/mecha_parts/part/phazon_right_leg
- name="Phazon Right Leg"
- icon_state = "phazon_r_leg"
- //construction_time = 200
- //construction_cost = list(MAT_STEEL=20000,"phoron"=10000)
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
-
-///////// Odysseus
-
-
-/obj/item/mecha_parts/chassis/odysseus
- name = "Odysseus Chassis"
-
-/obj/item/mecha_parts/chassis/odysseus/New()
- ..()
- construct = new /datum/construction/mecha/odysseus_chassis(src)
-
-/obj/item/mecha_parts/part/odysseus_head
- name="Odysseus Head"
- icon_state = "odysseus_head"
- origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 2)
-
-/obj/item/mecha_parts/part/odysseus_torso
- name="Odysseus Torso"
- desc="A torso part of Odysseus. Contains power unit, processing core and life support systems."
- icon_state = "odysseus_torso"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/part/odysseus_left_arm
- name="Odysseus Left Arm"
- desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "odysseus_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/part/odysseus_right_arm
- name="Odysseus Right Arm"
- desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "odysseus_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/part/odysseus_left_leg
- name="Odysseus Left Leg"
- desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "odysseus_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/part/odysseus_right_leg
- name="Odysseus Right Leg"
- desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "odysseus_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/*/obj/item/mecha_parts/part/odysseus_armour
- name="Odysseus Carapace"
- icon_state = "odysseus_armour"
- origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
- construction_time = 200
- construction_cost = list(MAT_STEEL=15000)*/
-
-//! Janus
-
-/obj/item/mecha_parts/chassis/janus
- name = "Janus Chassis"
- origin_tech = list(TECH_MATERIAL = 7)
-
-/obj/item/mecha_parts/chassis/janus/New()
- ..()
- construct = new /datum/construction/mecha/janus_chassis(src)
-
-/obj/item/mecha_parts/part/janus_torso
- name="Imperion Torso"
- icon_state = "janus_harness"
- origin_tech = list(TECH_DATA = 5, TECH_MATERIAL = 7, TECH_BLUESPACE = 2, TECH_POWER = 6, TECH_PRECURSOR = 2)
-
-/obj/item/mecha_parts/part/janus_head
- name="Imperion Head"
- icon_state = "janus_head"
- origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 5, TECH_MAGNET = 6, TECH_PRECURSOR = 1)
-
-/obj/item/mecha_parts/part/janus_left_arm
- name="Prototype Gygax Left Arm"
- icon_state = "janus_l_arm"
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
-
-/obj/item/mecha_parts/part/janus_right_arm
- name="Prototype Gygax Right Arm"
- icon_state = "janus_r_arm"
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
-
-/obj/item/mecha_parts/part/janus_left_leg
- name="Prototype Durand Left Leg"
- icon_state = "janus_l_leg"
- origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3, TECH_ARCANE = 1)
-
-/obj/item/mecha_parts/part/janus_right_leg
- 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)
-
-//! Honker
-
-/obj/item/mecha_parts/chassis/honker
- name = "H.O.N.K. Chassis"
-
-/obj/item/mecha_parts/chassis/honker/New()
- ..()
- construct = new /datum/construction/mecha/honker_chassis(src)
-
-/obj/item/mecha_parts/part/honker_torso
- name="H.O.N.K. Torso"
- desc="A H.O.N.K. torso. The lining requires a distressing amount of rubber."
- icon_state = "honker_harness"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/honker_head
- name="H.O.N.K. Head"
- desc="A H.O.N.K. head. Houses advanced slip prediction sensors and a squeezable nose."
- icon_state = "honker_head"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/honker_left_arm
- name="H.O.N.K. Left Arm"
- desc="A H.O.N.K. left arm. Data and power sockets are compatible with the most hilarious tools and weapons."
- icon_state = "honker_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/honker_right_arm
- name="H.O.N.K. Right Arm"
- desc="A H.O.N.K. right arm. Data and power sockets are compatible with the most hilarious tools and weapons."
- icon_state = "honker_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/honker_left_leg
- name="H.O.N.K. Left Leg"
- icon_state = "honker_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/honker_right_leg
- name="H.O.N.K. Right Leg"
- icon_state = "honker_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/honker_armour
- name="H.O.N.K. Armour Plates"
- icon_state = "honker_armour"
- origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 5)
-
-//! Reticent
-
-/obj/item/mecha_parts/chassis/reticent
- name = "Reticent Chassis"
-
-/obj/item/mecha_parts/chassis/reticent/New()
- ..()
- construct = new /datum/construction/mecha/reticent_chassis(src)
-
-/obj/item/mecha_parts/part/reticent_torso
- name="Reticent Torso"
- desc="A Reticent torso. The hull is augmented by a Silencium mosaic."
- icon_state = "reticent_harness"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_BIO = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/reticent_head
- name="Reticent Head"
- desc="A Reticent head. The eyes stare dispassionately back at you."
- icon_state = "reticent_head"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_MAGNET = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/reticent_left_arm
- name="Reticent Left Arm"
- desc="A Reticent left arm. Data and power sockets are compatible with general weapons, and wickedly silent alternatives."
- icon_state = "reticent_l_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/reticent_right_arm
- name="Reticent Right Arm"
- desc="A Reticent right arm. Data and power sockets are compatible with general weapons, and wickedly silent alternatives."
- icon_state = "reticent_r_arm"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/reticent_left_leg
- name="Reticent Left Leg"
- icon_state = "reticent_l_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/reticent_right_leg
- name="Reticent Right Leg"
- icon_state = "reticent_r_leg"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
-
-/obj/item/mecha_parts/part/reticent_armour
- name="Reticent Armour Plates"
- icon_state = "reticent_armour"
- origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 5)
-
-
-///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, datum/event_args/actor/clickchain/e_args)
- 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_BIO = 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_BIO = 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)
-
-//! Duke
-
-/obj/item/mecha_parts/fighter/chassis/duke
- name = "\improper Duke Chassis"
- icon_state = "duke_chassis"
-
- origin_tech = list(TECH_MATERIAL = 2)
-
-/obj/item/mecha_parts/fighter/chassis/duke/New()
- ..()
- construct = new /datum/construction/mecha/fighter/duke_chassis(src)
-
-
-/obj/item/mecha_parts/fighter/part/duke_core
- name="\improper Duke Core"
- icon_state = "duke_core"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_BIO = 2, TECH_ENGINEERING = 4)
-
-/obj/item/mecha_parts/fighter/part/duke_cockpit
- name="\improper Duke Cockpit"
- icon_state = "duke_cockpit"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_BIO = 2, TECH_ENGINEERING = 4)
-
-/obj/item/mecha_parts/fighter/part/duke_left_wing
- name="\improper Duke Left Wing"
- icon_state = "duke_l_wing"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
-
-/obj/item/mecha_parts/fighter/part/duke_right_wing
- name="\improper Duke Right Wing"
- icon_state = "duke_r_wing"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
-
-/obj/item/mecha_parts/fighter/part/duke_main_engine
- name="\improper Duke Main Engine"
- icon_state = "duke_m_engine"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
-
-/obj/item/mecha_parts/fighter/part/duke_left_engine
- name="\improper Duke Left Engine"
- icon_state = "duke_l_engine"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
-
-/obj/item/mecha_parts/fighter/part/duke_right_engine
- name="\improper Duke Right Engine"
- icon_state = "duke_r_engine"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
diff --git a/code/modules/vehicles/sealed/mecha/mecha_vr.dm b/code/modules/vehicles/sealed/mecha/mecha_vr.dm
deleted file mode 100644
index 063d260d4ef..00000000000
--- a/code/modules/vehicles/sealed/mecha/mecha_vr.dm
+++ /dev/null
@@ -1,3 +0,0 @@
-/obj/vehicle/sealed/mecha
- damage_minimum = 5 //Incoming damage lower than this won't actually deal damage. Scrapes shouldn't be a real thing.
- minimum_penetration = 10 //Incoming damage won't be fully applied if you don't have at least 20. Almost all AP clears this.
diff --git a/code/modules/vehicles/sealed/mecha/mecha_wreckage.dm b/code/modules/vehicles/sealed/mecha/mecha_wreckage.dm
index c7f2b5ee239..060509e5827 100644
--- a/code/modules/vehicles/sealed/mecha/mecha_wreckage.dm
+++ b/code/modules/vehicles/sealed/mecha/mecha_wreckage.dm
@@ -31,7 +31,7 @@
if(type)
var/N = new type(get_turf(user))
user.visible_message("[user] cuts [N] from [src]", "You cut [N] from [src]", "You hear a sound of welder nearby")
- if(istype(N, /obj/item/mecha_parts/part))
+ if(istype(N, /obj/item/vehicle_part))
welder_salvage -= type
salvage_num--
else
@@ -73,12 +73,12 @@
/obj/effect/decal/mecha_wreckage/gygax/New()
..()
var/list/parts = list(
- /obj/item/mecha_parts/part/gygax_torso,
- /obj/item/mecha_parts/part/gygax_head,
- /obj/item/mecha_parts/part/gygax_left_arm,
- /obj/item/mecha_parts/part/gygax_right_arm,
- /obj/item/mecha_parts/part/gygax_left_leg,
- /obj/item/mecha_parts/part/gygax_right_leg,
+ /obj/item/vehicle_part/gygax_torso,
+ /obj/item/vehicle_part/gygax_head,
+ /obj/item/vehicle_part/gygax_left_arm,
+ /obj/item/vehicle_part/gygax_right_arm,
+ /obj/item/vehicle_part/gygax_left_leg,
+ /obj/item/vehicle_part/gygax_right_leg,
)
for(var/i=0;i<2;i++)
if(!!length(parts) && prob(40))
@@ -127,11 +127,11 @@
/obj/effect/decal/mecha_wreckage/ripley/New()
..()
var/list/parts = list(
- /obj/item/mecha_parts/part/ripley_torso,
- /obj/item/mecha_parts/part/ripley_left_arm,
- /obj/item/mecha_parts/part/ripley_right_arm,
- /obj/item/mecha_parts/part/ripley_left_leg,
- /obj/item/mecha_parts/part/ripley_right_leg,
+ /obj/item/vehicle_part/ripley_torso,
+ /obj/item/vehicle_part/ripley_left_arm,
+ /obj/item/vehicle_part/ripley_right_arm,
+ /obj/item/vehicle_part/ripley_left_leg,
+ /obj/item/vehicle_part/ripley_right_leg,
)
for(var/i=0;i<2;i++)
if(!!length(parts) && prob(40))
@@ -147,11 +147,11 @@
/obj/effect/decal/mecha_wreckage/ripley/firefighter/New()
..()
var/list/parts = list(
- /obj/item/mecha_parts/part/ripley_torso,
- /obj/item/mecha_parts/part/ripley_left_arm,
- /obj/item/mecha_parts/part/ripley_right_arm,
- /obj/item/mecha_parts/part/ripley_left_leg,
- /obj/item/mecha_parts/part/ripley_right_leg,
+ /obj/item/vehicle_part/ripley_torso,
+ /obj/item/vehicle_part/ripley_left_arm,
+ /obj/item/vehicle_part/ripley_right_arm,
+ /obj/item/vehicle_part/ripley_left_leg,
+ /obj/item/vehicle_part/ripley_right_leg,
/obj/item/clothing/suit/fire,
)
for(var/i=0;i<2;i++)
@@ -168,11 +168,11 @@
/obj/effect/decal/mecha_wreckage/ripley/geiger/New()
..()
var/list/parts = list(
- /obj/item/mecha_parts/part/geiger_torso,
- /obj/item/mecha_parts/part/ripley_left_arm,
- /obj/item/mecha_parts/part/ripley_right_arm,
- /obj/item/mecha_parts/part/ripley_left_leg,
- /obj/item/mecha_parts/part/ripley_right_leg,
+ /obj/item/vehicle_part/geiger_torso,
+ /obj/item/vehicle_part/ripley_left_arm,
+ /obj/item/vehicle_part/ripley_right_arm,
+ /obj/item/vehicle_part/ripley_left_leg,
+ /obj/item/vehicle_part/ripley_right_leg,
)
for(var/i=0;i<2;i++)
if(!!length(parts) && prob(40))
@@ -193,12 +193,12 @@
/obj/effect/decal/mecha_wreckage/durand/New()
..()
var/list/parts = list(
- /obj/item/mecha_parts/part/durand_torso,
- /obj/item/mecha_parts/part/durand_head,
- /obj/item/mecha_parts/part/durand_left_arm,
- /obj/item/mecha_parts/part/durand_right_arm,
- /obj/item/mecha_parts/part/durand_left_leg,
- /obj/item/mecha_parts/part/durand_right_leg,
+ /obj/item/vehicle_part/durand_torso,
+ /obj/item/vehicle_part/durand_head,
+ /obj/item/vehicle_part/durand_left_arm,
+ /obj/item/vehicle_part/durand_right_arm,
+ /obj/item/vehicle_part/durand_left_leg,
+ /obj/item/vehicle_part/durand_right_leg,
)
for(var/i=0;i<2;i++)
if(!!length(parts) && prob(40))
@@ -219,12 +219,12 @@
/obj/effect/decal/mecha_wreckage/odysseus/New()
..()
var/list/parts = list(
- /obj/item/mecha_parts/part/odysseus_torso,
- /obj/item/mecha_parts/part/odysseus_head,
- /obj/item/mecha_parts/part/odysseus_left_arm,
- /obj/item/mecha_parts/part/odysseus_right_arm,
- /obj/item/mecha_parts/part/odysseus_left_leg,
- /obj/item/mecha_parts/part/odysseus_right_leg,
+ /obj/item/vehicle_part/odysseus_torso,
+ /obj/item/vehicle_part/odysseus_head,
+ /obj/item/vehicle_part/odysseus_left_arm,
+ /obj/item/vehicle_part/odysseus_right_arm,
+ /obj/item/vehicle_part/odysseus_left_leg,
+ /obj/item/vehicle_part/odysseus_right_leg,
)
for(var/i=0;i<2;i++)
if(!!length(parts) && prob(40))
@@ -261,12 +261,12 @@
/obj/effect/decal/mecha_wreckage/honker/New()
..()
var/list/parts = list(
- /obj/item/mecha_parts/part/honker_torso,
- /obj/item/mecha_parts/part/honker_head,
- /obj/item/mecha_parts/part/honker_left_arm,
- /obj/item/mecha_parts/part/honker_right_arm,
- /obj/item/mecha_parts/part/honker_left_leg,
- /obj/item/mecha_parts/part/honker_right_leg,
+ /obj/item/vehicle_part/honker_torso,
+ /obj/item/vehicle_part/honker_head,
+ /obj/item/vehicle_part/honker_left_arm,
+ /obj/item/vehicle_part/honker_right_arm,
+ /obj/item/vehicle_part/honker_left_leg,
+ /obj/item/vehicle_part/honker_right_leg,
)
for(var/i=0;i<2;i++)
if(!!length(parts) && prob(40))
@@ -288,12 +288,12 @@
/obj/effect/decal/mecha_wreckage/reticent/New()
..()
var/list/parts = list(
- /obj/item/mecha_parts/part/reticent_torso,
- /obj/item/mecha_parts/part/reticent_head,
- /obj/item/mecha_parts/part/reticent_left_arm,
- /obj/item/mecha_parts/part/reticent_right_arm,
- /obj/item/mecha_parts/part/reticent_left_leg,
- /obj/item/mecha_parts/part/reticent_right_leg,
+ /obj/item/vehicle_part/reticent_torso,
+ /obj/item/vehicle_part/reticent_head,
+ /obj/item/vehicle_part/reticent_left_arm,
+ /obj/item/vehicle_part/reticent_right_arm,
+ /obj/item/vehicle_part/reticent_left_leg,
+ /obj/item/vehicle_part/reticent_right_leg,
)
for(var/i=0;i<2;i++)
if(!!length(parts) && prob(40))
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/armor_melee.dm b/code/modules/vehicles/sealed/mecha/modules/tools/armor_melee.dm
similarity index 74%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/armor_melee.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/armor_melee.dm
index ca8fafd614e..65c8a29c188 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/armor_melee.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/armor_melee.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster //what is that noise? A BAWWW from MUTATION_TELEKINESIS mutants.
+/obj/item/vehicle_module/anticcw_armor_booster //what is that noise? A BAWWW from MUTATION_TELEKINESIS mutants.
name = "\improper CCW armor booster"
desc = "Close-combat armor booster. Boosts exosuit armor against armed melee attacks. Requires energy to operate."
icon_state = "mecha_abooster_ccw"
@@ -13,11 +13,11 @@
equip_type = EQUIP_HULL
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/get_equip_info()
+/obj/item/vehicle_module/anticcw_armor_booster/get_equip_info()
if(!chassis) return
return "
* [src.name]"
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/handle_melee_contact(var/obj/item/W, var/mob/living/user, var/inc_damage = null)
+/obj/item/vehicle_module/anticcw_armor_booster/handle_melee_contact(var/obj/item/W, var/mob/living/user, var/inc_damage = null)
if(!action_checks(user))
return inc_damage
chassis.log_message("Attacked by [W]. Attacker - [user]")
@@ -37,23 +37,23 @@
/*
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/can_attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/anticcw_armor_booster/can_attach(obj/vehicle/sealed/mecha/M as obj)
if(..())
if(!M.proc_res["dynattackby"])
return 1
return 0
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/anticcw_armor_booster/attach(obj/vehicle/sealed/mecha/M as obj)
..()
chassis.proc_res["dynattackby"] = src
return
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/detach()
+/obj/item/vehicle_module/anticcw_armor_booster/detach()
chassis.proc_res["dynattackby"] = null
..()
return
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/proc/dynattackby(obj/item/W as obj, mob/user as mob)
+/obj/item/vehicle_module/anticcw_armor_booster/proc/dynattackby(obj/item/W as obj, mob/user as mob)
if(!action_checks(user))
return chassis.dynattackby(W,user)
chassis.log_message("Attacked by [W]. Attacker - [user]")
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/armor_ranged.dm b/code/modules/vehicles/sealed/mecha/modules/tools/armor_ranged.dm
similarity index 78%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/armor_ranged.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/armor_ranged.dm
index 4903213edf8..18f34581d29 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/armor_ranged.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/armor_ranged.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
+/obj/item/vehicle_module/antiproj_armor_booster
name = "\improper RW armor booster"
desc = "Ranged-weaponry armor booster. Boosts exosuit armor against ranged attacks. Completely blocks taser shots, but requires energy to operate."
icon_state = "mecha_abooster_proj"
@@ -13,7 +13,7 @@
equip_type = EQUIP_HULL
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/handle_projectile_contact(var/obj/projectile/Proj, var/inc_damage)
+/obj/item/vehicle_module/antiproj_armor_booster/handle_projectile_contact(var/obj/projectile/Proj, var/inc_damage)
if(!action_checks(src))
return inc_damage
if(prob(chassis.deflect_chance*deflect_coeff))
@@ -29,7 +29,7 @@
do_after_cooldown()
return max(0, inc_damage)
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/handle_ranged_contact(var/obj/A, var/inc_damage = 0)
+/obj/item/vehicle_module/antiproj_armor_booster/handle_ranged_contact(var/obj/A, var/inc_damage = 0)
if(!action_checks(A))
return inc_damage
if(prob(chassis.deflect_chance*deflect_coeff))
@@ -45,30 +45,30 @@
do_after_cooldown()
return max(0, inc_damage)
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/get_equip_info()
+/obj/item/vehicle_module/antiproj_armor_booster/get_equip_info()
if(!chassis) return
return "
* [src.name]"
/*
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/can_attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/antiproj_armor_booster/can_attach(obj/vehicle/sealed/mecha/M as obj)
if(..())
if(!M.proc_res["dynbulletdamage"] && !M.proc_res["dynhitby"])
return 1
return 0
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/antiproj_armor_booster/attach(obj/vehicle/sealed/mecha/M as obj)
..()
chassis.proc_res["dynbulletdamage"] = src
chassis.proc_res["dynhitby"] = src
return
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/detach()
+/obj/item/vehicle_module/antiproj_armor_booster/detach()
chassis.proc_res["dynbulletdamage"] = null
chassis.proc_res["dynhitby"] = null
..()
return
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/proc/dynbulletdamage(var/obj/projectile/Proj)
+/obj/item/vehicle_module/antiproj_armor_booster/proc/dynbulletdamage(var/obj/projectile/Proj)
if(istype(Proj, /obj/projectile/test))
return // Don't care about test projectiles, just what comes after them
if(!action_checks(src))
@@ -86,10 +86,10 @@
do_after_cooldown()
return
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/proc/dynhitby(atom/movable/A)
+/obj/item/vehicle_module/antiproj_armor_booster/proc/dynhitby(atom/movable/A)
if(!action_checks(A))
return chassis.dynhitby(A)
- if(prob(chassis.deflect_chance*deflect_coeff) || istype(A, /mob/living) || istype(A, /obj/item/mecha_parts/mecha_tracking))
+ if(prob(chassis.deflect_chance*deflect_coeff) || istype(A, /mob/living) || istype(A, /obj/item/vehicle_tracking_beacon))
chassis.occupant_message("
The [A] bounces off the armor.")
chassis.visible_message("The [A] bounces off the [chassis] armor")
chassis.log_append_to_last("Armor saved.")
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/cable_layer.dm b/code/modules/vehicles/sealed/mecha/modules/tools/cable_layer.dm
similarity index 78%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/cable_layer.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/cable_layer.dm
index ef704fa8c92..b1c125664ee 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/cable_layer.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/cable_layer.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer
+/obj/item/vehicle_module/tool/cable_layer
name = "Cable Layer"
icon_state = "mecha_wire"
var/turf/old_turf
@@ -7,15 +7,15 @@
var/max_cable = 1000
required_type = list(/obj/vehicle/sealed/mecha/working)
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/Initialize(mapload)
+/obj/item/vehicle_module/tool/cable_layer/Initialize(mapload)
. = ..()
cable = new(src)
cable.amount = 0
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/MoveAction()
+/obj/item/vehicle_module/tool/cable_layer/MoveAction()
layCable()
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/action(var/obj/item/stack/cable_coil/target)
+/obj/item/vehicle_module/tool/cable_layer/action(var/obj/item/stack/cable_coil/target)
if(!action_checks(target))
return
var/result = load_cable(target)
@@ -30,7 +30,7 @@
occupant_message(message)
return
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/Topic(href,href_list)
+/obj/item/vehicle_module/tool/cable_layer/Topic(href,href_list)
..()
if(href_list["toggle"])
set_ready_state(!equip_ready)
@@ -49,13 +49,13 @@
occupant_message("There's no more cable on the reel.")
return
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/get_equip_info()
+/obj/item/vehicle_module/tool/cable_layer/get_equip_info()
var/output = ..()
if(output)
return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "-
[!equip_ready?"Dea":"A"]ctivate|
Cut" : null]"
return
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/proc/load_cable(var/obj/item/stack/cable_coil/CC)
+/obj/item/vehicle_module/tool/cable_layer/proc/load_cable(var/obj/item/stack/cable_coil/CC)
if(istype(CC) && CC.amount)
var/cur_amount = cable? cable.amount : 0
var/to_load = max(max_cable - cur_amount,0)
@@ -71,7 +71,7 @@
return 0
return
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/proc/use_cable(amount)
+/obj/item/vehicle_module/tool/cable_layer/proc/use_cable(amount)
if(!cable || cable.amount<1)
set_ready_state(1)
occupant_message("Cable depleted, [src] deactivated.")
@@ -84,10 +84,10 @@
update_equip_info()
return 1
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/proc/reset()
+/obj/item/vehicle_module/tool/cable_layer/proc/reset()
last_piece = null
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/proc/dismantleFloor(var/turf/new_turf)
+/obj/item/vehicle_module/tool/cable_layer/proc/dismantleFloor(var/turf/new_turf)
new_turf = get_turf(chassis)
if(istype(new_turf, /turf/simulated/floor))
var/turf/simulated/floor/T = new_turf
@@ -95,7 +95,7 @@
T.auto_dismantle_flooring()
return new_turf.is_plating()
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer/proc/layCable(var/turf/new_turf)
+/obj/item/vehicle_module/tool/cable_layer/proc/layCable(var/turf/new_turf)
new_turf = get_turf(chassis)
if(equip_ready || !istype(new_turf, /turf/simulated/floor) || !dismantleFloor(new_turf))
return reset()
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/catapult.dm b/code/modules/vehicles/sealed/mecha/modules/tools/catapult.dm
similarity index 89%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/catapult.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/catapult.dm
index 93f46dae4ec..a343d924ffb 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/catapult.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/catapult.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/gravcatapult
+/obj/item/vehicle_module/gravcatapult
name = "gravitational catapult"
desc = "An exosuit mounted gravitational catapult."
icon_state = "mecha_teleport"
@@ -14,7 +14,7 @@
equip_type = EQUIP_UTILITY
-/obj/item/mecha_parts/mecha_equipment/gravcatapult/action(atom/movable/target)
+/obj/item/vehicle_module/gravcatapult/action(atom/movable/target)
if(world.time >= last_fired + fire_delay)
last_fired = world.time
@@ -65,10 +65,10 @@
do_after_cooldown()
return
-/obj/item/mecha_parts/mecha_equipment/gravcatapult/get_equip_info()
+/obj/item/vehicle_module/gravcatapult/get_equip_info()
return "[..()] [mode==1?"([locked||"Nothing"])":null] \[
S|
P\]"
-/obj/item/mecha_parts/mecha_equipment/gravcatapult/Topic(href, href_list)
+/obj/item/vehicle_module/gravcatapult/Topic(href, href_list)
..()
if(href_list["mode"])
mode = text2num(href_list["mode"])
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/cloak.dm b/code/modules/vehicles/sealed/mecha/modules/tools/cloak.dm
similarity index 72%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/cloak.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/cloak.dm
index 51f912da193..746cd2cbd7c 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/cloak.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/cloak.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/cloak
+/obj/item/vehicle_module/cloak
name = "cloaking device"
desc = "Integrated cloaking system. High power usage, but does render you invisible to the naked eye. Doesn't prevent noise, however."
icon_state = "tesla"
@@ -11,27 +11,27 @@
var/datum/global_iterator/mecha_cloak/cloak_iterator
-/obj/item/mecha_parts/mecha_equipment/cloak/Initialize(mapload)
+/obj/item/vehicle_module/cloak/Initialize(mapload)
. = ..()
cloak_iterator = new /datum/global_iterator/mecha_cloak(list(src),0)
cloak_iterator.set_delay(equip_cooldown)
-/obj/item/mecha_parts/mecha_equipment/cloak/Destroy()
+/obj/item/vehicle_module/cloak/Destroy()
QDEL_NULL(cloak_iterator)
return ..()
-/obj/item/mecha_parts/mecha_equipment/cloak/detach()
+/obj/item/vehicle_module/cloak/detach()
QDEL_NULL(cloak_iterator)
if(!equip_ready) //We were running
stop_cloak()
return ..()
-/obj/item/mecha_parts/mecha_equipment/cloak/get_equip_info()
+/obj/item/vehicle_module/cloak/get_equip_info()
if(!chassis)
return
return "
* [src.name] -
[equip_ready ? "A" : "Dea"]ctivate"
-/obj/item/mecha_parts/mecha_equipment/cloak/Topic(href, href_list)
+/obj/item/vehicle_module/cloak/Topic(href, href_list)
..()
if(href_list["toggle_cloak"])
if(equip_ready)
@@ -40,7 +40,7 @@
stop_cloak()
return
-/obj/item/mecha_parts/mecha_equipment/cloak/proc/start_cloak()
+/obj/item/vehicle_module/cloak/proc/start_cloak()
if(chassis)
chassis.cloak()
log_message("Activated.")
@@ -48,7 +48,7 @@
set_ready_state(0)
playsound(src, 'sound/effects/EMPulse.ogg', 100, 1)
-/obj/item/mecha_parts/mecha_equipment/cloak/proc/stop_cloak()
+/obj/item/vehicle_module/cloak/proc/stop_cloak()
if(chassis)
chassis.uncloak()
log_message("Deactivated.")
@@ -57,7 +57,7 @@
playsound(src, 'sound/effects/EMPulse.ogg', 100, 1)
// These things are so silly
-/datum/global_iterator/mecha_cloak/process(var/obj/item/mecha_parts/mecha_equipment/cloak/cloak)
+/datum/global_iterator/mecha_cloak/process(var/obj/item/vehicle_module/cloak/cloak)
//Removed from chassis
if(!cloak.chassis)
stop()
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/drill.dm b/code/modules/vehicles/sealed/mecha/modules/tools/drill.dm
similarity index 88%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/drill.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/drill.dm
index f0b3e4b7cb3..13c84792e11 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/drill.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/drill.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/drill
+/obj/item/vehicle_module/tool/drill
name = "drill"
desc = "This is the drill that'll pierce the heavens!"
icon_state = "mecha_drill"
@@ -8,7 +8,7 @@
var/advanced = 0 //Determines if you can pierce the heavens or not. Used in diamond drill.
required_type = list(/obj/vehicle/sealed/mecha/working/ripley)
-/obj/item/mecha_parts/mecha_equipment/tool/drill/action(atom/target)
+/obj/item/vehicle_module/tool/drill/action(atom/target)
if(!action_checks(target))
return
set_ready_state(0)
@@ -41,7 +41,7 @@
var/turf/simulated/mineral/M1 = target
M1.GetDrilled()
log_message("Drilled through [target]")
- if(locate(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp) in chassis.equipment)
+ if(locate(/obj/item/vehicle_module/tool/hydraulic_clamp) in chassis.equipment)
var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in chassis:cargo
if(ore_box)
for(var/obj/item/stack/ore/ore in range(chassis,1))
@@ -55,7 +55,7 @@
LEGACY_EX_ACT(target, 2, null)
return 1
-/obj/item/mecha_parts/mecha_equipment/tool/drill/proc/drill_mob(mob/living/target, mob/user)
+/obj/item/vehicle_module/tool/drill/proc/drill_mob(mob/living/target, mob/user)
add_attack_logs(user, target, "attacked", "[name]", "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(DAMAGE_TYPE_BRUTE)])")
var/drill_force = damage_force //Couldn't manage it otherwise.
if(ishuman(target))
@@ -75,7 +75,7 @@
S.apply_damage(drill_force)
return
-/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
+/obj/item/vehicle_module/tool/drill/diamonddrill
name = "diamond drill"
desc = "This is an upgraded version of the drill that'll pierce the heavens!"
icon_state = "mecha_diamond_drill"
@@ -84,7 +84,7 @@
damage_force = 15
advanced = 1
-/obj/item/mecha_parts/mecha_equipment/tool/drill/bore
+/obj/item/vehicle_module/tool/drill/bore
name = "depth bore"
desc = "This is the drill that'll pierce the depths!"
icon_state = "mecha_bore"
@@ -93,7 +93,7 @@
damage_force = 20
required_type = list(/obj/vehicle/sealed/mecha/working/ripley)
-/obj/item/mecha_parts/mecha_equipment/tool/drill/bore/action(atom/target)
+/obj/item/vehicle_module/tool/drill/bore/action(atom/target)
if(!action_checks(target))
return
set_ready_state(0)
@@ -119,7 +119,7 @@
else
M.GetDrilled()
log_message("Bored through [target]")
- if(locate(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp) in chassis.equipment)
+ if(locate(/obj/item/vehicle_module/tool/hydraulic_clamp) in chassis.equipment)
var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in chassis:cargo
if(ore_box)
for(var/obj/item/stack/ore/ore in range(chassis,1))
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/energy_relay.dm b/code/modules/vehicles/sealed/mecha/modules/tools/energy_relay.dm
similarity index 74%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/energy_relay.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/energy_relay.dm
index 9e99c5c99db..31fad961f06 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/energy_relay.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/energy_relay.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
+/obj/item/vehicle_module/tesla_energy_relay
name = "energy relay"
desc = "Wirelessly drains energy from any available power channel in area. The performance index is quite low."
icon_state = "tesla"
@@ -12,37 +12,37 @@
equip_type = EQUIP_UTILITY
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/Initialize(mapload)
+/obj/item/vehicle_module/tesla_energy_relay/Initialize(mapload)
. = ..()
pr_energy_relay = new /datum/global_iterator/mecha_energy_relay(list(src),0)
pr_energy_relay.set_delay(equip_cooldown)
return
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/Destroy()
+/obj/item/vehicle_module/tesla_energy_relay/Destroy()
qdel(pr_energy_relay)
pr_energy_relay = null
return ..()
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/detach()
+/obj/item/vehicle_module/tesla_energy_relay/detach()
pr_energy_relay.stop()
// chassis.proc_res["dynusepower"] = null
chassis.proc_res["dyngetcharge"] = null
..()
return
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/attach(obj/vehicle/sealed/mecha/M)
+/obj/item/vehicle_module/tesla_energy_relay/attach(obj/vehicle/sealed/mecha/M)
..()
chassis.proc_res["dyngetcharge"] = src
// chassis.proc_res["dynusepower"] = src
return
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/can_attach(obj/vehicle/sealed/mecha/M)
+/obj/item/vehicle_module/tesla_energy_relay/can_attach(obj/vehicle/sealed/mecha/M)
if(..())
if(!M.proc_res["dyngetcharge"])// && !M.proc_res["dynusepower"])
return 1
return 0
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/proc/dyngetcharge()
+/obj/item/vehicle_module/tesla_energy_relay/proc/dyngetcharge()
if(equip_ready) //disabled
return chassis.dyngetcharge()
var/area/A = get_area(chassis)
@@ -54,7 +54,7 @@
return chassis.dyngetcharge()
return charge
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/proc/get_power_channel(var/area/A)
+/obj/item/vehicle_module/tesla_energy_relay/proc/get_power_channel(var/area/A)
var/pow_chan
if(A)
for(var/c in use_channels)
@@ -63,7 +63,7 @@
break
return pow_chan
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/Topic(href, href_list)
+/obj/item/vehicle_module/tesla_energy_relay/Topic(href, href_list)
..()
if(href_list["toggle_relay"])
if(pr_energy_relay.toggle())
@@ -74,7 +74,7 @@
log_message("Deactivated.")
return
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/get_equip_info()
+/obj/item/vehicle_module/tesla_energy_relay/get_equip_info()
if(!chassis) return
return "
* [src.name] -
[pr_energy_relay.active()?"Dea":"A"]ctivate"
@@ -89,7 +89,7 @@
/datum/global_iterator/mecha_energy_relay
-/datum/global_iterator/mecha_energy_relay/process(var/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/ER)
+/datum/global_iterator/mecha_energy_relay/process(var/obj/item/vehicle_module/tesla_energy_relay/ER)
if(!ER.chassis || ER.chassis.hasInternalDamage(MECHA_INT_SHORT_CIRCUIT))
stop()
ER.set_ready_state(1)
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/extinguisher.dm b/code/modules/vehicles/sealed/mecha/modules/tools/extinguisher.dm
similarity index 82%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/extinguisher.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/extinguisher.dm
index 6f4d899db60..80bc3e04b4d 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/extinguisher.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/extinguisher.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/extinguisher
+/obj/item/vehicle_module/tool/extinguisher
name = "extinguisher"
desc = "Exosuit-mounted extinguisher (Can be attached to: Engineering exosuits)"
mech_flags = EXOSUIT_MODULE_WORKING | EXOSUIT_MODULE_COMBAT
@@ -12,13 +12,13 @@
var/spray_amount = 5
var/max_water = 1000
-/obj/item/mecha_parts/mecha_equipment/tool/extinguisher/Initialize(mapload)
+/obj/item/vehicle_module/tool/extinguisher/Initialize(mapload)
. = ..()
reagents = new/datum/reagent_holder(max_water)
reagents.my_atom = src
reagents.add_reagent("firefoam", max_water)
-/obj/item/mecha_parts/mecha_equipment/tool/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch.
+/obj/item/vehicle_module/tool/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch.
if(!action_checks(target) || get_dist(chassis, target)>3) return
if(get_dist(chassis, target)>2) return
set_ready_state(0)
@@ -64,8 +64,8 @@
W.set_up(my_target)
return TRUE
-/obj/item/mecha_parts/mecha_equipment/tool/extinguisher/get_equip_info()
+/obj/item/vehicle_module/tool/extinguisher/get_equip_info()
return "[..()] \[[src.reagents.total_volume]\]"
-/obj/item/mecha_parts/mecha_equipment/tool/extinguisher/on_reagent_change()
+/obj/item/vehicle_module/tool/extinguisher/on_reagent_change()
return
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/generator.dm b/code/modules/vehicles/sealed/mecha/modules/tools/generator.dm
similarity index 79%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/generator.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/generator.dm
index 55a790d4f96..5006042effe 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/generator.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/generator.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/generator
+/obj/item/vehicle_module/generator
name = "phoron generator"
desc = "Generates power using solid phoron as fuel. Pollutes the environment."
icon_state = "tesla"
@@ -16,26 +16,26 @@
equip_type = EQUIP_UTILITY
-/obj/item/mecha_parts/mecha_equipment/generator/Initialize(mapload)
+/obj/item/vehicle_module/generator/Initialize(mapload)
. = ..()
init()
-/obj/item/mecha_parts/mecha_equipment/generator/Destroy()
+/obj/item/vehicle_module/generator/Destroy()
qdel(pr_mech_generator)
pr_mech_generator = null
return ..()
-/obj/item/mecha_parts/mecha_equipment/generator/proc/init()
+/obj/item/vehicle_module/generator/proc/init()
fuel = new /obj/item/stack/material/phoron(src)
fuel.amount = 0
pr_mech_generator = new /datum/global_iterator/mecha_generator(list(src),0)
pr_mech_generator.set_delay(equip_cooldown)
-/obj/item/mecha_parts/mecha_equipment/generator/detach()
+/obj/item/vehicle_module/generator/detach()
pr_mech_generator.stop()
..()
-/obj/item/mecha_parts/mecha_equipment/generator/Topic(href, href_list)
+/obj/item/vehicle_module/generator/Topic(href, href_list)
..()
if(href_list["toggle"])
if(pr_mech_generator.toggle())
@@ -46,13 +46,13 @@
log_message("Deactivated.")
return
-/obj/item/mecha_parts/mecha_equipment/generator/get_equip_info()
+/obj/item/vehicle_module/generator/get_equip_info()
var/output = ..()
if(output)
return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm
3\] -
[pr_mech_generator.active()?"Dea":"A"]ctivate"
return
-/obj/item/mecha_parts/mecha_equipment/generator/action(target)
+/obj/item/vehicle_module/generator/action(target)
if(chassis)
var/result = load_fuel(target)
var/message
@@ -66,7 +66,7 @@
occupant_message(message)
return
-/obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(var/obj/item/stack/material/P)
+/obj/item/vehicle_module/generator/proc/load_fuel(var/obj/item/stack/material/P)
if(P.type == fuel.type && P.amount)
var/to_load = max(max_fuel - fuel.amount*fuel.perunit,0)
if(to_load)
@@ -79,7 +79,7 @@
return 0
return
-/obj/item/mecha_parts/mecha_equipment/generator/attackby(weapon,mob/user)
+/obj/item/vehicle_module/generator/attackby(weapon,mob/user)
var/result = load_fuel(weapon)
if(isnull(result))
user.visible_message("[user] tries to shove [weapon] into [src]. What a dumb-ass.","
[fuel] traces minimal. [weapon] cannot be used as fuel.")
@@ -89,7 +89,7 @@
user.visible_message("[user] loads [src] with [fuel].","[result] unit\s of [fuel] successfully loaded.")
return
-/obj/item/mecha_parts/mecha_equipment/generator/critfail()
+/obj/item/vehicle_module/generator/critfail()
..()
var/turf/simulated/T = get_turf(src)
if(!T)
@@ -107,7 +107,7 @@
/datum/global_iterator/mecha_generator
-/datum/global_iterator/mecha_generator/process(var/obj/item/mecha_parts/mecha_equipment/generator/EG)
+/datum/global_iterator/mecha_generator/process(var/obj/item/vehicle_module/generator/EG)
if(!EG.chassis)
stop()
EG.set_ready_state(1)
@@ -133,7 +133,7 @@
return 1
-/obj/item/mecha_parts/mecha_equipment/generator/nuclear
+/obj/item/vehicle_module/generator/nuclear
name = "\improper ExoNuclear reactor"
desc = "Generates power using uranium. Pollutes the environment."
icon_state = "tesla"
@@ -144,19 +144,19 @@
power_per_cycle = 50
var/rad_multiplier = 1
-/obj/item/mecha_parts/mecha_equipment/generator/nuclear/init()
+/obj/item/vehicle_module/generator/nuclear/init()
fuel = new /obj/item/stack/material/uranium(src)
fuel.amount = 0
pr_mech_generator = new /datum/global_iterator/mecha_generator/nuclear(list(src),0)
pr_mech_generator.set_delay(equip_cooldown)
return
-/obj/item/mecha_parts/mecha_equipment/generator/nuclear/critfail()
+/obj/item/vehicle_module/generator/nuclear/critfail()
return
/datum/global_iterator/mecha_generator/nuclear
-/datum/global_iterator/mecha_generator/nuclear/process(var/obj/item/mecha_parts/mecha_equipment/generator/nuclear/EG)
+/datum/global_iterator/mecha_generator/nuclear/process(var/obj/item/vehicle_module/generator/nuclear/EG)
if(..())
radiation_pulse(EG, RAD_INTENSITY_MECH_REACTOR_TICK * EG.rad_multiplier)
return 1
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/hardpoint_actuator.dm b/code/modules/vehicles/sealed/mecha/modules/tools/hardpoint_actuator.dm
similarity index 79%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/hardpoint_actuator.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/hardpoint_actuator.dm
index ed475299880..6d566d12fbe 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/hardpoint_actuator.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/hardpoint_actuator.dm
@@ -2,7 +2,7 @@
* A special device used to pick up and equip other exosuit components on the fly, without leaving an Exosuit. Costly.
*/
-/obj/item/mecha_parts/mecha_equipment/hardpoint_actuator
+/obj/item/vehicle_module/hardpoint_actuator
name = "hardpoint actuator clamp"
icon_state = "mecha_clamp"
equip_cooldown = 10 SECONDS
@@ -10,12 +10,12 @@
equip_type = EQUIP_HULL
origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_POWER = 4, TECH_COMBAT = 1, TECH_MAGNET = 4)
-/obj/item/mecha_parts/mecha_equipment/hardpoint_actuator/action(atom/target)
+/obj/item/vehicle_module/hardpoint_actuator/action(atom/target)
if(!action_checks(target))
return
- if(istype(target,/obj/item/mecha_parts/mecha_equipment))
- var/obj/item/mecha_parts/mecha_equipment/ME = target
+ if(istype(target,/obj/item/vehicle_module))
+ var/obj/item/vehicle_module/ME = target
if(ME.can_attach(chassis))
occupant_message("[ME] can be integrated. Stand by.")
if(do_after(chassis.occupant_legacy, 3 SECONDS, target))
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/hydraulic_clamp.dm b/code/modules/vehicles/sealed/mecha/modules/tools/hydraulic_clamp.dm
similarity index 94%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/hydraulic_clamp.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/hydraulic_clamp.dm
index 3c65ee30c35..b30f9fad173 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/hydraulic_clamp.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/hydraulic_clamp.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
+/obj/item/vehicle_module/tool/hydraulic_clamp
name = "hydraulic clamp"
icon_state = "mecha_clamp"
equip_cooldown = 15
@@ -8,13 +8,13 @@
required_type = list(/obj/vehicle/sealed/mecha/working)
ready_sound = 'sound/mecha/gasdisconnected.ogg'
-/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/tool/hydraulic_clamp/attach(obj/vehicle/sealed/mecha/M as obj)
..()
cargo_holder = M
return
-/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/action(atom/target)
+/obj/item/vehicle_module/tool/hydraulic_clamp/action(atom/target)
if(!action_checks(target)) return
if(!cargo_holder) return
@@ -122,13 +122,13 @@
//This is pretty much just for the death-ripley so that it is harmless
-/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/safety
+/obj/item/vehicle_module/tool/hydraulic_clamp/safety
name = "\improper KILL CLAMP"
equip_cooldown = 15
energy_drain = 0
dam_force = 0
-/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/safety/action(atom/target)
+/obj/item/vehicle_module/tool/hydraulic_clamp/safety/action(atom/target)
if(!action_checks(target)) return
if(!cargo_holder) return
if(istype(target,/obj))
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/inflatables.dm b/code/modules/vehicles/sealed/mecha/modules/tools/inflatables.dm
similarity index 79%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/inflatables.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/inflatables.dm
index b4277ad8cde..bb7b2d47211 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/inflatables.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/inflatables.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables
+/obj/item/vehicle_module/tool/powertool/inflatables
name = "inflatable deployment mechanism"
desc = "An exosuit-mounted inflatable barrier deployer. Useful!"
icon_state = "mecha_inflatables"
@@ -13,18 +13,18 @@
tooltype = /obj/item/inflatable_dispenser/robot
var/obj/item/inflatable_dispenser/my_deployer = null
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/Initialize(mapload)
+/obj/item/vehicle_module/tool/powertool/inflatables/Initialize(mapload)
. = ..()
my_deployer = my_tool
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/Topic(href, href_list)
+/obj/item/vehicle_module/tool/powertool/inflatables/Topic(href, href_list)
..()
if(href_list["toggle_deployable_mode"])
my_deployer.attack_self()
update_chassis_page()
return
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/get_equip_info()
+/obj/item/vehicle_module/tool/powertool/inflatables/get_equip_info()
if(!chassis) return
var/data_return = "
* [chassis.selected==src?"
":""][src.name][chassis.selected==src?"":""] -
Deploy [my_deployer.mode?"Door":"Wall"]\
- Doors left:
[my_deployer.stored_doors]/[my_deployer.max_doors]
\
@@ -32,7 +32,7 @@
return data_return
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/action(atom/target, params)
+/obj/item/vehicle_module/tool/powertool/inflatables/action(atom/target, params)
if(!action_checks(target))
return
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/jetpack.dm b/code/modules/vehicles/sealed/mecha/modules/tools/jetpack.dm
similarity index 70%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/jetpack.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/jetpack.dm
index 835a7267a54..7647895c181 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/jetpack.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/jetpack.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack
+/obj/item/vehicle_module/tool/jetpack
name = "ion jetpack"
desc = "Using directed ion bursts and cunning solar wind reflection technique, this device enables controlled space flight."
icon_state = "mecha_jetpack"
@@ -8,43 +8,43 @@
var/datum/effect_system/ion_trail_follow/ion_trail
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/can_attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/tool/jetpack/can_attach(obj/vehicle/sealed/mecha/M as obj)
if(!(locate(src.type) in M.equipment) && !M.proc_res["dyndomove"])
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/detach()
+/obj/item/vehicle_module/tool/jetpack/detach()
..()
chassis.proc_res["dyndomove"] = null
return
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/tool/jetpack/attach(obj/vehicle/sealed/mecha/M as obj)
..()
if(!ion_trail)
ion_trail = new
ion_trail.set_up(chassis)
return
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/proc/toggle()
+/obj/item/vehicle_module/tool/jetpack/proc/toggle()
if(!chassis)
return
!equip_ready? turn_off() : turn_on()
return equip_ready
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/proc/turn_on()
+/obj/item/vehicle_module/tool/jetpack/proc/turn_on()
set_ready_state(0)
chassis.proc_res["dyndomove"] = src
ion_trail.start()
occupant_message("Activated")
log_message("Activated")
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/proc/turn_off()
+/obj/item/vehicle_module/tool/jetpack/proc/turn_off()
set_ready_state(1)
chassis.proc_res["dyndomove"] = null
ion_trail.stop()
occupant_message("Deactivated")
log_message("Deactivated")
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/proc/dyndomove(direction)
+/obj/item/vehicle_module/tool/jetpack/proc/dyndomove(direction)
if(!action_checks())
return chassis.dyndomove(direction)
var/move_result = 0
@@ -70,7 +70,7 @@
return 1
return 0
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/action_checks()
+/obj/item/vehicle_module/tool/jetpack/action_checks()
if(equip_ready || wait)
return 0
if(energy_drain && !chassis.has_charge(energy_drain))
@@ -79,16 +79,16 @@
return 0
return 1
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/get_equip_info()
+/obj/item/vehicle_module/tool/jetpack/get_equip_info()
if(!chassis) return
return "
* [src.name] \[
Toggle\]"
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/Topic(href,href_list)
+/obj/item/vehicle_module/tool/jetpack/Topic(href,href_list)
..()
if(href_list["toggle"])
toggle()
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack/do_after_cooldown()
+/obj/item/vehicle_module/tool/jetpack/do_after_cooldown()
sleep(equip_cooldown)
wait = 0
return 1
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/medigun_vr.dm b/code/modules/vehicles/sealed/mecha/modules/tools/medigun_vr.dm
similarity index 88%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/medigun_vr.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/medigun_vr.dm
index 8d662a3d8bb..2be949e8bcc 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/medigun_vr.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/medigun_vr.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun
+/obj/item/vehicle_module/weapon/energy/medigun
equip_cooldown = 6
name = "\improper BL-3 \"Phoenix\" directed restoration system"
desc = "The BL-3 'Phoenix' is a portable medical system used to treat external injuries from afar."
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/orescanner.dm b/code/modules/vehicles/sealed/mecha/modules/tools/orescanner.dm
similarity index 75%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/orescanner.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/orescanner.dm
index 26a1d6618a9..cd768cc3a95 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/orescanner.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/orescanner.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/orescanner
+/obj/item/vehicle_module/tool/orescanner
name = "mounted ore scanner"
desc = "An exosuit-mounted ore scanner."
icon_state = "mecha_analyzer"
@@ -13,15 +13,15 @@
var/obj/item/mining_scanner/my_scanner = null
var/exact_scan = FALSE
-/obj/item/mecha_parts/mecha_equipment/tool/orescanner/Initialize(mapload)
+/obj/item/vehicle_module/tool/orescanner/Initialize(mapload)
my_scanner = new(src)
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/orescanner/Destroy()
+/obj/item/vehicle_module/tool/orescanner/Destroy()
QDEL_NULL(my_scanner)
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/orescanner/action(var/atom/target)
+/obj/item/vehicle_module/tool/orescanner/action(var/atom/target)
if(!action_checks(target) || get_dist(chassis, target) > 5)
return FALSE
@@ -35,7 +35,7 @@
QDEL_NULL(ScanBeam)
-/obj/item/mecha_parts/mecha_equipment/tool/orescanner/advanced
+/obj/item/vehicle_module/tool/orescanner/advanced
name = "advanced ore scanner"
icon_state = "mecha_analyzer_adv"
exact_scan = TRUE
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/passenger.dm b/code/modules/vehicles/sealed/mecha/modules/tools/passenger.dm
similarity index 84%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/passenger.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/passenger.dm
index 2cd63415719..732569c80d1 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/passenger.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/passenger.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/passenger
+/obj/item/vehicle_module/tool/passenger
name = "passenger compartment"
desc = "A mountable passenger compartment for exosuits. Rather cramped."
icon_state = "mecha_passenger"
@@ -13,16 +13,16 @@
equip_type = EQUIP_HULL
-/obj/item/mecha_parts/mecha_equipment/tool/passenger/destroy()
+/obj/item/vehicle_module/tool/passenger/destroy()
for(var/atom/movable/AM in src)
AM.forceMove(get_turf(src))
to_chat(AM, "
You tumble out of the destroyed [src.name]!")
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/passenger/Exit(atom/movable/O)
+/obj/item/vehicle_module/tool/passenger/Exit(atom/movable/O)
return 0
-/obj/item/mecha_parts/mecha_equipment/tool/passenger/proc/move_inside(var/mob/user)
+/obj/item/vehicle_module/tool/passenger/proc/move_inside(var/mob/user)
if (chassis)
chassis.visible_message("
[user] starts to climb into [chassis].")
@@ -49,7 +49,7 @@
set category = "Exosuit Interface"
set src = usr
- var/obj/item/mecha_parts/mecha_equipment/tool/passenger/pod = loc
+ var/obj/item/vehicle_module/tool/passenger/pod = loc
if(!istype(pod))
remove_verb(src, /mob/proc/verb_eject_mech_passenger)
return
@@ -63,7 +63,7 @@
pod.log_message("[pod.occupant_legacy] disembarked.")
pod.add_fingerprint(src)
-/obj/item/mecha_parts/mecha_equipment/tool/passenger/proc/go_out()
+/obj/item/vehicle_module/tool/passenger/proc/go_out()
if(!occupant_legacy)
return
remove_verb(occupant_legacy, /mob/proc/verb_eject_mech_passenger)
@@ -72,25 +72,25 @@
occupant_legacy = null
return
-/obj/item/mecha_parts/mecha_equipment/tool/passenger/attach()
+/obj/item/vehicle_module/tool/passenger/attach()
..()
if (chassis)
add_obj_verb(chassis, /obj/vehicle/sealed/mecha/proc/move_inside_passenger)
-/obj/item/mecha_parts/mecha_equipment/tool/passenger/detach()
+/obj/item/vehicle_module/tool/passenger/detach()
if(occupant_legacy)
occupant_message("Unable to detach [src] - equipment occupied.")
return
var/obj/vehicle/sealed/mecha/M = chassis
..()
- if (M && !(locate(/obj/item/mecha_parts/mecha_equipment/tool/passenger) in M))
+ if (M && !(locate(/obj/item/vehicle_module/tool/passenger) in M))
remove_verb(M, /obj/vehicle/sealed/mecha/proc/move_inside_passenger)
-/obj/item/mecha_parts/mecha_equipment/tool/passenger/get_equip_info()
+/obj/item/vehicle_module/tool/passenger/get_equip_info()
return "[..()]
[occupant_legacy? "\[Occupant: [occupant_legacy]\]|" : ""]Exterior Hatch:
Toggle Lock"
-/obj/item/mecha_parts/mecha_equipment/tool/passenger/Topic(href,href_list)
+/obj/item/vehicle_module/tool/passenger/Topic(href,href_list)
..()
if (href_list["toggle_lock"])
door_locked = !door_locked
@@ -132,7 +132,7 @@
//search for a valid passenger compartment
var/feedback = 0 //for nicer user feedback
- for(var/obj/item/mecha_parts/mecha_equipment/tool/passenger/P in src)
+ for(var/obj/item/vehicle_module/tool/passenger/P in src)
if (P.occupant_legacy)
feedback |= OCCUPIED
continue
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/powertool.dm b/code/modules/vehicles/sealed/mecha/modules/tools/powertool.dm
similarity index 76%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/powertool.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/powertool.dm
index 214870a68d8..d4ab6874390 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/powertool.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/powertool.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/powertool
+/obj/item/vehicle_module/tool/powertool
name = "pneumatic wrench"
desc = "An exosuit-mounted hydraulic wrench."
icon_state = "mecha_wrench"
@@ -13,18 +13,18 @@
var/obj/item/my_tool = null
var/tooltype = /obj/item/tool/wrench/power
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/Initialize(mapload)
+/obj/item/vehicle_module/tool/powertool/Initialize(mapload)
my_tool = new tooltype(src)
my_tool.name = name
my_tool.anchored = TRUE
ADD_TRAIT(my_tool, TRAIT_ITEM_NODROP, GENERIC_TRAIT)
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/Destroy()
+/obj/item/vehicle_module/tool/powertool/Destroy()
QDEL_NULL(my_tool)
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/action(var/atom/target)
+/obj/item/vehicle_module/tool/powertool/action(var/atom/target)
if(!action_checks(target))
return FALSE
@@ -33,21 +33,21 @@
target.attackby(my_tool,chassis.occupant_legacy)
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/prybar
+/obj/item/vehicle_module/tool/powertool/prybar
name = "pneumatic prybar"
desc = "An exosuit-mounted pneumatic prybar."
icon_state = "mecha_crowbar"
tooltype = /obj/item/tool/crowbar/power
ready_sound = 'sound/mecha/gasdisconnected.ogg'
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/cutter
+/obj/item/vehicle_module/tool/powertool/cutter
name = "pneumatic cablecutter"
desc = "An exosuit-mounted pneumatic cablecutter."
icon_state = "mecha_cablecutter"
tooltype = /obj/item/tool/wirecutters/power
ready_sound = 'sound/mecha/gasdisconnected.ogg'
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/screwdriver
+/obj/item/vehicle_module/tool/powertool/screwdriver
name = "pneumatic screwdriver"
desc = "An exosuit-mounted pneumatic screwdriver."
icon_state = "mecha_screwdriver"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/rcd.dm b/code/modules/vehicles/sealed/mecha/modules/tools/rcd.dm
similarity index 74%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/rcd.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/rcd.dm
index dbbb4ce4f33..1995f76efcf 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/rcd.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/rcd.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/rcd
+/obj/item/vehicle_module/tool/rcd
name = "mounted RCD"
desc = "An exosuit-mounted Rapid Construction Device. (Can be attached to: Any exosuit)"
mech_flags = EXOSUIT_MODULE_WORKING|EXOSUIT_MODULE_COMBAT|EXOSUIT_MODULE_MEDICAL
@@ -10,30 +10,30 @@
equip_type = EQUIP_SPECIAL
var/obj/item/rcd/electric/mounted/mecha/my_rcd = null
-/obj/item/mecha_parts/mecha_equipment/tool/rcd/Initialize(mapload)
+/obj/item/vehicle_module/tool/rcd/Initialize(mapload)
my_rcd = new(src)
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/rcd/Destroy()
+/obj/item/vehicle_module/tool/rcd/Destroy()
QDEL_NULL(my_rcd)
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/rcd/action(atom/target)
+/obj/item/vehicle_module/tool/rcd/action(atom/target)
if(!action_checks(target) || get_dist(chassis, target) > 3)
return FALSE
my_rcd.use_rcd(target, chassis.occupant_legacy)
-/obj/item/mecha_parts/mecha_equipment/tool/rcd/Topic(href,href_list)
+/obj/item/vehicle_module/tool/rcd/Topic(href,href_list)
..()
if(href_list["mode"])
my_rcd.mode_index = text2num(href_list["mode"])
occupant_message("RCD reconfigured to '[my_rcd.modes[my_rcd.mode_index]]'.")
/*
-/obj/item/mecha_parts/mecha_equipment/tool/rcd/get_equip_info()
+/obj/item/vehicle_module/tool/rcd/get_equip_info()
return "[..()] \[
D|
C|
A\]"
*/
-/obj/item/mecha_parts/mecha_equipment/tool/rcd/get_equip_info()
+/obj/item/vehicle_module/tool/rcd/get_equip_info()
var/list/content = list(..()) // This is all for one line, in the interest of string tree conservation.
var/i = 1
content += "
"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/repair_droid.dm b/code/modules/vehicles/sealed/mecha/modules/tools/repair_droid.dm
similarity index 76%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/repair_droid.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/repair_droid.dm
index 0e296acd1db..1c81eb305af 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/repair_droid.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/repair_droid.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/repair_droid
+/obj/item/vehicle_module/repair_droid
name = "repair droid"
desc = "Automated repair droid. Scans exosuit for damage and repairs it. Can fix almost any type of external or internal damage."
icon_state = "repair_droid"
@@ -15,41 +15,41 @@
equip_type = EQUIP_HULL
-/obj/item/mecha_parts/mecha_equipment/repair_droid/Initialize(mapload)
+/obj/item/vehicle_module/repair_droid/Initialize(mapload)
. = ..()
pr_repair_droid = new /datum/global_iterator/mecha_repair_droid(list(src),0)
pr_repair_droid.set_delay(equip_cooldown)
return
-/obj/item/mecha_parts/mecha_equipment/repair_droid/Destroy()
+/obj/item/vehicle_module/repair_droid/Destroy()
qdel(pr_repair_droid)
pr_repair_droid = null
return ..()
-/obj/item/mecha_parts/mecha_equipment/repair_droid/add_equip_overlay(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/repair_droid/add_equip_overlay(obj/vehicle/sealed/mecha/M as obj)
..()
if(!droid_overlay)
droid_overlay = new(src.icon, icon_state = "repair_droid")
M.add_overlay(droid_overlay)
return
-/obj/item/mecha_parts/mecha_equipment/repair_droid/destroy()
+/obj/item/vehicle_module/repair_droid/destroy()
chassis.cut_overlay(droid_overlay)
..()
return
-/obj/item/mecha_parts/mecha_equipment/repair_droid/detach()
+/obj/item/vehicle_module/repair_droid/detach()
chassis.cut_overlay(droid_overlay)
pr_repair_droid.stop()
..()
return
-/obj/item/mecha_parts/mecha_equipment/repair_droid/get_equip_info()
+/obj/item/vehicle_module/repair_droid/get_equip_info()
if(!chassis) return
return "
* [src.name] -
[pr_repair_droid.active()?"Dea":"A"]ctivate"
-/obj/item/mecha_parts/mecha_equipment/repair_droid/Topic(href, href_list)
+/obj/item/vehicle_module/repair_droid/Topic(href, href_list)
..()
if(href_list["toggle_repairs"])
chassis.cut_overlay(droid_overlay)
@@ -67,7 +67,7 @@
/datum/global_iterator/mecha_repair_droid
-/datum/global_iterator/mecha_repair_droid/process(var/obj/item/mecha_parts/mecha_equipment/repair_droid/RD as obj)
+/datum/global_iterator/mecha_repair_droid/process(var/obj/item/vehicle_module/repair_droid/RD as obj)
if(!RD.chassis)
stop()
RD.set_ready_state(1)
@@ -83,8 +83,8 @@
repaired = 1
break
- var/obj/item/mecha_parts/component/AC = RD.chassis.internal_components[MECH_ARMOR]
- var/obj/item/mecha_parts/component/HC = RD.chassis.internal_components[MECH_HULL]
+ var/obj/item/vehicle_component/AC = RD.chassis.internal_components[MECH_ARMOR]
+ var/obj/item/vehicle_component/HC = RD.chassis.internal_components[MECH_HULL]
var/damaged_armor = AC.integrity < AC.integrity_max
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/running_board.dm b/code/modules/vehicles/sealed/mecha/modules/tools/running_board.dm
similarity index 75%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/running_board.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/running_board.dm
index b6296da5a03..03886432613 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/running_board.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/running_board.dm
@@ -1,16 +1,16 @@
// concept borrowed from vgstation-coders/vgstation13#26316 on GitHub
-/obj/item/mecha_parts/mecha_equipment/runningboard
+/obj/item/vehicle_module/runningboard
name = "hacked powered exosuit running board"
desc = "A running board with a power-lifter attachment, to quickly catapult exosuit pilots into the cockpit. Fits any exosuit."
icon_state = "mecha_runningboard"
origin_tech = list(TECH_MATERIAL = 6)
equip_type = EQUIP_HULL
-/obj/item/mecha_parts/mecha_equipment/runningboard/limited
+/obj/item/vehicle_module/runningboard/limited
name = "powered exosuit running board"
desc = "A running board with a power-lifter attachment, to quickly catapult exosuit pilots into the cockpit. Only fits to working exosuits."
-/obj/item/mecha_parts/mecha_equipment/runningboard/limited/can_attach(obj/vehicle/sealed/mecha/M)
+/obj/item/vehicle_module/runningboard/limited/can_attach(obj/vehicle/sealed/mecha/M)
if(istype(M, /obj/vehicle/sealed/mecha/working)) // is this a ripley?
. = ..()
else
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/shield.dm b/code/modules/vehicles/sealed/mecha/modules/tools/shield.dm
similarity index 70%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/shield.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/shield.dm
index 9eeaaebccec..6a5a1910e97 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/shield.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/shield.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/combat_shield
+/obj/item/vehicle_module/combat_shield
name = "linear combat shield"
desc = "A shield generator that forms a rectangular, unidirectionally projectile-blocking wall in front of the exosuit."
icon_state = "shield"
@@ -15,18 +15,18 @@
equip_type = EQUIP_HULL
-/obj/item/mecha_parts/mecha_equipment/combat_shield/Initialize(mapload)
+/obj/item/vehicle_module/combat_shield/Initialize(mapload)
. = ..()
my_shield = new my_shield_type
my_shield.shield_regen_delay = equip_cooldown
my_shield.my_tool = src
-/obj/item/mecha_parts/mecha_equipment/combat_shield/critfail()
+/obj/item/vehicle_module/combat_shield/critfail()
..()
my_shield.adjust_health(-200)
return
-/obj/item/mecha_parts/mecha_equipment/combat_shield/Destroy()
+/obj/item/vehicle_module/combat_shield/Destroy()
if(!isnull(chassis))
chassis.cut_overlay(drone_overlay)
if(!isnull(my_shield))
@@ -38,14 +38,14 @@
my_shield = null
return ..()
-/obj/item/mecha_parts/mecha_equipment/combat_shield/add_equip_overlay(obj/vehicle/sealed/mecha/M)
+/obj/item/vehicle_module/combat_shield/add_equip_overlay(obj/vehicle/sealed/mecha/M)
..()
if(!drone_overlay)
drone_overlay = new(src.icon, icon_state = "shield_droid")
M.add_overlay(drone_overlay)
return
-/obj/item/mecha_parts/mecha_equipment/combat_shield/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/combat_shield/attach(obj/vehicle/sealed/mecha/M as obj)
..()
if(chassis)
my_shield.shield_health = 0
@@ -53,7 +53,7 @@
my_shield.forceMove(chassis)
return
-/obj/item/mecha_parts/mecha_equipment/combat_shield/detach()
+/obj/item/vehicle_module/combat_shield/detach()
chassis.cut_overlay(drone_overlay)
..()
my_shield.destroy_shields()
@@ -62,12 +62,12 @@
my_shield.forceMove(src)
return
-/obj/item/mecha_parts/mecha_equipment/combat_shield/handle_movement_action()
+/obj/item/vehicle_module/combat_shield/handle_movement_action()
if(chassis)
my_shield.update_shield_positions()
return
-/obj/item/mecha_parts/mecha_equipment/combat_shield/proc/toggle_shield()
+/obj/item/vehicle_module/combat_shield/proc/toggle_shield()
if(chassis)
my_shield.attack_self(chassis.occupant_legacy)
if(my_shield.active)
@@ -79,12 +79,12 @@
step_delay = 1
log_message("Deactivated.")
-/obj/item/mecha_parts/mecha_equipment/combat_shield/Topic(href, href_list)
+/obj/item/vehicle_module/combat_shield/Topic(href, href_list)
..()
if(href_list["toggle_shield"])
toggle_shield()
return
-/obj/item/mecha_parts/mecha_equipment/combat_shield/get_equip_info()
+/obj/item/vehicle_module/combat_shield/get_equip_info()
if(!chassis) return
return "
* [src.name] -
[my_shield.active?"Dea":"A"]ctivate"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/shield_omni.dm b/code/modules/vehicles/sealed/mecha/modules/tools/shield_omni.dm
similarity index 81%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/shield_omni.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/shield_omni.dm
index 69e81861091..f7710117e0c 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/shield_omni.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/shield_omni.dm
@@ -1,6 +1,6 @@
#define OMNI_SHIELD_DRAIN 30
-/obj/item/mecha_parts/mecha_equipment/omni_shield
+/obj/item/vehicle_module/omni_shield
name = "omni shield"
desc = "A shield generator that forms an ennlosing, omnidirectional shield around the exosuit."
icon_state = "shield"
@@ -16,29 +16,29 @@
equip_type = EQUIP_HULL
-/obj/item/mecha_parts/mecha_equipment/omni_shield/critfail()
+/obj/item/vehicle_module/omni_shield/critfail()
..()
shields.adjust_health(-200)
-/obj/item/mecha_parts/mecha_equipment/omni_shield/Destroy()
+/obj/item/vehicle_module/omni_shield/Destroy()
QDEL_NULL(shields)
..()
-/obj/item/mecha_parts/mecha_equipment/omni_shield/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/omni_shield/attach(obj/vehicle/sealed/mecha/M as obj)
. = ..()
if(chassis)
shields = new shield_type(chassis)
-/obj/item/mecha_parts/mecha_equipment/omni_shield/detach()
+/obj/item/vehicle_module/omni_shield/detach()
if(chassis)
QDEL_NULL(shields)
. = ..()
-/obj/item/mecha_parts/mecha_equipment/omni_shield/handle_movement_action()
+/obj/item/vehicle_module/omni_shield/handle_movement_action()
if(chassis && shields)
shields.update_shield_positions()
-/obj/item/mecha_parts/mecha_equipment/omni_shield/proc/toggle_shield()
+/obj/item/vehicle_module/omni_shield/proc/toggle_shield()
if(shields)
shields.set_on(!shields.active)
if(shields.active)
@@ -50,12 +50,12 @@
step_delay = initial(step_delay)
log_message("Deactivated.")
-/obj/item/mecha_parts/mecha_equipment/omni_shield/Topic(href, href_list)
+/obj/item/vehicle_module/omni_shield/Topic(href, href_list)
..()
if(href_list["toggle_omnishield"])
toggle_shield()
-/obj/item/mecha_parts/mecha_equipment/omni_shield/get_equip_info()
+/obj/item/vehicle_module/omni_shield/get_equip_info()
if(!chassis) return
return "
* [src.name] -
[shields?.active?"Dea":"A"]ctivate"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/sleeper.dm b/code/modules/vehicles/sealed/mecha/modules/tools/sleeper.dm
similarity index 85%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/sleeper.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/sleeper.dm
index b097fc28d8f..f10ddc8bad7 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/sleeper.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/sleeper.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper
+/obj/item/vehicle_module/tool/sleeper
name = "mounted sleeper"
desc = "A sleeper. Mountable to an exosuit. (Can be attached to: Medical Exosuits)"
icon = 'icons/obj/medical/cryogenic2.dmi'
@@ -21,22 +21,22 @@
var/filtering = FALSE
var/pumping = FALSE
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/Initialize(mapload)
+/obj/item/vehicle_module/tool/sleeper/Initialize(mapload)
. = ..()
pr_mech_sleeper = new /datum/global_iterator/mech_sleeper(list(src),0)
pr_mech_sleeper.set_delay(equip_cooldown)
return
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/Destroy()
+/obj/item/vehicle_module/tool/sleeper/Destroy()
qdel(pr_mech_sleeper)
for(var/atom/movable/AM in src)
AM.forceMove(get_turf(src))
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/Exit(atom/movable/O)
+/obj/item/vehicle_module/tool/sleeper/Exit(atom/movable/O)
return FALSE
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/action(var/mob/living/carbon/human/target)
+/obj/item/vehicle_module/tool/sleeper/action(var/mob/living/carbon/human/target)
if(!action_checks(target))
return
if(!istype(target))
@@ -75,7 +75,7 @@
log_message("[target] loaded. Life support functions engaged.")
return
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/go_out()
+/obj/item/vehicle_module/tool/sleeper/proc/go_out()
if(!occupant_legacy)
return
occupant_legacy.forceMove(get_turf(src))
@@ -92,14 +92,14 @@
pr_mech_sleeper.stop()
set_ready_state(1)
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/detach()
+/obj/item/vehicle_module/tool/sleeper/detach()
if(occupant_legacy)
occupant_message("Unable to detach [src] - equipment occupied.")
return
pr_mech_sleeper.stop()
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/get_equip_info()
+/obj/item/vehicle_module/tool/sleeper/get_equip_info()
var/output = ..()
if(output)
var/temp = ""
@@ -108,7 +108,7 @@
return "[output] [temp]"
return
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/Topic(href,href_list)
+/obj/item/vehicle_module/tool/sleeper/Topic(href,href_list)
if(..())
return TRUE
if(href_list["view_stats"])
@@ -132,7 +132,7 @@
return TRUE
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/nano_ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = outside_state)
+/obj/item/vehicle_module/tool/sleeper/nano_ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = outside_state)
var/data[0]
if(chassis.cell.charge)
data["power"] = TRUE
@@ -140,7 +140,7 @@
data["power"] = FALSE
available_chemicals.Cut()
available_chemicals = base_chemicals.Copy()
- var/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/SG = locate(/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun) in chassis
+ var/obj/item/vehicle_module/tool/syringe_gun/SG = locate(/obj/item/vehicle_module/tool/syringe_gun) in chassis
if(SG)
available_chemicals += SG.known_reagents.Copy()
uniqueList_inplace(available_chemicals)
@@ -193,7 +193,7 @@
ui.open()
ui.set_auto_update(1)
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/inject_chemical(chemical, amount)
+/obj/item/vehicle_module/tool/sleeper/proc/inject_chemical(chemical, amount)
if(occupant_legacy && occupant_legacy.reagents)
occupant_message("Injecting [occupant_legacy] with [amount] units of [chemical].")
log_message("Injecting [occupant_legacy] with [amount] units of [chemical].")
@@ -201,7 +201,7 @@
chassis.use_power(DYNAMIC_J_TO_CELL_UNITS(amount * CHEM_SYNTH_ENERGY))
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/verb/eject()
+/obj/item/vehicle_module/tool/sleeper/verb/eject()
set name = "Sleeper Eject"
set category = "Exosuit Interface"
set src = usr.loc
@@ -212,13 +212,13 @@
return
go_out()//and release him from the eternal prison.
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/toggle_filter()
+/obj/item/vehicle_module/tool/sleeper/proc/toggle_filter()
if(!occupant_legacy)
filtering = 0
return
filtering = !filtering
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/toggle_pump()
+/obj/item/vehicle_module/tool/sleeper/proc/toggle_pump()
if(!occupant_legacy)
pumping = 0
return
@@ -227,7 +227,7 @@
/datum/global_iterator/mech_sleeper
var/dialysis_reagent_filter_flags = ~REAGENT_FILTER_NO_COMMON_BIOANALYSIS
-/datum/global_iterator/mech_sleeper/process(var/obj/item/mecha_parts/mecha_equipment/tool/sleeper/S)
+/datum/global_iterator/mech_sleeper/process(var/obj/item/vehicle_module/tool/sleeper/S)
if(!S.chassis)
S.set_ready_state(1)
return stop()
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/speedboost.dm b/code/modules/vehicles/sealed/mecha/modules/tools/speedboost.dm
similarity index 73%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/speedboost.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/speedboost.dm
index b4ade2f94dd..6a02903590a 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/speedboost.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/speedboost.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/speedboost
+/obj/item/vehicle_module/speedboost
name = "ripley leg actuator overdrive"
desc = "System enhancements and overdrives to make a ripley's legs move faster."
icon_state = "tesla"
@@ -10,7 +10,7 @@
var/slowdown_multiplier = 0.75 // How much does the exosuit multiply its slowdown by if it's the proper type?
/*
-/obj/item/mecha_parts/mecha_equipment/speedboost/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/speedboost/attach(obj/vehicle/sealed/mecha/M as obj)
..()
if(enable_special)
chassis.step_in = 3 // As fast as a gygax without overload. Slower than Ody.
@@ -19,13 +19,13 @@
return
*/
-/obj/item/mecha_parts/mecha_equipment/speedboost/get_step_delay()
+/obj/item/vehicle_module/speedboost/get_step_delay()
if(enable_special)
return -1
else
return 3
-/obj/item/mecha_parts/mecha_equipment/speedboost/detach()
+/obj/item/vehicle_module/speedboost/detach()
chassis.step_in = initial(chassis.step_in)
..()
return
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/syringe_gun.dm b/code/modules/vehicles/sealed/mecha/modules/tools/syringe_gun.dm
similarity index 83%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/syringe_gun.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/syringe_gun.dm
index b4783e26d63..25b3ba703ca 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/syringe_gun.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/syringe_gun.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
+/obj/item/vehicle_module/tool/syringe_gun
name = "syringe gun"
desc = "Exosuit-mounted chem synthesizer with syringe gun. Reagents inside are held in stasis, so no reactions will occur. (Can be attached to: Medical Exosuits)"
mech_flags = EXOSUIT_MODULE_MEDICAL
@@ -18,7 +18,7 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_MAGNET = 4, TECH_DATA = 3)
required_type = list(/obj/vehicle/sealed/mecha/medical)
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/Initialize(mapload)
+/obj/item/vehicle_module/tool/syringe_gun/Initialize(mapload)
. = ..()
atom_flags |= NOREACT
syringes = new
@@ -27,22 +27,22 @@
create_reagents(max_volume)
synth = new (list(src),0)
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/detach()
+/obj/item/vehicle_module/tool/syringe_gun/detach()
synth.stop()
return ..()
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/critfail()
+/obj/item/vehicle_module/tool/syringe_gun/critfail()
..()
atom_flags &= ~NOREACT
return
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/get_equip_info()
+/obj/item/vehicle_module/tool/syringe_gun/get_equip_info()
var/output = ..()
if(output)
return "[output] \[
[mode? "Analyze" : "Launch"]\]
\[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]
Reagents list"
return
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/action(atom/movable/target)
+/obj/item/vehicle_module/tool/syringe_gun/action(atom/movable/target)
if(!action_checks(target))
return
if(istype(target,/obj/item/reagent_containers/syringe))
@@ -102,7 +102,7 @@
return 1
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/Topic(href,href_list)
+/obj/item/vehicle_module/tool/syringe_gun/Topic(href,href_list)
..()
var/datum/topic_input/top_filter = new (href,href_list)
if(top_filter.get("toggle_mode"))
@@ -140,7 +140,7 @@
return
return
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_reagents_page()
+/obj/item/vehicle_module/tool/syringe_gun/proc/get_reagents_page()
var/output = {"
Reagent Synthesizer
@@ -168,7 +168,7 @@
"}
return output
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_reagents_form()
+/obj/item/vehicle_module/tool/syringe_gun/proc/get_reagents_form()
var/r_list = get_reagents_list()
var/inputs
if(r_list)
@@ -183,14 +183,14 @@
"}
return output
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_reagents_list()
+/obj/item/vehicle_module/tool/syringe_gun/proc/get_reagents_list()
var/output
for(var/i=1 to known_reagents.len)
var/reagent_id = known_reagents[i]
output += {"
[known_reagents[reagent_id]]
"}
return output
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_current_reagents()
+/obj/item/vehicle_module/tool/syringe_gun/proc/get_current_reagents()
var/output
for(var/datum/reagent/R in reagents.reagent_list)
if(R.volume > 0)
@@ -199,7 +199,7 @@
output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] -
Purge All"
return output || "None"
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S)
+/obj/item/vehicle_module/tool/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S)
if(syringes.len
= 2)
occupant_message("The syringe is too far away.")
@@ -221,7 +221,7 @@
occupant_message("The [src] syringe chamber is full.")
return 0
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/analyze_reagents(atom/A)
+/obj/item/vehicle_module/tool/syringe_gun/proc/analyze_reagents(atom/A)
if(get_dist(src,A) >= 4)
occupant_message("The object is too far away.")
return 0
@@ -240,7 +240,7 @@
occupant_message("Analysis complete.")
return 1
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/add_known_reagent(r_id,r_name)
+/obj/item/vehicle_module/tool/syringe_gun/proc/add_known_reagent(r_id,r_name)
set_ready_state(0)
do_after_cooldown()
if(!(r_id in known_reagents))
@@ -250,14 +250,14 @@
return 0
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/update_equip_info()
+/obj/item/vehicle_module/tool/syringe_gun/update_equip_info()
if(..())
send_byjax(chassis.occupant_legacy,"msyringegun.browser","reagents",get_current_reagents())
send_byjax(chassis.occupant_legacy,"msyringegun.browser","reagents_form",get_reagents_form())
return 1
return
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/on_reagent_change()
+/obj/item/vehicle_module/tool/syringe_gun/on_reagent_change()
..()
update_equip_info()
return
@@ -265,7 +265,7 @@
/datum/global_iterator/mech_synth
delay = 100
-/datum/global_iterator/mech_synth/process(var/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/S)
+/datum/global_iterator/mech_synth/process(var/obj/item/vehicle_module/tool/syringe_gun/S)
if(!S.chassis)
return stop()
var/energy_drain = S.energy_drain*10
@@ -279,7 +279,7 @@
S.chassis.use_power(energy_drain)
return 1
-/obj/item/mecha_parts/mecha_equipment/crisis_drone
+/obj/item/vehicle_module/crisis_drone
name = "crisis dronebay"
desc = "A small shoulder-mounted dronebay containing a rapid response drone capable of moderately stabilizing a patient near the exosuit."
icon_state = "mecha_dronebay"
@@ -315,25 +315,25 @@
equip_type = EQUIP_HULL
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/Initialize(mapload)
+/obj/item/vehicle_module/crisis_drone/Initialize(mapload)
. = ..()
drone_overlay = new(src.icon, icon_state = droid_state)
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/Destroy()
+/obj/item/vehicle_module/crisis_drone/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/crisis_drone/attach(obj/vehicle/sealed/mecha/M as obj)
. = ..(M)
if(chassis)
START_PROCESSING(SSobj, src)
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/detach(atom/moveto=null)
+/obj/item/vehicle_module/crisis_drone/detach(atom/moveto=null)
shut_down()
. = ..(moveto)
STOP_PROCESSING(SSobj, src)
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/critfail()
+/obj/item/vehicle_module/crisis_drone/critfail()
. = ..()
STOP_PROCESSING(SSobj, src)
shut_down()
@@ -341,7 +341,7 @@
to_chat(chassis.occupant_legacy, "\The [chassis] shudders as something jams!")
log_message("[src.name] has malfunctioned. Maintenance required.")
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/process() // Will continually try to find the nearest person above the threshold that is a valid target, and try to heal them.
+/obj/item/vehicle_module/crisis_drone/process() // Will continually try to find the nearest person above the threshold that is a valid target, and try to heal them.
if(chassis && enabled && chassis.has_charge(energy_drain) && (chassis.occupant_legacy || enable_special))
var/mob/living/Targ = Target
var/TargDamage = 0
@@ -390,7 +390,7 @@
else
shut_down()
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/proc/valid_target(var/mob/living/L)
+/obj/item/vehicle_module/crisis_drone/proc/valid_target(var/mob/living/L)
. = TRUE
if(!L || !istype(L))
@@ -427,7 +427,7 @@
if(tallydamage < damcap)
return FALSE
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/proc/shut_down()
+/obj/item/vehicle_module/crisis_drone/proc/shut_down()
if(enabled)
chassis.visible_message("\The [chassis]'s [src] buzzes as its drone returns to port.")
toggle_drone()
@@ -436,10 +436,10 @@
if(MyBeam)
QDEL_NULL(MyBeam)
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/proc/unique_patient_checks(var/mob/living/L) // Anything special for subtypes. Does it only work on Robots? Fleshies? A species?
+/obj/item/vehicle_module/crisis_drone/proc/unique_patient_checks(var/mob/living/L) // Anything special for subtypes. Does it only work on Robots? Fleshies? A species?
. = TRUE
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/proc/heal_target(var/mob/living/L) // We've done all our special checks, just get to fixing damage.
+/obj/item/vehicle_module/crisis_drone/proc/heal_target(var/mob/living/L) // We've done all our special checks, just get to fixing damage.
chassis.use_power(energy_drain)
if(istype(L))
L.adjustBruteLoss(brute_heal * -1)
@@ -458,7 +458,7 @@
if(prob(bone_heal))
E.status &= ~ORGAN_BROKEN
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/proc/toggle_drone()
+/obj/item/vehicle_module/crisis_drone/proc/toggle_drone()
if(chassis)
enabled = !enabled
if(enabled)
@@ -468,23 +468,23 @@
set_ready_state(1)
log_message("Deactivated.")
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/add_equip_overlay(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/crisis_drone/add_equip_overlay(obj/vehicle/sealed/mecha/M as obj)
..()
if(enabled)
M.add_overlay(drone_overlay)
return
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/Topic(href, href_list)
+/obj/item/vehicle_module/crisis_drone/Topic(href, href_list)
..()
if(href_list["toggle_drone"])
toggle_drone()
return
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/get_equip_info()
+/obj/item/vehicle_module/crisis_drone/get_equip_info()
if(!chassis) return
return "* [src.name] - [enabled?"Dea":"A"]ctivate"
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/rad
+/obj/item/vehicle_module/crisis_drone/rad
name = "hazmat dronebay"
desc = "A small shoulder-mounted dronebay containing a rapid response drone capable of purging a patient near the exosuit of radiation damage."
icon_state = "mecha_dronebay_rad"
@@ -497,7 +497,7 @@
clone_heal = 0.2
hal_heal = 0.2
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/medanalyzer
+/obj/item/vehicle_module/tool/powertool/medanalyzer
name = "mounted humanoid scanner"
desc = "An exosuit-mounted scanning device."
icon_state = "mecha_analyzer_health"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/teleporter.dm b/code/modules/vehicles/sealed/mecha/modules/tools/teleporter.dm
similarity index 80%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/teleporter.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/teleporter.dm
index 66e3fd71654..04d4d3f35df 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/teleporter.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/teleporter.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/teleporter
+/obj/item/vehicle_module/teleporter
name = "teleporter"
desc = "An exosuit module that allows exosuits to teleport to any position in view."
icon_state = "mecha_teleport"
@@ -9,7 +9,7 @@
equip_type = EQUIP_SPECIAL
-/obj/item/mecha_parts/mecha_equipment/teleporter/action(atom/target)
+/obj/item/vehicle_module/teleporter/action(atom/target)
if(!action_checks(target) || src.loc.z == 2) return
var/turf/T = get_turf(target)
if(T)
diff --git a/code/modules/vehicles/sealed/mecha/modules/tools/tools.dm b/code/modules/vehicles/sealed/mecha/modules/tools/tools.dm
new file mode 100644
index 00000000000..569e8371fd4
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/tools.dm
@@ -0,0 +1,2 @@
+/obj/item/vehicle_module/tool
+ equip_type = EQUIP_UTILITY
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/weldinglaser.dm b/code/modules/vehicles/sealed/mecha/modules/tools/weldinglaser.dm
similarity index 76%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/weldinglaser.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/weldinglaser.dm
index 4bfaf108a5b..a2108c1038c 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/weldinglaser.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/weldinglaser.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/welding
+/obj/item/vehicle_module/tool/powertool/welding
name = "welding laser"
desc = "An exosuit-mounted welding laser."
icon_state = "mecha_laser-rig"
@@ -12,7 +12,7 @@
tooltype = /obj/item/weldingtool/electric/mounted/exosuit
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/welding/action(var/atom/target)
+/obj/item/vehicle_module/tool/powertool/welding/action(var/atom/target)
..()
var/datum/beam_legacy/weld_beam = null
@@ -23,7 +23,7 @@
if(!do_after(chassis.occupant_legacy, 0.3 SECONDS, target))
qdel(weld_beam)
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/welding/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/tool/powertool/welding/attach(obj/vehicle/sealed/mecha/M as obj)
..()
if(enable_special)
diff --git a/code/modules/vehicles/sealed/mecha/equipment/tools/wormhole.dm b/code/modules/vehicles/sealed/mecha/modules/tools/wormhole.dm
similarity index 89%
rename from code/modules/vehicles/sealed/mecha/equipment/tools/wormhole.dm
rename to code/modules/vehicles/sealed/mecha/modules/tools/wormhole.dm
index 6bbc61aba2c..5755be6bf49 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/tools/wormhole.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/tools/wormhole.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/wormhole_generator
+/obj/item/vehicle_module/wormhole_generator
name = "wormhole generator"
desc = "An exosuit module that allows generating of small quasi-stable wormholes."
icon_state = "mecha_wholegen"
@@ -9,7 +9,7 @@
equip_type = EQUIP_SPECIAL
-/obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(atom/target)
+/obj/item/vehicle_module/wormhole_generator/action(atom/target)
if(!action_checks(target) || src.loc.z == 2) return
var/list/theareas = list()
for(var/area/AR in orange(100, chassis))
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/automatic.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/automatic.dm
similarity index 87%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/automatic.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/automatic.dm
index 6686d75d011..3261270e363 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/automatic.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/automatic.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
+/obj/item/vehicle_module/weapon/ballistic/lmg
name = "\improper Ultra AC 2"
desc = "A superior version of the standard Hephaestus Autocannon MK2 design."
icon_state = "mecha_uac2"
@@ -11,7 +11,7 @@
projectile_energy_cost = 20
fire_cooldown = 2
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg_heavy
+/obj/item/vehicle_module/weapon/ballistic/lmg_heavy
name = "\improper AC 10"
desc = "The original in anti-mech firepower, the standard Hephaestus Autocannon MK10 design fires AP slugs in order to damage other heavy armor suits. This does mean its rate between bursts is longer than most."
icon_state = "mecha_uac2"
@@ -24,7 +24,7 @@
projectile_energy_cost = 60
fire_cooldown = 2
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/gauss_rifle
+/obj/item/vehicle_module/weapon/ballistic/gauss_rifle
name = "\improper gauss rifle"
desc = "The current standard in non-laser, anti-armor firepower, this weapon is the same as those mounted on light tanks for their primary weapon. Fires a single nickle-iron slug at high speed. Requires a long charge time between shots. "
icon_state = "mecha_uac2-rig"
@@ -35,7 +35,7 @@
projectiles_per_shot = 1
projectile_energy_cost = 100
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/rigged
+/obj/item/vehicle_module/weapon/ballistic/lmg/rigged
name = "jury-rigged machinegun"
desc = "The cross between a jackhammer and a whole lot of zipguns."
icon_state = "mecha_uac2-rig"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/ballistic.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/ballistic.dm
similarity index 70%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/ballistic.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/ballistic.dm
index aa76ecfa39e..a46f323ac23 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/ballistic.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/ballistic.dm
@@ -1,11 +1,11 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic
+/obj/item/vehicle_module/weapon/ballistic
name = "general ballisic weapon"
var/projectile_energy_cost
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info()
+/obj/item/vehicle_module/weapon/ballistic/get_equip_info()
return "[..()]\[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]"
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/proc/rearm()
+/obj/item/vehicle_module/weapon/ballistic/proc/rearm()
if(projectiles < initial(projectiles))
var/projectiles_to_add = initial(projectiles) - projectiles
while(chassis.get_charge() >= projectile_energy_cost && projectiles_to_add)
@@ -16,7 +16,7 @@
log_message("Rearmed [src.name].")
return
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/Topic(href, href_list)
+/obj/item/vehicle_module/weapon/ballistic/Topic(href, href_list)
..()
if (href_list["rearm"])
src.rearm()
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/mortar.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/mortar.dm
similarity index 84%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/mortar.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/mortar.dm
index 897a0c74445..f7c3b775e38 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/mortar.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/mortar.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/mortar
+/obj/item/vehicle_module/weapon/ballistic/mortar
name = "\improper HEP RC 4 \"Skyfall\""
desc = "A Hephaestus exosuit-mounted mortar for use on planetary-or-similar bodies."
description_info = "This weapon cannot be fired indoors, underground, or on-station."
@@ -15,7 +15,7 @@
origin_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 5, TECH_ILLEGAL = 3)
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/mortar/action_checks(atom/target)
+/obj/item/vehicle_module/weapon/ballistic/mortar/action_checks(atom/target)
var/turf/MT = get_turf(chassis)
var/turf/TT = get_turf(target)
if(!MT.outdoors || !TT.outdoors)
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/shotgun.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/shotgun.dm
similarity index 83%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/shotgun.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/shotgun.dm
index d01c327341b..7ef5e32609d 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/ballistic/shotgun.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/ballistic/shotgun.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
+/obj/item/vehicle_module/weapon/ballistic/scattershot
name = "\improper LBX AC 10 \"Scattershot\""
desc = "A massive shotgun designed to fill a large area with pellets."
icon_state = "mecha_scatter"
@@ -15,7 +15,7 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 4)
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/rigged
+/obj/item/vehicle_module/weapon/ballistic/scattershot/rigged
name = "jury-rigged shrapnel cannon"
desc = "The remains of some unfortunate RCD now doomed to kill, rather than construct."
icon_state = "mecha_scatter-rig"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/defense/shocker.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/defense/shocker.dm
similarity index 67%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/defense/shocker.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/defense/shocker.dm
index 1312c886aaf..92709aef538 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/defense/shocker.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/defense/shocker.dm
@@ -2,7 +2,7 @@
//Defensive//
//////////////
-/obj/item/mecha_parts/mecha_equipment/shocker
+/obj/item/vehicle_module/shocker
name = "exosuit electrifier"
desc = "A device to electrify the external portions of a mecha in order to increase its defensive capabilities."
icon_state = "mecha_coil"
@@ -16,19 +16,19 @@
equip_type = EQUIP_HULL
/*
-/obj/item/mecha_parts/mecha_equipment/shocker/can_attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/shocker/can_attach(obj/vehicle/sealed/mecha/M as obj)
if(..())
if(!M.proc_res["dynattackby"] && !M.proc_res["dynattackhand"] && !M.proc_res["dynattackalien"])
return 1
return 0
-/obj/item/mecha_parts/mecha_equipment/shocker/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/shocker/attach(obj/vehicle/sealed/mecha/M as obj)
..()
chassis.proc_res["dynattackby"] = src
return
*/
-/obj/item/mecha_parts/mecha_equipment/shocker/handle_melee_contact(var/obj/item/W, var/mob/living/user, var/inc_damage = null)
+/obj/item/vehicle_module/shocker/handle_melee_contact(var/obj/item/W, var/mob/living/user, var/inc_damage = null)
if(!action_checks(user) || !active)
return
diff --git a/code/modules/vehicles/sealed/mecha/modules/weapons/energy/energy.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/energy.dm
new file mode 100644
index 00000000000..689df73cfdf
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/energy.dm
@@ -0,0 +1,3 @@
+/obj/item/vehicle_module/weapon/energy
+ name = "general energy weapon"
+ auto_rearm = 1
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/ion.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/ion.dm
similarity index 83%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/energy/ion.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/energy/ion.dm
index c1d13206cda..e7c680b9340 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/ion.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/ion.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
+/obj/item/vehicle_module/weapon/energy/ion
equip_cooldown = 40
name = "mkIV ion heavy cannon"
desc = "An upscaled variant of anti-mechanical weaponry constructed by NT, such as the EW Halicon."
@@ -9,7 +9,7 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 4, TECH_MAGNET = 4)
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion/rigged
+/obj/item/vehicle_module/weapon/energy/ion/rigged
equip_cooldown = 30
name = "jury-rigged ion cannon"
desc = "A tesla coil modified to amplify an ionic wave, and use it as a projectile."
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/laser.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/laser.dm
similarity index 86%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/energy/laser.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/energy/laser.dm
index 8b755f2b574..1b19335321e 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/laser.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/laser.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
+/obj/item/vehicle_module/weapon/energy/laser
equip_cooldown = 8
name = "\improper CH-PS \"Immolator\" laser"
desc = "A laser carbine's firing system mounted on a high-powered exosuit weapon socket."
@@ -9,7 +9,7 @@
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 3, TECH_MAGNET = 3)
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray
+/obj/item/vehicle_module/weapon/energy/laser/xray
equip_cooldown = 6
name = "\improper CH-XS \"Penetrator\" laser"
desc = "A large, mounted variant of the anti-armor xray rifle."
@@ -20,7 +20,7 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_POWER = 3)
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray/rigged
+/obj/item/vehicle_module/weapon/energy/laser/xray/rigged
equip_cooldown = 12
name = "jury-rigged xray rifle"
desc = "A modified wormhole modulation array and meson-scanning control system allow this abomination to produce concentrated blasts of xrays."
@@ -29,7 +29,7 @@
equip_type = EQUIP_UTILITY
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser
+/obj/item/vehicle_module/weapon/energy/riggedlaser
equip_cooldown = 15
name = "jury-rigged welder-laser"
desc = "While not regulation, this inefficient weapon can be attached to working exo-suits in desperate, or malicious, times."
@@ -43,7 +43,7 @@
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 2, TECH_MAGNET = 2)
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
+/obj/item/vehicle_module/weapon/energy/laser/heavy
equip_cooldown = 15
name = "\improper CH-LC \"Solaris\" laser cannon"
desc = "In the Solaris, the lasing medium is enclosed in a tube lined with plutonium-239 and subjected to extreme neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with massive laser volumes!"
@@ -56,7 +56,7 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 4, TECH_MAGNET = 4)
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/rigged
+/obj/item/vehicle_module/weapon/energy/laser/heavy/rigged
equip_cooldown = 25
name = "jury-rigged emitter cannon"
desc = "While not regulation, this mining tool can be used as an inefficient weapon on working exo-suits in desperate, or malicious, times."
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/phased.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/phased.dm
similarity index 89%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/energy/phased.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/energy/phased.dm
index 1363661a73c..34e5d5b5dde 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/phased.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/phased.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase
+/obj/item/vehicle_module/weapon/energy/phase
equip_cooldown = 6
name = "\improper NT-PE \"Scorpio\" phase-emitter"
desc = "A specialist energy weapon intended for use against hostile wildlife."
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/pulse.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/pulse.dm
similarity index 87%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/energy/pulse.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/energy/pulse.dm
index b2de5f21e69..dbc2213fc42 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/pulse.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/pulse.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse
+/obj/item/vehicle_module/weapon/energy/pulse
equip_cooldown = 30
name = "eZ-13 mk2 heavy pulse rifle"
desc = "An experimental Anti-Everything weapon."
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/stun.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/stun.dm
similarity index 81%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/energy/stun.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/energy/stun.dm
index 1334a766fe5..8c0b0e0e4c0 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/energy/stun.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/energy/stun.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
+/obj/item/vehicle_module/weapon/energy/taser
name = "\improper PBT \"Pacifier\" mounted taser"
desc = "A large taser of similar design as those used in standard NT turrets, for use on an Exosuit."
icon_state = "mecha_taser"
@@ -7,7 +7,7 @@
projectile = /obj/projectile/beam/stun
fire_sound = 'sound/weapons/Taser.ogg'
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser/rigged
+/obj/item/vehicle_module/weapon/energy/taser/rigged
name = "jury-rigged static rifle"
desc = "A vaguely functional taser analog, inside an extinguisher casing."
icon_state = "mecha_taser-rig"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/explosive/grenade.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/explosive/grenade.dm
similarity index 72%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/explosive/grenade.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/explosive/grenade.dm
index a659edf613b..72b39342363 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/explosive/grenade.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/explosive/grenade.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade
name = "\improper SGL-6 grenade launcher"
desc = "A grenade launcher produced for SWAT use; fires flashbangs."
icon_state = "mecha_grenadelnchr"
@@ -10,7 +10,7 @@
equip_cooldown = 60
var/det_time = 20
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/rigged
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/rigged
name = "jury-rigged pneumatic flashlauncher"
desc = "A grenade launcher constructed out of estranged blueprints; fires flashbangs."
icon_state = "mecha_grenadelnchr-rig"
@@ -18,27 +18,27 @@
missile_speed = 1
det_time = 25
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/Fire(atom/movable/AM, atom/target, turf/aimloc)
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/Fire(atom/movable/AM, atom/target, turf/aimloc)
var/obj/item/grenade/G = AM
if(istype(G))
G.det_time = det_time
G.activate(chassis.occupant_legacy) //Grenades actually look primed and dangerous, handle their own stuff.
AM.throw_at_old(target,missile_range, missile_speed, chassis)
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang//Because I am a heartless bastard -Sieve
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/clusterbang//Because I am a heartless bastard -Sieve
name = "\improper SOP-6 grenade launcher"
desc = "A grenade launcher produced for use by government uprising subjugation forces, or that's what you might guess; fires matryoshka flashbangs."
projectile = /obj/item/grenade/flashbang/clusterbang
origin_tech = list(TECH_COMBAT= 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang/limited/get_equip_info()//Limited version of the clusterbang launcher that can't reload
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/clusterbang/limited/get_equip_info()//Limited version of the clusterbang launcher that can't reload
return "* [chassis.selected==src?"":""][src.name][chassis.selected==src?"":""]\[[src.projectiles]\]"
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang/limited/rearm()
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/clusterbang/limited/rearm()
return//Extra bit of security
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/concussion
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/concussion
name = "\improper SGL-9 grenade launcher"
desc = "A military-grade grenade launcher that fires disorienting concussion grenades."
icon_state = "mecha_grenadelnchr"
@@ -50,7 +50,7 @@
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_ILLEGAL = 1)
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/frag
name = "\improper HEP-I 5 grenade launcher"
desc = "A military-grade grenade launcher that fires anti-personnel fragmentation grenades."
icon_state = "mecha_fraglnchr"
@@ -60,7 +60,7 @@
origin_tech = list(TECH_COMBAT = 5, TECH_ENGINEERING = 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag/mini
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/frag/mini
name = "\improper HEP-MI 6 grenade launcher"
desc = "A military-grade grenade launcher that fires miniaturized anti-personnel fragmentation grenades."
projectile = /obj/item/grenade/explosive/mini
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/explosive/missile.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/explosive/missile.dm
similarity index 72%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/explosive/missile.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/explosive/missile.dm
index 906571029b2..e5f1fa3f455 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/explosive/missile.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/explosive/missile.dm
@@ -1,10 +1,10 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack
+/obj/item/vehicle_module/weapon/ballistic/missile_rack
var/missile_speed = 2
var/missile_range = 30
step_delay = 0.5
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/flare
name = "\improper BNI Flare Launcher"
desc = "A flare-gun, but bigger."
icon_state = "mecha_flaregun"
@@ -22,12 +22,12 @@
equip_type = EQUIP_UTILITY
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare/Fire(atom/movable/AM, atom/target, turf/aimloc)
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/flare/Fire(atom/movable/AM, atom/target, turf/aimloc)
var/obj/item/flashlight/flare/fired = AM
fired.ignite()
..()
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive
name = "\improper SRM-8 missile rack"
desc = "A missile battery that holds eight missiles."
icon_state = "mecha_missilerack"
@@ -38,7 +38,7 @@
equip_cooldown = 60
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive/rigged
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive/rigged
name = "jury-rigged rocket pod"
desc = "A series of pipes, tubes, and cables that resembles a rocket pod."
icon_state = "mecha_missilerack-rig"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/fire/flamethrower.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/fire/flamethrower.dm
similarity index 91%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/fire/flamethrower.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/fire/flamethrower.dm
index c0548683058..ff25e5b37bc 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/fire/flamethrower.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/fire/flamethrower.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer
+/obj/item/vehicle_module/weapon/energy/flamer
equip_cooldown = 30
name = "\improper CR-3 Mark 8"
desc = "An imposing device, this weapon hurls balls of fire."
@@ -14,7 +14,7 @@
origin_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 6, TECH_PHORON = 4, TECH_ILLEGAL = 4)
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged
+/obj/item/vehicle_module/weapon/energy/flamer/rigged
name = "\improper AA-CR-1 Mark 4"
description_fluff = "A firefighting tool maintained by Aether Atmospherics, whose initial design originated from a small Earth company. This one seems to have been jury rigged."
icon_state = "mecha_cremate-rig"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/fire/incendiary.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/fire/incendiary.dm
similarity index 92%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/fire/incendiary.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/fire/incendiary.dm
index afb7758546e..efe315750a9 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/fire/incendiary.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/fire/incendiary.dm
@@ -2,7 +2,7 @@
//Fire-based//
//////////////
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/incendiary
+/obj/item/vehicle_module/weapon/ballistic/incendiary
name = "\improper DR-AC 3"
desc = "Dual-barrel rotary machinegun that fires small, incendiary rounds. Ages ten and up."
description_fluff = "A weapon designed by Hephaestus Industries, the DR-AC 3's design was plagued by prototype faults including but not limited to: Spontaneous combustion, spontaneous detonation, and excessive collateral conflagration."
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/honk.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/honk.dm
similarity index 85%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/honk.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/honk.dm
index 0cda1685441..608b430c7ff 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/honk.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/honk.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/honker
+/obj/item/vehicle_module/weapon/honker
name = "sound emission device"
desc = "A perfectly normal bike-horn, for your exosuit."
icon_state = "mecha_honker"
@@ -8,7 +8,7 @@
equip_type = EQUIP_SPECIAL
-/obj/item/mecha_parts/mecha_equipment/weapon/honker/action(target)
+/obj/item/vehicle_module/weapon/honker/action(target)
if(!chassis)
return 0
if(energy_drain && chassis.get_charge() < energy_drain)
@@ -36,7 +36,7 @@
do_after_cooldown()
return
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/banana
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/banana
name = "\improper Banana Peel launcher"
desc = "A pneumatic launcher designed for maximum hilarity; fires banana peels."
icon_state = "mecha_bananamrtr"
@@ -47,7 +47,7 @@
projectile_energy_cost = 600
equip_cooldown = 60
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/mousetrap
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/mousetrap
name = "\improper Mouse Trap launcher"
desc = "A pneumatic launcher designed for maximum hilarity; fires mouse traps."
icon_state = "mecha_mousetrapmrtr"
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/reticent.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/reticent.dm
similarity index 89%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/reticent.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/reticent.dm
index de4a155908e..6ef1cabdc3d 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/reticent.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/reticent.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon/whisperblade
+/obj/item/vehicle_module/weapon/whisperblade
name = "whisper blade"
desc = "This blade's fractal edging allows it to slice through heavy armor plating like butter without a sound."
icon_state = "mecha_whisper"
@@ -9,7 +9,7 @@
equip_type = EQUIP_SPECIAL
-/obj/item/mecha_parts/mecha_equipment/weapon/whisperblade/action(atom/target)
+/obj/item/vehicle_module/weapon/whisperblade/action(atom/target)
if(!action_checks(target)) return
if(istype(target,/mob/living))
@@ -42,7 +42,7 @@
//Recode using the drill, in case I want that later?
/*
-/obj/item/mecha_parts/mecha_equipment/weapon/whisperblade/proc/slice_mob(mob/living/target, mob/user)
+/obj/item/vehicle_module/weapon/whisperblade/proc/slice_mob(mob/living/target, mob/user)
add_attack_logs(user, target, "attacked", "[name]", "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
var/blade_force = force //Couldn't manage it otherwise.
if(ishuman(target))
@@ -63,7 +63,7 @@
return
*/
-/obj/item/mecha_parts/mecha_equipment/weapon/infernoblade
+/obj/item/vehicle_module/weapon/infernoblade
name = "inferno blade"
desc = "This blade's edge has been replaced with a rapid-activation heating element designed for industrial cutting."
icon_state = "mecha_inferno"
@@ -74,7 +74,7 @@
equip_type = EQUIP_SPECIAL
-/obj/item/mecha_parts/mecha_equipment/weapon/infernoblade/action(atom/target)
+/obj/item/vehicle_module/weapon/infernoblade/action(atom/target)
if(!action_checks(target)) return
if(istype(target,/mob/living))
@@ -109,12 +109,12 @@
//Equipment
//Reticent Linear Projector
-/obj/item/mecha_parts/mecha_equipment/combat_shield/reticent
+/obj/item/vehicle_module/combat_shield/reticent
name = "linear combat shield"
desc = "A Silencium infused linear combat shield. Its faint presence cannot be easily detected."
icon_state = "shield_mime"
-/obj/item/mecha_parts/mecha_equipment/combat_shield/reticent/add_equip_overlay(obj/vehicle/sealed/mecha/M)
+/obj/item/vehicle_module/combat_shield/reticent/add_equip_overlay(obj/vehicle/sealed/mecha/M)
if(!drone_overlay)
drone_overlay = new(src.icon, icon_state = "shield_droid_mime")
M.add_overlay(drone_overlay)
@@ -130,7 +130,7 @@
low_color = "#FFC2C2"
//Reticence Rectangular Projector
-/obj/item/mecha_parts/mecha_equipment/omni_shield/reticence
+/obj/item/vehicle_module/omni_shield/reticence
name = "faint omni shield"
desc = "A perfected Silencium combat shield. The manner by which it distorts the air is the only way to tell it's there at all."
shield_type = /obj/item/shield_projector/rectangle/mecha/reticence
diff --git a/code/modules/vehicles/sealed/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/sealed/mecha/modules/weapons/weapons.dm
similarity index 88%
rename from code/modules/vehicles/sealed/mecha/equipment/weapons/weapons.dm
rename to code/modules/vehicles/sealed/mecha/modules/weapons/weapons.dm
index 1143d4bb3e5..ae5db207671 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/weapons/weapons.dm
+++ b/code/modules/vehicles/sealed/mecha/modules/weapons/weapons.dm
@@ -1,4 +1,4 @@
-/obj/item/mecha_parts/mecha_equipment/weapon
+/obj/item/vehicle_module/weapon
name = "mecha weapon"
range = RANGED
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3)
@@ -16,12 +16,12 @@
equip_type = EQUIP_WEAPON
-/obj/item/mecha_parts/mecha_equipment/weapon/action_checks(atom/target)
+/obj/item/vehicle_module/weapon/action_checks(atom/target)
if(projectiles <= 0)
return 0
return ..()
-/obj/item/mecha_parts/mecha_equipment/weapon/action(atom/target, params)
+/obj/item/vehicle_module/weapon/action(atom/target, params)
if(!action_checks(target))
return
var/turf/curloc = chassis.loc
@@ -68,7 +68,7 @@
return
-/obj/item/mecha_parts/mecha_equipment/weapon/proc/Fire(atom/A, atom/target, params)
+/obj/item/vehicle_module/weapon/proc/Fire(atom/A, atom/target, params)
if(istype(A, /obj/projectile)) // Sanity.
var/obj/projectile/P = A
P.dispersion = deviation
@@ -78,7 +78,7 @@
var/atom/movable/AM = A
AM.throw_at_old(target, 7, 1, chassis)
-/obj/item/mecha_parts/mecha_equipment/weapon/proc/process_accuracy(obj/projectile, mob/living/user, atom/target)
+/obj/item/vehicle_module/weapon/proc/process_accuracy(obj/projectile, mob/living/user, atom/target)
var/obj/projectile/P = projectile
if(!istype(P))
return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat.dm
index ccd0f62bf8e..5edf08dc2ba 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/combat.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat.dm
@@ -20,11 +20,11 @@
encumbrance_gap = 1.5
starting_components = list(
- /obj/item/mecha_parts/component/hull/durable,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/reinforced,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull/durable,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/reinforced,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
/*
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/durand-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/durand-construction.dm
new file mode 100644
index 00000000000..a9484d76b53
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/durand-construction.dm
@@ -0,0 +1,323 @@
+
+/obj/item/vehicle_chassis/durand
+ name = "Durand Chassis"
+
+/obj/item/vehicle_chassis/durand/New()
+ ..()
+ construct = new /datum/construction/mecha/durand_chassis(src)
+
+/obj/item/vehicle_part/durand_torso
+ name="Durand Torso"
+ icon_state = "durand_harness"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/durand_head
+ name="Durand Head"
+ icon_state = "durand_head"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/durand_left_arm
+ name="Durand Left Arm"
+ icon_state = "durand_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/durand_right_arm
+ name="Durand Right Arm"
+ icon_state = "durand_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/durand_left_leg
+ name="Durand Left Leg"
+ icon_state = "durand_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/durand_right_leg
+ name="Durand Right Leg"
+ icon_state = "durand_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/durand_armour
+ name="Durand Armour Plates"
+ icon_state = "durand_armour"
+ origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
+
+/datum/construction/mecha/durand_chassis
+ steps = list(list("key"=/obj/item/vehicle_part/durand_torso),//1
+ list("key"=/obj/item/vehicle_part/durand_left_arm),//2
+ list("key"=/obj/item/vehicle_part/durand_right_arm),//3
+ list("key"=/obj/item/vehicle_part/durand_left_leg),//4
+ list("key"=/obj/item/vehicle_part/durand_right_leg),//5
+ list("key"=/obj/item/vehicle_part/durand_head)
+ )
+
+/datum/construction/mecha/durand_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/durand_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/durand_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/durand(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "durand0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/durand
+ result = "/obj/vehicle/sealed/mecha/combat/durand"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/vehicle_part/durand_armour,
+ "backkey"=/obj/item/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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/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/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/circuitboard/mecha/durand/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/circuitboard/mecha/durand/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/circuitboard/mecha/durand/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //17
+ list("key"=/obj/item/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/durand/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/durand/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(20)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "durand1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "durand2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "durand0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "durand3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "durand1"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "durand4"
+ 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 = "durand2"
+ 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 = "durand5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "durand3"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "durand6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/durand/main(get_turf(holder))
+ holder.icon_state = "durand4"
+ 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 = "durand7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "durand5"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "durand8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/durand/peripherals(get_turf(holder))
+ holder.icon_state = "durand6"
+ 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 = "durand9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "durand7"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ holder.icon_state = "durand10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ new /obj/item/circuitboard/mecha/durand/targeting(get_turf(holder))
+ holder.icon_state = "durand8"
+ 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 = "durand11"
+ else
+ user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
+ holder.icon_state = "durand9"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
+ holder.icon_state = "durand12"
+ else
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
+ new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
+ holder.icon_state = "durand10"
+ 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 = "durand13"
+ else
+ user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
+ holder.icon_state = "durand11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ holder.icon_state = "durand14"
+ 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 = "durand12"
+ 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 = "durand15"
+ else
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ holder.icon_state = "durand13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "durand16"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "durand14"
+ 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 = "durand17"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "durand15"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs Durand Armour Plates to [holder].", "You install Durand Armour Plates to [holder].")
+ qdel(I)
+ holder.icon_state = "durand18"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "durand16"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures Durand Armour Plates.", "You secure Durand Armour Plates.")
+ holder.icon_state = "durand19"
+ else
+ user.visible_message("[user] pries Durand Armour Plates from [holder].", "You pry Durand Armour Plates from [holder].")
+ new /obj/item/vehicle_part/durand_armour(get_turf(holder))
+ holder.icon_state = "durand17"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds Durand Armour Plates to [holder].", "You weld Durand Armour Plates to [holder].")
+ else
+ user.visible_message("[user] unfastens Durand Armour Plates.", "You unfasten Durand Armour Plates.")
+ holder.icon_state = "durand18"
+ return 1
+
+/datum/construction/reversible/mecha/durand/spawn_result()
+ ..()
+ feedback_inc("mecha_durand_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/durand.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/durand.dm
index 9e5861dcc3b..83bf682c812 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/combat/durand.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/durand.dm
@@ -24,11 +24,11 @@
max_special_equip = 1
starting_components = list(
- /obj/item/mecha_parts/component/hull/durable,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/military,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull/durable,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/military,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
defence_mode_possible = 1
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter.dm
index f1db8cc7d3f..7e2b4490522 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter.dm
@@ -1,5 +1,3 @@
-#define NOGRAV_FIGHTER_DAMAGE 20
-
/obj/vehicle/sealed/mecha/combat/fighter
name = "Delete me, nerd!!"
desc = "The base type of fightercraft. Don't spawn this one!"
@@ -39,13 +37,15 @@
max_special_equip = 1
starting_components = list(
- /obj/item/mecha_parts/component/hull/lightweight,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull/lightweight,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
+ var/in_gravity_damage = 20
+
/obj/vehicle/sealed/mecha/combat/fighter/Initialize(mapload)
. = ..()
ion_trail = new /datum/effect_system/ion_trail_follow()
@@ -118,7 +118,7 @@
stop_hover()
else if(moved && gravity && !ground_capable)
occupant_message("Collision alert! Vehicle not rated for use in gravity!")
- take_damage_legacy(NOGRAV_FIGHTER_DAMAGE, "brute")
+ take_damage_legacy(in_gravity_damage, "brute")
playsound(src, 'sound/effects/grillehit.ogg', 50, 1)
/obj/vehicle/sealed/mecha/combat/fighter/get_step_delay()
@@ -205,9 +205,9 @@
/obj/vehicle/sealed/mecha/combat/fighter/gunpod/loaded/Initialize(mapload) //Loaded version with guns
. = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/weapon/energy/laser
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
+ ME = new /obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive
ME.attach(src)
/obj/vehicle/sealed/mecha/combat/fighter/gunpod/recon
@@ -216,9 +216,9 @@
/obj/vehicle/sealed/mecha/combat/fighter/gunpod/recon/Initialize(mapload) //Blinky
. = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/teleporter(src)
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/teleporter(src)
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src)
+ ME = new /obj/item/vehicle_module/tesla_energy_relay(src)
ME.attach(src)
/obj/vehicle/sealed/mecha/combat/fighter/gunpod/update_icon()
@@ -263,314 +263,3 @@
and sometimes one or two passengers, with the right modifications made. \
Typically used as small fighter craft, the gunpod can't carry much of a payload, though it's still capable of holding it's own."
value = CATALOGUER_REWARD_MEDIUM
-
-
-////////////// Baron //////////////
-
-/obj/vehicle/sealed/mecha/combat/fighter/baron
- name = "\improper Baron"
- desc = "A conventional space superiority fighter, one-seater. Not capable of ground operations."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "baron"
- initial_icon = "baron"
-
- integrity = 600
- integrity_max = 600
-
- catalogue_data = list(/datum/category_item/catalogue/technology/baron)
- wreckage = /obj/effect/decal/mecha_wreckage/baron
-
- ground_capable = FALSE
-
-/obj/vehicle/sealed/mecha/combat/fighter/baron/loaded/Initialize(mapload) //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)
- ME = new /obj/item/mecha_parts/mecha_equipment/omni_shield
- ME.attach(src)
-
-/obj/effect/decal/mecha_wreckage/baron
- name = "Baron wreckage"
- desc = "Remains of some unfortunate fighter. Completely unrepairable."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "baron-broken"
- bound_width = 64
- bound_height = 64
-
-/obj/vehicle/sealed/mecha/combat/fighter/baron/sec
- name = "\improper Baron-SV"
- desc = "A conventional space superiority fighter, one-seater. Not capable of ground operations. The Baron-SV (Security Variant) is frequently used by NT Security forces during EVA patrols."
-
-/obj/vehicle/sealed/mecha/combat/fighter/baron/sec/loaded/Initialize(mapload) //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)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/phase
- ME.attach(src)
-
-/datum/category_item/catalogue/technology/baron
- name = "Voidcraft - Baron"
- desc = "This is a small space fightercraft that has an arrowhead design. Can hold up to one pilot. \
- Unlike some fighters, this one is not designed for atmospheric operation, and is only capable of performing \
- maneuvers in the vacuum of space. Attempting flight while in an atmosphere is not recommended."
- value = CATALOGUER_REWARD_MEDIUM
-
-
-////////////// Duke //////////////
-
-/obj/vehicle/sealed/mecha/combat/fighter/duke
- name = "\improper Duke"
- desc = "The Duke Heavy Fighter is designed and manufactured by Hephaestus Industries as a bulky craft built to punch above its weight. This one comes painted in Nanotrasen's blue white and black color scheme straight out of the fabricator, catering to security team's need for friendly identification. It makes up for the minimal hull upgrade space with a stronger chassis, and multiple mounting points for missiles, bombs, and lasers. It's incapable of Atmospheric flight."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "duke"
- initial_icon = "duke"
-
- step_in = 3 //slightly slower than a baron (this shit doesnt actually work atm, likely due to the whole equipment weight nonsense)
-
- integrity = 1200
- integrity_max = 1200 //double baron HP, only room for one defensive upgrade. No specials(cloaking, speed, ect) or universals.
-
- max_hull_equip = 1
- max_weapon_equip = 4
- max_utility_equip = 2
- max_universal_equip = 0
- max_special_equip = 0
-
- catalogue_data = list(/datum/category_item/catalogue/technology/duke)
- wreckage = /obj/effect/decal/mecha_wreckage/duke
-
- ground_capable = FALSE
-
-/obj/vehicle/sealed/mecha/combat/fighter/duke/loaded/Initialize(mapload) //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)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
- ME.attach(src)
-
-/obj/vehicle/sealed/mecha/combat/fighter/duke/db
- name = "\improper Duke \"Deep Blue\""
- desc = "A Duke heavy fighter decorated with the common 'Deep Blue' customization kit, both designed and sold by Hephaestus Industries. This paint scheme pays homage to one of the first supercomputing systems that dared to push the boundaries of what it meant to think. Think 40 steps ahead of your enemy with these colorations, just as Deep Blue did so many years ago."
- icon_state = "duke_db"
- initial_icon = "duke_db"
- wreckage = /obj/effect/decal/mecha_wreckage/duke/db
-
-/obj/vehicle/sealed/mecha/combat/fighter/duke/db/loaded/Initialize(mapload) //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)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
- ME.attach(src)
-
-/obj/vehicle/sealed/mecha/combat/fighter/duke/cw
- name = "\improper Duke \"Clockwork\""
- desc = "A Duke heavy fighter decorated with the rare 'Clockwork' customization kit, both designed and sold by Hephaestus Industries. Textured paint with accurate colorations and reflectiveness to brass makes this Duke Heavy Fighter stand out amongst the competition in any conflict."
- icon_state = "duke_cw"
- initial_icon = "duke_cw"
- wreckage = /obj/effect/decal/mecha_wreckage/duke/cw
-
-/obj/vehicle/sealed/mecha/combat/fighter/duke/cw/loaded/Initialize(mapload) //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)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
- ME.attach(src)
-
-/obj/effect/decal/mecha_wreckage/duke
- name = "Duke wreckage"
- desc = "Remains of some unfortunate fighter. Completely unrepairable."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "duke-broken"
- bound_width = 64
- bound_height = 64
-
-/obj/effect/decal/mecha_wreckage/duke/db
- name = "Duke wreckage"
- desc = "Remains of some unfortunate fighter. Completely unrepairable."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "duke_db-broken"
- bound_width = 64
- bound_height = 64
-
-/obj/effect/decal/mecha_wreckage/duke/cw
- name = "Duke wreckage"
- desc = "Remains of some unfortunate fighter. Completely unrepairable."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "duke_cw-broken"
- bound_width = 64
- bound_height = 64
-
-/datum/category_item/catalogue/technology/duke
- name = "Voidcraft - Duke"
- desc = "The Duke Heavy Fighter is designed and manufactured by Hephaestus Industries as a bulky craft built to punch above its weight. Primarily armed with missiles, bombs, or similar large payloads, this fighter packs a punch against most at the cost of room for minimul hull modifications, which is almost always reserved for much-needed armor inserts instead of a shield. It's incapable of atmospheric flight."
- value = CATALOGUER_REWARD_MEDIUM
-
-
-////////////// Scoralis //////////////
-
-/obj/vehicle/sealed/mecha/combat/fighter/scoralis
- name = "\improper Scoralis"
- desc = "An imported space fighter with integral cloaking device. Beware the power consumption, though. Not capable of ground operations."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "scoralis"
- initial_icon = "scoralis"
-
- catalogue_data = list(/datum/category_item/catalogue/technology/scoralis)
- wreckage = /obj/effect/decal/mecha_wreckage/scoralis
-
- ground_capable = FALSE
-
-/obj/vehicle/sealed/mecha/combat/fighter/scoralis/loaded/Initialize(mapload) //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)
- ME = new /obj/item/mecha_parts/mecha_equipment/cloak
- ME.attach(src)
-
-/obj/effect/decal/mecha_wreckage/scoralis
- name = "scoralis wreckage"
- desc = "Remains of some unfortunate fighter. Completely unrepairable."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "scoralis-broken"
- bound_width = 64
- bound_height = 64
-
-/datum/category_item/catalogue/technology/scoralis
- name = "Voidcraft - Scoralis"
- desc = "An import model fightercraft, this one contains an integral cloaking device that renders the fighter invisible \
- to the naked eye. Still detectable on thermal sensors, the craft can maneuver in close to ill-equipped foes and strike unseen. \
- Not rated for atmospheric travel, this craft excels at hit and run tactics, as it will likely need to recharge batteries between each 'hit'."
- value = CATALOGUER_REWARD_MEDIUM
-
-////////////// Allure //////////////
-
-/obj/vehicle/sealed/mecha/combat/fighter/allure
- name = "\improper Allure"
- desc = "A fighter of Skrellian design. Its angular shape and wide overhead cross-section is made up for by it's stout armor and carefully crafted hull paint."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "allure"
- initial_icon = "allure"
-
- catalogue_data = list(/datum/category_item/catalogue/technology/allure)
- wreckage = /obj/effect/decal/mecha_wreckage/allure
-
- ground_capable = FALSE
-
- integrity = 500
- integrity_max = 500
-
-/obj/vehicle/sealed/mecha/combat/fighter/allure/loaded/Initialize(mapload) //Loaded version with guns
- . = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/cloak
- ME.attach(src)
-
-/obj/vehicle/sealed/mecha/combat/fighter/allure/royalty
- name = "\improper Allure \"Royalty\""
- desc = "A limited edition purple design with gold inlay that embodies the same colorations and pattern designs of royalty skrellian during the time of the Allure's initial release."
- icon_state = "allure_royalty"
- initial_icon = "allure_royalty"
- wreckage = /obj/effect/decal/mecha_wreckage/allure/royalty
-
-/obj/vehicle/sealed/mecha/combat/fighter/allure/royalty/loaded/Initialize(mapload) //Loaded version with guns
- . = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/cloak
- ME.attach(src)
-
-/obj/effect/decal/mecha_wreckage/allure
- name = "allure wreckage"
- desc = "Remains of some unfortunate fighter. Completely unrepairable."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "allure-broken"
- bound_width = 64
- bound_height = 64
-
-/obj/effect/decal/mecha_wreckage/allure/royalty
- icon_state = "allure_royalty-broken"
-
-/datum/category_item/catalogue/technology/allure
- name = "Voidcraft - Allure"
- desc = "A space superiority fighter of Skrellian design. Its angular shape and wide overhead cross-section is made up for by it's stout armor and carefully crafted hull paint. \
- Import craft like this one often ship with no weapons, though the Skrell saw fit to integrate a cloaking device."
- value = CATALOGUER_REWARD_MEDIUM
-
-////////////// Pinnace //////////////
-
-/obj/vehicle/sealed/mecha/combat/fighter/pinnace
- name = "\improper Pinnace"
- desc = "A cramped ship's boat, capable of atmospheric and space flight. Not capable of mounting traditional weapons. Capable of fitting one pilot and one passenger."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "pinnace"
- initial_icon = "pinnace"
-
- max_hull_equip = 1
- max_weapon_equip = 0
- max_utility_equip = 1
- max_universal_equip = 0
- max_special_equip = 1
-
- catalogue_data = list(/datum/category_item/catalogue/technology/pinnace)
- wreckage = /obj/effect/decal/mecha_wreckage/pinnace
-
- ground_capable = TRUE
-
-/obj/vehicle/sealed/mecha/combat/fighter/pinnace/loaded/Initialize(mapload) //Loaded version with guns
- . = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
- ME.attach(src)
-
-/obj/effect/decal/mecha_wreckage/pinnace
- name = "pinnace wreckage"
- desc = "Remains of some unfortunate ship's boat. Completely unrepairable."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "pinnace-broken"
- bound_width = 64
- bound_height = 64
-
-/datum/category_item/catalogue/technology/pinnace
- name = "Voidcraft - Pinnace"
- desc = "A very small boat, usually used as a tender at very close ranges. The lack of a bluespace \
- drive means that it can't get too far from it's parent ship. Though the pinnace is typically unarmed, \
- it is capable of atmospheric flight and escaping most pursuing fighters by diving into the atmosphere of \
- nearby planets to seek cover."
- value = CATALOGUER_REWARD_MEDIUM
-
-
-////////////// Cludge //////////////
-
-/obj/vehicle/sealed/mecha/combat/fighter/cludge
- name = "\improper Cludge"
- desc = "A heater, nozzle, and fuel tank strapped together. There are exposed wires strewn about it."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "cludge"
- initial_icon = "cludge"
-
- integrity = 100
- integrity_max = 100
-
- max_hull_equip = 0
- max_weapon_equip = 0
- max_utility_equip = 0
- max_universal_equip = 0
- max_special_equip = 0
-
- catalogue_data = list(/datum/category_item/catalogue/technology/cludge)
- wreckage = /obj/effect/decal/mecha_wreckage/cludge
-
- ground_capable = TRUE
-
-/obj/effect/decal/mecha_wreckage/cludge
- name = "Cludge wreckage"
- desc = "It doesn't look much different than it normally does. Completely unrepairable."
- icon = 'icons/mecha/fighters64x64.dmi'
- icon_state = "cludge-broken"
- bound_width = 64
- bound_height = 64
-
-/datum/category_item/catalogue/technology/cludge
- name = "Voidcraft - Cludge"
- desc = "A collection of parts strapped together in an attempt to make a flying vessel. Such vessels are fragile, unstable \
- and very easily break apart, due to their roughshod engineering. These vessels commonly are built without critical components \
- such as life support, or armor plating."
- value = CATALOGUER_REWARD_MEDIUM
-
-#undef NOGRAV_FIGHTER_DAMAGE
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/allure.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/allure.dm
new file mode 100644
index 00000000000..bbfc264b6b0
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/allure.dm
@@ -0,0 +1,48 @@
+/obj/vehicle/sealed/mecha/combat/fighter/allure
+ name = "\improper Allure"
+ desc = "A fighter of Skrellian design. Its angular shape and wide overhead cross-section is made up for by it's stout armor and carefully crafted hull paint."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "allure"
+ initial_icon = "allure"
+
+ catalogue_data = list(/datum/category_item/catalogue/technology/allure)
+ wreckage = /obj/effect/decal/mecha_wreckage/allure
+
+ ground_capable = FALSE
+
+ integrity = 500
+ integrity_max = 500
+
+/obj/vehicle/sealed/mecha/combat/fighter/allure/loaded/Initialize(mapload) //Loaded version with guns
+ . = ..()
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/cloak
+ ME.attach(src)
+
+/obj/vehicle/sealed/mecha/combat/fighter/allure/royalty
+ name = "\improper Allure \"Royalty\""
+ desc = "A limited edition purple design with gold inlay that embodies the same colorations and pattern designs of royalty skrellian during the time of the Allure's initial release."
+ icon_state = "allure_royalty"
+ initial_icon = "allure_royalty"
+ wreckage = /obj/effect/decal/mecha_wreckage/allure/royalty
+
+/obj/vehicle/sealed/mecha/combat/fighter/allure/royalty/loaded/Initialize(mapload) //Loaded version with guns
+ . = ..()
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/cloak
+ ME.attach(src)
+
+/obj/effect/decal/mecha_wreckage/allure
+ name = "allure wreckage"
+ desc = "Remains of some unfortunate fighter. Completely unrepairable."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "allure-broken"
+ bound_width = 64
+ bound_height = 64
+
+/obj/effect/decal/mecha_wreckage/allure/royalty
+ icon_state = "allure_royalty-broken"
+
+/datum/category_item/catalogue/technology/allure
+ name = "Voidcraft - Allure"
+ desc = "A space superiority fighter of Skrellian design. Its angular shape and wide overhead cross-section is made up for by it's stout armor and carefully crafted hull paint. \
+ Import craft like this one often ship with no weapons, though the Skrell saw fit to integrate a cloaking device."
+ value = CATALOGUER_REWARD_MEDIUM
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/baron-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/baron-construction.dm
new file mode 100644
index 00000000000..17b5c481868
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/baron-construction.dm
@@ -0,0 +1,325 @@
+/obj/item/vehicle_chassis/fighter/baron
+ name = "\improper Baron Chassis"
+ icon_state = "baron_chassis"
+
+ origin_tech = list(TECH_MATERIAL = 2)
+
+/obj/item/vehicle_chassis/fighter/baron/New()
+ ..()
+ construct = new /datum/construction/mecha/fighter/baron_chassis(src)
+
+
+/obj/item/vehicle_part/fighter/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/vehicle_part/fighter/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/vehicle_part/fighter/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/vehicle_part/fighter/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/vehicle_part/fighter/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/vehicle_part/fighter/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/vehicle_part/fighter/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)
+
+/datum/construction/mecha/fighter/baron_chassis
+ result = "/obj/vehicle/sealed/mecha/combat/fighter/baron"
+ steps = list(list("key"=/obj/item/vehicle_part/fighter/baron_core),//1
+ list("key"=/obj/item/vehicle_part/fighter/baron_cockpit),//2
+ list("key"=/obj/item/vehicle_part/fighter/baron_main_engine),//3
+ list("key"=/obj/item/vehicle_part/fighter/baron_left_engine),//4
+ list("key"=/obj/item/vehicle_part/fighter/baron_right_engine),//5
+ list("key"=/obj/item/vehicle_part/fighter/baron_left_wing),//6
+ list("key"=/obj/item/vehicle_part/fighter/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/vehicle_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/vehicle/sealed/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/modules/vehicles/sealed/mecha/subtypes/combat/fighter/baron.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/baron.dm
new file mode 100644
index 00000000000..f6249ddded2
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/baron.dm
@@ -0,0 +1,47 @@
+/obj/vehicle/sealed/mecha/combat/fighter/baron
+ name = "\improper Baron"
+ desc = "A conventional space superiority fighter, one-seater. Not capable of ground operations."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "baron"
+ initial_icon = "baron"
+
+ integrity = 600
+ integrity_max = 600
+
+ catalogue_data = list(/datum/category_item/catalogue/technology/baron)
+ wreckage = /obj/effect/decal/mecha_wreckage/baron
+
+ ground_capable = FALSE
+
+/obj/vehicle/sealed/mecha/combat/fighter/baron/loaded/Initialize(mapload) //Loaded version with guns
+ . = ..()
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/weapon/energy/laser
+ ME.attach(src)
+ ME = new /obj/item/vehicle_module/omni_shield
+ ME.attach(src)
+
+/obj/effect/decal/mecha_wreckage/baron
+ name = "Baron wreckage"
+ desc = "Remains of some unfortunate fighter. Completely unrepairable."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "baron-broken"
+ bound_width = 64
+ bound_height = 64
+
+/obj/vehicle/sealed/mecha/combat/fighter/baron/sec
+ name = "\improper Baron-SV"
+ desc = "A conventional space superiority fighter, one-seater. Not capable of ground operations. The Baron-SV (Security Variant) is frequently used by NT Security forces during EVA patrols."
+
+/obj/vehicle/sealed/mecha/combat/fighter/baron/sec/loaded/Initialize(mapload) //Loaded version with guns
+ . = ..()
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/weapon/energy/laser
+ ME.attach(src)
+ ME = new /obj/item/vehicle_module/weapon/energy/phase
+ ME.attach(src)
+
+/datum/category_item/catalogue/technology/baron
+ name = "Voidcraft - Baron"
+ desc = "This is a small space fightercraft that has an arrowhead design. Can hold up to one pilot. \
+ Unlike some fighters, this one is not designed for atmospheric operation, and is only capable of performing \
+ maneuvers in the vacuum of space. Attempting flight while in an atmosphere is not recommended."
+ value = CATALOGUER_REWARD_MEDIUM
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/cludge.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/cludge.dm
new file mode 100644
index 00000000000..cf807a20af2
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/cludge.dm
@@ -0,0 +1,35 @@
+/obj/vehicle/sealed/mecha/combat/fighter/cludge
+ name = "\improper Cludge"
+ desc = "A heater, nozzle, and fuel tank strapped together. There are exposed wires strewn about it."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "cludge"
+ initial_icon = "cludge"
+
+ integrity = 100
+ integrity_max = 100
+
+ max_hull_equip = 0
+ max_weapon_equip = 0
+ max_utility_equip = 0
+ max_universal_equip = 0
+ max_special_equip = 0
+
+ catalogue_data = list(/datum/category_item/catalogue/technology/cludge)
+ wreckage = /obj/effect/decal/mecha_wreckage/cludge
+
+ ground_capable = TRUE
+
+/obj/effect/decal/mecha_wreckage/cludge
+ name = "Cludge wreckage"
+ desc = "It doesn't look much different than it normally does. Completely unrepairable."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "cludge-broken"
+ bound_width = 64
+ bound_height = 64
+
+/datum/category_item/catalogue/technology/cludge
+ name = "Voidcraft - Cludge"
+ desc = "A collection of parts strapped together in an attempt to make a flying vessel. Such vessels are fragile, unstable \
+ and very easily break apart, due to their roughshod engineering. These vessels commonly are built without critical components \
+ such as life support, or armor plating."
+ value = CATALOGUER_REWARD_MEDIUM
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/duke-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/duke-construction.dm
new file mode 100644
index 00000000000..d6820831e1b
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/duke-construction.dm
@@ -0,0 +1,325 @@
+/obj/item/vehicle_chassis/fighter/duke
+ name = "\improper Duke Chassis"
+ icon_state = "duke_chassis"
+
+ origin_tech = list(TECH_MATERIAL = 2)
+
+/obj/item/vehicle_chassis/fighter/duke/New()
+ ..()
+ construct = new /datum/construction/mecha/fighter/duke_chassis(src)
+
+
+/obj/item/vehicle_part/fighter/duke_core
+ name="\improper Duke Core"
+ icon_state = "duke_core"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_BIO = 2, TECH_ENGINEERING = 4)
+
+/obj/item/vehicle_part/fighter/duke_cockpit
+ name="\improper Duke Cockpit"
+ icon_state = "duke_cockpit"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_BIO = 2, TECH_ENGINEERING = 4)
+
+/obj/item/vehicle_part/fighter/duke_left_wing
+ name="\improper Duke Left Wing"
+ icon_state = "duke_l_wing"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
+
+/obj/item/vehicle_part/fighter/duke_right_wing
+ name="\improper Duke Right Wing"
+ icon_state = "duke_r_wing"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
+
+/obj/item/vehicle_part/fighter/duke_main_engine
+ name="\improper Duke Main Engine"
+ icon_state = "duke_m_engine"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
+
+/obj/item/vehicle_part/fighter/duke_left_engine
+ name="\improper Duke Left Engine"
+ icon_state = "duke_l_engine"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
+
+/obj/item/vehicle_part/fighter/duke_right_engine
+ name="\improper Duke Right Engine"
+ icon_state = "duke_r_engine"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
+
+/datum/construction/mecha/fighter/duke_chassis
+ result = "/obj/vehicle/sealed/mecha/combat/fighter/duke"
+ steps = list(list("key"=/obj/item/vehicle_part/fighter/duke_core),//1
+ list("key"=/obj/item/vehicle_part/fighter/duke_cockpit),//2
+ list("key"=/obj/item/vehicle_part/fighter/duke_main_engine),//3
+ list("key"=/obj/item/vehicle_part/fighter/duke_left_engine),//4
+ list("key"=/obj/item/vehicle_part/fighter/duke_right_engine),//5
+ list("key"=/obj/item/vehicle_part/fighter/duke_left_wing),//6
+ list("key"=/obj/item/vehicle_part/fighter/duke_right_wing)//final
+ )
+
+/datum/construction/mecha/fighter/duke_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/duke_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/fighter/duke_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/fighter/duke(const_holder)
+ const_holder.icon = 'icons/mecha/fighters_construction64x64.dmi'
+ const_holder.icon_state = "duke0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+/datum/construction/reversible/mecha/fighter/duke
+ result = "/obj/vehicle/sealed/mecha/combat/fighter/duke"
+ 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/duke/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/duke/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/duke/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/duke/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/duke/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/fighter/duke/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 = "duke1"
+ 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 = "duke2"
+ else
+ user.visible_message("[user] removes [holder]'s hydraulic landing gear.", "You remove [holder]'s hydraulic landing gear.")
+ holder.icon_state = "duke0"
+ 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 = "duke3"
+ else
+ user.visible_message("[user] retracts [holder]'s hydraulic landing gear.", "You retract [holder]'s hydraulic landing gear.")
+ holder.icon_state = "duke1"
+ 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 = "duke4"
+ 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 = "duke2"
+ 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 = "duke5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "duke3"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the central control module.", "You secure the central control module.")
+ holder.icon_state = "duke6"
+ 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/duke/main(get_turf(holder))
+ holder.icon_state = "duke4"
+ 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 = "duke7"
+ else
+ user.visible_message("[user] unfastens the central control module.", "You unfasten the central control module.")
+ holder.icon_state = "duke5"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the flight control module.", "You secure the flight control module.")
+ holder.icon_state = "duke8"
+ 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/duke/flight(get_turf(holder))
+ holder.icon_state = "duke6"
+ 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 = "duke9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "duke7"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the targeting control module.", "You secure the targeting control module.")
+ holder.icon_state = "duke10"
+ 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/duke/targeting(get_turf(holder))
+ holder.icon_state = "duke8"
+ 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 = "duke11"
+ else
+ user.visible_message("[user] unfastens the targeting control module.", "You unfasten the targeting control module.")
+ holder.icon_state = "duke9"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ holder.icon_state = "duke12"
+ 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 = "duke10"
+ 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 = "duke13"
+ else
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ holder.icon_state = "duke11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the manual flight controls.", "You secure the manual flight controls.")
+ holder.icon_state = "duke14"
+ 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/duke/cockpitboard(get_turf(holder))
+ holder.icon_state = "duke12"
+ 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 = "duke19"
+ else
+ user.visible_message("[user] unfastens the manual flight controls.", "You unfasten the manual flight controls.")
+ holder.icon_state = "duke13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] bolts the internal armor layer.", "You bolt the internal armor layer.")
+ holder.icon_state = "duke20"
+ 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 = "duke14"
+ 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 = "duke21"
+ else
+ user.visible_message("[user] unbolt the internal armor layer.", "You unbolt the internal armor layer.")
+ holder.icon_state = "duke19"
+ 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 = "duke22"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "duke20"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] bolts external armor layer.", "You bolt external reinforced armor layer.")
+ holder.icon_state = "duke23"
+ 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 = "duke21"
+ 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 = "duke22"
+ return 1
+
+/datum/construction/reversible/mecha/fighter/duke/spawn_result()
+ ..()
+ feedback_inc("mecha_fighter_duke_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/duke.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/duke.dm
new file mode 100644
index 00000000000..ff85e408f21
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/duke.dm
@@ -0,0 +1,86 @@
+/obj/vehicle/sealed/mecha/combat/fighter/duke
+ name = "\improper Duke"
+ desc = "The Duke Heavy Fighter is designed and manufactured by Hephaestus Industries as a bulky craft built to punch above its weight. This one comes painted in Nanotrasen's blue white and black color scheme straight out of the fabricator, catering to security team's need for friendly identification. It makes up for the minimal hull upgrade space with a stronger chassis, and multiple mounting points for missiles, bombs, and lasers. It's incapable of Atmospheric flight."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "duke"
+ initial_icon = "duke"
+
+ step_in = 3 //slightly slower than a baron (this shit doesnt actually work atm, likely due to the whole equipment weight nonsense)
+
+ integrity = 1200
+ integrity_max = 1200 //double baron HP, only room for one defensive upgrade. No specials(cloaking, speed, ect) or universals.
+
+ max_hull_equip = 1
+ max_weapon_equip = 4
+ max_utility_equip = 2
+ max_universal_equip = 0
+ max_special_equip = 0
+
+ catalogue_data = list(/datum/category_item/catalogue/technology/duke)
+ wreckage = /obj/effect/decal/mecha_wreckage/duke
+
+ ground_capable = FALSE
+
+/obj/vehicle/sealed/mecha/combat/fighter/duke/loaded/Initialize(mapload) //Loaded version with guns
+ . = ..()
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/weapon/energy/laser
+ ME.attach(src)
+ ME = new /obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive
+ ME.attach(src)
+
+/obj/vehicle/sealed/mecha/combat/fighter/duke/db
+ name = "\improper Duke \"Deep Blue\""
+ desc = "A Duke heavy fighter decorated with the common 'Deep Blue' customization kit, both designed and sold by Hephaestus Industries. This paint scheme pays homage to one of the first supercomputing systems that dared to push the boundaries of what it meant to think. Think 40 steps ahead of your enemy with these colorations, just as Deep Blue did so many years ago."
+ icon_state = "duke_db"
+ initial_icon = "duke_db"
+ wreckage = /obj/effect/decal/mecha_wreckage/duke/db
+
+/obj/vehicle/sealed/mecha/combat/fighter/duke/db/loaded/Initialize(mapload) //Loaded version with guns
+ . = ..()
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/weapon/energy/laser
+ ME.attach(src)
+ ME = new /obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive
+ ME.attach(src)
+
+/obj/vehicle/sealed/mecha/combat/fighter/duke/cw
+ name = "\improper Duke \"Clockwork\""
+ desc = "A Duke heavy fighter decorated with the rare 'Clockwork' customization kit, both designed and sold by Hephaestus Industries. Textured paint with accurate colorations and reflectiveness to brass makes this Duke Heavy Fighter stand out amongst the competition in any conflict."
+ icon_state = "duke_cw"
+ initial_icon = "duke_cw"
+ wreckage = /obj/effect/decal/mecha_wreckage/duke/cw
+
+/obj/vehicle/sealed/mecha/combat/fighter/duke/cw/loaded/Initialize(mapload) //Loaded version with guns
+ . = ..()
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/weapon/energy/laser
+ ME.attach(src)
+ ME = new /obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive
+ ME.attach(src)
+
+/obj/effect/decal/mecha_wreckage/duke
+ name = "Duke wreckage"
+ desc = "Remains of some unfortunate fighter. Completely unrepairable."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "duke-broken"
+ bound_width = 64
+ bound_height = 64
+
+/obj/effect/decal/mecha_wreckage/duke/db
+ name = "Duke wreckage"
+ desc = "Remains of some unfortunate fighter. Completely unrepairable."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "duke_db-broken"
+ bound_width = 64
+ bound_height = 64
+
+/obj/effect/decal/mecha_wreckage/duke/cw
+ name = "Duke wreckage"
+ desc = "Remains of some unfortunate fighter. Completely unrepairable."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "duke_cw-broken"
+ bound_width = 64
+ bound_height = 64
+
+/datum/category_item/catalogue/technology/duke
+ name = "Voidcraft - Duke"
+ desc = "The Duke Heavy Fighter is designed and manufactured by Hephaestus Industries as a bulky craft built to punch above its weight. Primarily armed with missiles, bombs, or similar large payloads, this fighter packs a punch against most at the cost of room for minimul hull modifications, which is almost always reserved for much-needed armor inserts instead of a shield. It's incapable of atmospheric flight."
+ value = CATALOGUER_REWARD_MEDIUM
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/pinnace-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/pinnace-construction.dm
new file mode 100644
index 00000000000..677e09f3524
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/pinnace-construction.dm
@@ -0,0 +1,325 @@
+/obj/item/vehicle_chassis/fighter/pinnace
+ name = "\improper Pinnace Chassis"
+ icon_state = "pinnace_chassis"
+
+ origin_tech = list(TECH_MATERIAL = 2)
+
+/obj/item/vehicle_chassis/fighter/pinnace/New()
+ ..()
+ construct = new /datum/construction/mecha/fighter/pinnace_chassis(src)
+
+
+/obj/item/vehicle_part/fighter/pinnace_core
+ name="\improper Pinnace Core"
+ icon_state = "pinnace_core"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/fighter/pinnace_cockpit
+ name="\improper Pinnace Cockpit"
+ icon_state = "pinnace_cockpit"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/fighter/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/vehicle_part/fighter/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/vehicle_part/fighter/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/vehicle_part/fighter/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/vehicle_part/fighter/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)
+
+/datum/construction/mecha/fighter/pinnace_chassis
+ result = "/obj/vehicle/sealed/mecha/combat/fighter/pinnace"
+ steps = list(list("key"=/obj/item/vehicle_part/fighter/pinnace_core),//1
+ list("key"=/obj/item/vehicle_part/fighter/pinnace_cockpit),//2
+ list("key"=/obj/item/vehicle_part/fighter/pinnace_main_engine),//3
+ list("key"=/obj/item/vehicle_part/fighter/pinnace_left_engine),//4
+ list("key"=/obj/item/vehicle_part/fighter/pinnace_right_engine),//5
+ list("key"=/obj/item/vehicle_part/fighter/pinnace_left_wing),//6
+ list("key"=/obj/item/vehicle_part/fighter/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/vehicle_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/vehicle/sealed/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
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/pinnace.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/pinnace.dm
new file mode 100644
index 00000000000..a3a1390419e
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/pinnace.dm
@@ -0,0 +1,38 @@
+/obj/vehicle/sealed/mecha/combat/fighter/pinnace
+ name = "\improper Pinnace"
+ desc = "A cramped ship's boat, capable of atmospheric and space flight. Not capable of mounting traditional weapons. Capable of fitting one pilot and one passenger."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "pinnace"
+ initial_icon = "pinnace"
+
+ max_hull_equip = 1
+ max_weapon_equip = 0
+ max_utility_equip = 1
+ max_universal_equip = 0
+ max_special_equip = 1
+
+ catalogue_data = list(/datum/category_item/catalogue/technology/pinnace)
+ wreckage = /obj/effect/decal/mecha_wreckage/pinnace
+
+ ground_capable = TRUE
+
+/obj/vehicle/sealed/mecha/combat/fighter/pinnace/loaded/Initialize(mapload) //Loaded version with guns
+ . = ..()
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/tool/passenger
+ ME.attach(src)
+
+/obj/effect/decal/mecha_wreckage/pinnace
+ name = "pinnace wreckage"
+ desc = "Remains of some unfortunate ship's boat. Completely unrepairable."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "pinnace-broken"
+ bound_width = 64
+ bound_height = 64
+
+/datum/category_item/catalogue/technology/pinnace
+ name = "Voidcraft - Pinnace"
+ desc = "A very small boat, usually used as a tender at very close ranges. The lack of a bluespace \
+ drive means that it can't get too far from it's parent ship. Though the pinnace is typically unarmed, \
+ it is capable of atmospheric flight and escaping most pursuing fighters by diving into the atmosphere of \
+ nearby planets to seek cover."
+ value = CATALOGUER_REWARD_MEDIUM
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/scoralis.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/scoralis.dm
new file mode 100644
index 00000000000..ffa0e762446
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/fighter/scoralis.dm
@@ -0,0 +1,33 @@
+/obj/vehicle/sealed/mecha/combat/fighter/scoralis
+ name = "\improper Scoralis"
+ desc = "An imported space fighter with integral cloaking device. Beware the power consumption, though. Not capable of ground operations."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "scoralis"
+ initial_icon = "scoralis"
+
+ catalogue_data = list(/datum/category_item/catalogue/technology/scoralis)
+ wreckage = /obj/effect/decal/mecha_wreckage/scoralis
+
+ ground_capable = FALSE
+
+/obj/vehicle/sealed/mecha/combat/fighter/scoralis/loaded/Initialize(mapload) //Loaded version with guns
+ . = ..()
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/weapon/ballistic/lmg
+ ME.attach(src)
+ ME = new /obj/item/vehicle_module/cloak
+ ME.attach(src)
+
+/obj/effect/decal/mecha_wreckage/scoralis
+ name = "scoralis wreckage"
+ desc = "Remains of some unfortunate fighter. Completely unrepairable."
+ icon = 'icons/mecha/fighters64x64.dmi'
+ icon_state = "scoralis-broken"
+ bound_width = 64
+ bound_height = 64
+
+/datum/category_item/catalogue/technology/scoralis
+ name = "Voidcraft - Scoralis"
+ desc = "An import model fightercraft, this one contains an integral cloaking device that renders the fighter invisible \
+ to the naked eye. Still detectable on thermal sensors, the craft can maneuver in close to ill-equipped foes and strike unseen. \
+ Not rated for atmospheric travel, this craft excels at hit and run tactics, as it will likely need to recharge batteries between each 'hit'."
+ value = CATALOGUER_REWARD_MEDIUM
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/gorilla.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/gorilla.dm
index 9b8fde3a890..345f676fcd2 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/combat/gorilla.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/gorilla.dm
@@ -32,15 +32,15 @@
/obj/vehicle/sealed/mecha/combat/gorilla/Initialize(mapload)
. = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) // This thing basically cannot function without an external power supply.
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/tesla_energy_relay(src) // This thing basically cannot function without an external power supply.
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon(src)
+ ME = new /obj/item/vehicle_module/weapon/ballistic/cannon(src)
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon/weak(src) //Saves energy, I suppose. Anti-infantry.
+ ME = new /obj/item/vehicle_module/weapon/ballistic/cannon/weak(src) //Saves energy, I suppose. Anti-infantry.
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive(src)
+ ME = new /obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive(src)
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src)
+ ME = new /obj/item/vehicle_module/weapon/ballistic/lmg(src)
ME.attach(src)
return
@@ -111,7 +111,7 @@
output += ..()
return output
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon
+/obj/item/vehicle_module/weapon/ballistic/cannon
name = "8.8cm KwK 47"
desc = "Precision German engineering!" // Why would you ever take this off the mech, anyway?
icon_state = "mecha_uac2"
@@ -134,7 +134,7 @@
return
explosion(target, 0, 0, 2, 4)
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon/weak
+/obj/item/vehicle_module/weapon/ballistic/cannon/weak
name = "8.8 cm KwK 36"
equip_cooldown = 120 // 12 seconds.
projectile = /obj/projectile/bullet/cannon/weak
@@ -147,7 +147,7 @@
damage_force = 120 //Do not get fucking shot.
/* // GLITCHY UND LAGGY. Will later look into fixing.
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/mg42
+/obj/item/vehicle_module/weapon/ballistic/mg42
name = "Maschinengewehr 60"
icon_state = "mecha_uac2"
equip_cooldown = 10
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax-construction.dm
new file mode 100644
index 00000000000..1e700a11a38
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax-construction.dm
@@ -0,0 +1,325 @@
+/obj/item/vehicle_chassis/gygax
+ name = "Gygax Chassis"
+
+/obj/item/vehicle_chassis/gygax/New()
+ ..()
+ construct = new /datum/construction/mecha/gygax_chassis(src)
+
+/obj/item/vehicle_part/gygax_torso
+ name="Gygax Torso"
+ desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot."
+ icon_state = "gygax_harness"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/gygax_head
+ name="Gygax Head"
+ desc="A Gygax head. Houses advanced surveilance and targeting sensors."
+ icon_state = "gygax_head"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/gygax_left_arm
+ name="Gygax Left Arm"
+ desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
+ icon_state = "gygax_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/gygax_right_arm
+ name="Gygax Right Arm"
+ desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
+ icon_state = "gygax_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/gygax_left_leg
+ name="Gygax Left Leg"
+ icon_state = "gygax_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/gygax_right_leg
+ name="Gygax Right Leg"
+ icon_state = "gygax_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/gygax_armour
+ name="Gygax Armour Plates"
+ icon_state = "gygax_armour"
+ origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
+
+/datum/construction/mecha/gygax_chassis
+ steps = list(list("key"=/obj/item/vehicle_part/gygax_torso),//1
+ list("key"=/obj/item/vehicle_part/gygax_left_arm),//2
+ list("key"=/obj/item/vehicle_part/gygax_right_arm),//3
+ list("key"=/obj/item/vehicle_part/gygax_left_leg),//4
+ list("key"=/obj/item/vehicle_part/gygax_right_leg),//5
+ list("key"=/obj/item/vehicle_part/gygax_head)
+ )
+
+/datum/construction/mecha/gygax_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/gygax_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/gygax_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/gygax(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "gygax0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/gygax
+ result = "/obj/vehicle/sealed/mecha/combat/gygax"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/vehicle_part/gygax_armour,
+ "backkey"=/obj/item/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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/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/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/circuitboard/mecha/gygax/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/circuitboard/mecha/gygax/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/circuitboard/mecha/gygax/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //17
+ list("key"=/obj/item/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/gygax/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/gygax/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(20)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "gygax1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "gygax2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "gygax0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "gygax3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "gygax1"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "gygax4"
+ 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 = "gygax2"
+ 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 = "gygax5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "gygax3"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "gygax6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/gygax/main(get_turf(holder))
+ holder.icon_state = "gygax4"
+ 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 = "gygax7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "gygax5"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "gygax8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/gygax/peripherals(get_turf(holder))
+ holder.icon_state = "gygax6"
+ 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 = "gygax9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "gygax7"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ holder.icon_state = "gygax10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ new /obj/item/circuitboard/mecha/gygax/targeting(get_turf(holder))
+ holder.icon_state = "gygax8"
+ 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 = "gygax11"
+ else
+ user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
+ holder.icon_state = "gygax9"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
+ holder.icon_state = "gygax12"
+ else
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
+ new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
+ holder.icon_state = "gygax10"
+ 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 = "gygax13"
+ else
+ user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
+ holder.icon_state = "gygax11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ holder.icon_state = "gygax14"
+ 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 = "gygax12"
+ 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 = "gygax15"
+ else
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ holder.icon_state = "gygax13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "gygax16"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "gygax14"
+ 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 = "gygax17"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "gygax15"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs Gygax Armour Plates to [holder].", "You install Gygax Armour Plates to [holder].")
+ qdel(I)
+ holder.icon_state = "gygax18"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "gygax16"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures Gygax Armour Plates.", "You secure Gygax Armour Plates.")
+ holder.icon_state = "gygax19"
+ else
+ user.visible_message("[user] pries Gygax Armour Plates from [holder].", "You pry Gygax Armour Plates from [holder].")
+ new /obj/item/vehicle_part/gygax_armour(get_turf(holder))
+ holder.icon_state = "gygax17"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds Gygax Armour Plates to [holder].", "You weld Gygax Armour Plates to [holder].")
+ else
+ user.visible_message("[user] unfastens Gygax Armour Plates.", "You unfasten Gygax Armour Plates.")
+ holder.icon_state = "gygax18"
+ return 1
+
+/datum/construction/reversible/mecha/gygax/spawn_result()
+ ..()
+ feedback_inc("mecha_gygax_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax.dm
index 3a35579489a..b9fdb7b5031 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax.dm
@@ -22,11 +22,11 @@
max_special_equip = 1
starting_components = list(
- /obj/item/mecha_parts/component/hull/lightweight,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/marshal,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull/lightweight,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/marshal,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
overload_possible = 1
@@ -46,6 +46,7 @@
output += ..()
return output
+//! subtypes !//
/obj/vehicle/sealed/mecha/combat/gygax/dark
desc = "A lightweight exosuit used by paramilitary forces. A significantly upgraded Gygax security mech."
@@ -70,10 +71,10 @@
max_special_equip = 2
starting_equipment = list(
- /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot,
- /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang,
- /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
- /obj/item/mecha_parts/mecha_equipment/teleporter
+ /obj/item/vehicle_module/weapon/ballistic/scattershot,
+ /obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/clusterbang,
+ /obj/item/vehicle_module/tesla_energy_relay,
+ /obj/item/vehicle_module/teleporter
)
/obj/vehicle/sealed/mecha/combat/gygax/dark/add_cell(var/obj/item/cell/C=null)
@@ -85,41 +86,6 @@
cell.charge = 30000
cell.maxcharge = 30000
-/obj/vehicle/sealed/mecha/combat/gygax/serenity
- desc = "A lightweight exosuit made from a modified Gygax chassis combined with proprietary VeyMed medical tech. It's faster and sturdier than most medical mechs, but much of the armor plating has been stripped out, leaving it more vulnerable than a regular Gygax."
- name = "Serenity"
- icon_state = "medgax"
- initial_icon = "medgax"
- integrity = 150
- integrity_max = 150
- deflect_chance = 20
- step_in = 2
-
- occupant_huds = list(
- /datum/atom_hud/data/human/medical,
- )
-
- damage_absorption = list("brute"=0.9,"fire"=1,"bullet"=0.9,"laser"=0.8,"energy"=0.9,"bomb"=1)
- max_temperature = 20000
- overload_coeff = 1
- wreckage = /obj/effect/decal/mecha_wreckage/gygax/serenity
- max_equip = 3
- step_energy_drain = 8
- cargo_capacity = 2
- max_hull_equip = 1
- max_weapon_equip = 1
- max_utility_equip = 2
- max_universal_equip = 1
- max_special_equip = 1
-
- starting_components = list(
- /obj/item/mecha_parts/component/hull,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/lightweight,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
- )
-
//Meant for random spawns.
/obj/vehicle/sealed/mecha/combat/gygax/old
desc = "A lightweight, security exosuit. Popular among private and corporate security. This one is particularly worn looking and likely isn't as sturdy."
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax/serenity-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax/serenity-construction.dm
new file mode 100644
index 00000000000..c950d0df095
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax/serenity-construction.dm
@@ -0,0 +1,286 @@
+/obj/item/vehicle_chassis/serenity
+ name = "Serenity Chassis"
+
+/obj/item/vehicle_chassis/serenity/New()
+ ..()
+ construct = new /datum/construction/mecha/serenity_chassis(src)
+
+/datum/construction/mecha/serenity_chassis
+ steps = list(list("key"=/obj/item/vehicle_part/gygax_torso),//1
+ list("key"=/obj/item/vehicle_part/gygax_left_arm),//2
+ list("key"=/obj/item/vehicle_part/gygax_right_arm),//3
+ list("key"=/obj/item/vehicle_part/gygax_left_leg),//4
+ list("key"=/obj/item/vehicle_part/gygax_right_leg),//5
+ list("key"=/obj/item/vehicle_part/gygax_head)
+ )
+
+/datum/construction/mecha/serenity_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/serenity_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/serenity_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/serenity(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "gygax0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/serenity
+ result = "/obj/vehicle/sealed/mecha/combat/gygax/serenity"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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/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/stock_parts/scanning_module/adv,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Medical module is secured"),
+ //11
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Medical module is installed"),
+ //12
+ list("key"=/obj/item/circuitboard/mecha/gygax/medical,
+ "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/circuitboard/mecha/gygax/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/circuitboard/mecha/gygax/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //17
+ list("key"=/obj/item/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/serenity/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/serenity/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(20)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "gygax1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "gygax2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "gygax0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "gygax3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "gygax1"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "gygax4"
+ 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 = "gygax2"
+ 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 = "gygax5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "gygax3"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "gygax6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/gygax/main(get_turf(holder))
+ holder.icon_state = "gygax4"
+ 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 = "gygax7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "gygax5"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "gygax8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/gygax/peripherals(get_turf(holder))
+ holder.icon_state = "gygax6"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the medical control module into [holder].", "You install the medical control module into [holder].")
+ qdel(I)
+ holder.icon_state = "gygax9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "gygax7"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the medical control module.", "You secure the medical control module.")
+ holder.icon_state = "gygax10"
+ else
+ user.visible_message("[user] removes the medical control module from [holder].", "You remove the medical control module from [holder].")
+ new /obj/item/circuitboard/mecha/gygax/medical(get_turf(holder))
+ holder.icon_state = "gygax8"
+ 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 = "gygax11"
+ else
+ user.visible_message("[user] unfastens the medical control module.", "You unfasten the medical control module.")
+ holder.icon_state = "gygax9"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
+ holder.icon_state = "gygax12"
+ else
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
+ new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
+ holder.icon_state = "gygax10"
+ 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 = "gygax13"
+ else
+ user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
+ holder.icon_state = "gygax11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ holder.icon_state = "gygax14"
+ 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 = "gygax12"
+ 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 = "gygax15"
+ else
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ holder.icon_state = "gygax13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "gygax16"
+ else
+ user.visible_message("[user] pries 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 = "gygax14"
+ 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 = "gygax17"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "gygax15"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the external armor layer to [holder].", "You install the external armor layer to [holder].")
+ holder.icon_state = "gygax18"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "gygax16"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the external armor layer.", "You secure the external armor layer.")
+ 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].")
+ var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder)) // Fixes serenity giving Gygax Armor Plates for the reverse action...
+ MS.amount = 5
+ holder.icon_state = "gygax17"
+ 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] unfastens the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "gygax18"
+ return 1
+
+/datum/construction/reversible/mecha/serenity/spawn_result()
+ ..()
+ feedback_inc("mecha_serenity_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax/serenity.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax/serenity.dm
new file mode 100644
index 00000000000..61344ada53f
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/gygax/serenity.dm
@@ -0,0 +1,35 @@
+
+/obj/vehicle/sealed/mecha/combat/gygax/serenity
+ desc = "A lightweight exosuit made from a modified Gygax chassis combined with proprietary VeyMed medical tech. It's faster and sturdier than most medical mechs, but much of the armor plating has been stripped out, leaving it more vulnerable than a regular Gygax."
+ name = "Serenity"
+ icon_state = "medgax"
+ initial_icon = "medgax"
+ integrity = 150
+ integrity_max = 150
+ deflect_chance = 20
+ step_in = 2
+
+ occupant_huds = list(
+ /datum/atom_hud/data/human/medical,
+ )
+
+ damage_absorption = list("brute"=0.9,"fire"=1,"bullet"=0.9,"laser"=0.8,"energy"=0.9,"bomb"=1)
+ max_temperature = 20000
+ overload_coeff = 1
+ wreckage = /obj/effect/decal/mecha_wreckage/gygax/serenity
+ max_equip = 3
+ step_energy_drain = 8
+ cargo_capacity = 2
+ max_hull_equip = 1
+ max_weapon_equip = 1
+ max_utility_equip = 2
+ max_universal_equip = 1
+ max_special_equip = 1
+
+ starting_components = list(
+ /obj/item/vehicle_component/hull,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/lightweight,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
+ )
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/honker-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/honker-construction.dm
new file mode 100644
index 00000000000..779efdd4c2c
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/honker-construction.dm
@@ -0,0 +1,325 @@
+/obj/item/vehicle_chassis/honker
+ name = "H.O.N.K. Chassis"
+
+/obj/item/vehicle_chassis/honker/New()
+ ..()
+ construct = new /datum/construction/mecha/honker_chassis(src)
+
+/obj/item/vehicle_part/honker_torso
+ name="H.O.N.K. Torso"
+ desc="A H.O.N.K. torso. The lining requires a distressing amount of rubber."
+ icon_state = "honker_harness"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/honker_head
+ name="H.O.N.K. Head"
+ desc="A H.O.N.K. head. Houses advanced slip prediction sensors and a squeezable nose."
+ icon_state = "honker_head"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/honker_left_arm
+ name="H.O.N.K. Left Arm"
+ desc="A H.O.N.K. left arm. Data and power sockets are compatible with the most hilarious tools and weapons."
+ icon_state = "honker_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/honker_right_arm
+ name="H.O.N.K. Right Arm"
+ desc="A H.O.N.K. right arm. Data and power sockets are compatible with the most hilarious tools and weapons."
+ icon_state = "honker_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/honker_left_leg
+ name="H.O.N.K. Left Leg"
+ icon_state = "honker_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/honker_right_leg
+ name="H.O.N.K. Right Leg"
+ icon_state = "honker_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/honker_armour
+ name="H.O.N.K. Armour Plates"
+ icon_state = "honker_armour"
+ origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 5)
+
+/datum/construction/mecha/honker_chassis
+ steps = list(list("key"=/obj/item/vehicle_part/honker_torso),//1
+ list("key"=/obj/item/vehicle_part/honker_left_arm),//2
+ list("key"=/obj/item/vehicle_part/honker_right_arm),//3
+ list("key"=/obj/item/vehicle_part/honker_left_leg),//4
+ list("key"=/obj/item/vehicle_part/honker_right_leg),//5
+ list("key"=/obj/item/vehicle_part/honker_head)
+ )
+
+/datum/construction/mecha/honker_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/honker_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/honker_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/honker(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "honker0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/honker
+ result = "/obj/vehicle/sealed/mecha/combat/honker"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/vehicle_part/honker_armour,
+ "backkey"=/obj/item/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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/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/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/circuitboard/mecha/honker/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/circuitboard/mecha/honker/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/circuitboard/mecha/honker/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //17
+ list("key"=/obj/item/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/honker/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/honker/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(20)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "honker1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "honker2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "honker0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "honker3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "honker1"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "honker4"
+ 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 = "honker2"
+ 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 = "honker5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "honker3"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "honker6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/honker/main(get_turf(holder))
+ holder.icon_state = "honker4"
+ 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 = "honker7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "honker5"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "honker8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/honker/peripherals(get_turf(holder))
+ holder.icon_state = "honker6"
+ 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 = "honker9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "honker7"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ holder.icon_state = "honker10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ new /obj/item/circuitboard/mecha/honker/targeting(get_turf(holder))
+ holder.icon_state = "honker8"
+ 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 = "honker11"
+ else
+ user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
+ holder.icon_state = "honker9"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
+ holder.icon_state = "honker12"
+ else
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
+ new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
+ holder.icon_state = "honker10"
+ 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 = "honker13"
+ else
+ user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
+ holder.icon_state = "honker11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ holder.icon_state = "honker14"
+ 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 = "honker12"
+ 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 = "honker15"
+ else
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ holder.icon_state = "honker13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "honker16"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "honker14"
+ 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 = "honker17"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "honker15"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs H.O.N.K. Armour Plates to [holder].", "You install H.O.N.K. Armour Plates to [holder].")
+ qdel(I)
+ holder.icon_state = "honker18"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "honker16"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures H.O.N.K. Armour Plates.", "You secure H.O.N.K. Armour Plates.")
+ holder.icon_state = "honker19"
+ else
+ user.visible_message("[user] pries H.O.N.K. Armour Plates from [holder].", "You pry H.O.N.K. Armour Plates from [holder].")
+ new /obj/item/vehicle_part/honker_armour(get_turf(holder))
+ holder.icon_state = "honker17"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds H.O.N.K. Armour Plates to [holder].", "You weld H.O.N.K. Armour Plates to [holder].")
+ else
+ user.visible_message("[user] unfastens H.O.N.K. Armour Plates.", "You unfasten H.O.N.K. Armour Plates.")
+ holder.icon_state = "honker18"
+ return 1
+
+/datum/construction/reversible/mecha/honker/spawn_result()
+ ..()
+ feedback_inc("mecha_honker_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/honker.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/honker.dm
index 61558aa8120..926f6808e0d 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/combat/honker.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/honker.dm
@@ -22,11 +22,11 @@
max_special_equip = 1
starting_components = list(
- /obj/item/mecha_parts/component/hull/durable,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/marshal,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull/durable,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/marshal,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
overload_possible = 1
@@ -57,11 +57,11 @@
max_special_equip = 2
starting_equipment = list(
- /obj/item/mecha_parts/mecha_equipment/weapon/honker,
- /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/banana,
- /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot,
- /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
- /obj/item/mecha_parts/mecha_equipment/teleporter
+ /obj/item/vehicle_module/weapon/honker,
+ /obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/banana,
+ /obj/item/vehicle_module/weapon/ballistic/scattershot,
+ /obj/item/vehicle_module/tesla_energy_relay,
+ /obj/item/vehicle_module/teleporter
)
/obj/vehicle/sealed/mecha/combat/honker/cluwne/add_cell(var/obj/item/cell/C=null)
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/marauder.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/marauder.dm
index 83a1bdd60db..74297b21c58 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/combat/marauder.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/marauder.dm
@@ -30,18 +30,18 @@
thrusters_possible = 1
starting_components = list(
- /obj/item/mecha_parts/component/hull/durable,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/military,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull/durable,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/military,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
starting_equipment = list(
- /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse,
- /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive,
- /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
- /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
+ /obj/item/vehicle_module/weapon/energy/pulse,
+ /obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive,
+ /obj/item/vehicle_module/tesla_energy_relay,
+ /obj/item/vehicle_module/antiproj_armor_booster
)
icon_scale_x = 1.5
@@ -62,11 +62,11 @@
max_equip = 5
starting_equipment = list(
- /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot,
- /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive,
- /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
- /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
- /obj/item/mecha_parts/mecha_equipment/teleporter
+ /obj/item/vehicle_module/weapon/ballistic/scattershot,
+ /obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive,
+ /obj/item/vehicle_module/tesla_energy_relay,
+ /obj/item/vehicle_module/antiproj_armor_booster,
+ /obj/item/vehicle_module/teleporter
)
//Note that is the Mauler
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon-construction.dm
new file mode 100644
index 00000000000..66cbf2c693f
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon-construction.dm
@@ -0,0 +1,328 @@
+/obj/item/vehicle_chassis/phazon
+ name = "Phazon Chassis"
+ origin_tech = list(TECH_MATERIAL = 7)
+
+/obj/item/vehicle_chassis/phazon/New()
+ ..()
+ construct = new /datum/construction/mecha/phazon_chassis(src)
+
+/obj/item/vehicle_part/phazon_torso
+ name="Phazon Torso"
+ icon_state = "phazon_harness"
+ //construction_time = 300
+ //construction_cost = list(MAT_STEEL=35000,"glass"=10000,"phoron"=20000)
+ origin_tech = list(TECH_DATA = 5, TECH_MATERIAL = 7, TECH_BLUESPACE = 6, TECH_POWER = 6)
+
+/obj/item/vehicle_part/phazon_head
+ name="Phazon Head"
+ icon_state = "phazon_head"
+ //construction_time = 200
+ //construction_cost = list(MAT_STEEL=15000,"glass"=5000,"phoron"=10000)
+ origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 5, TECH_MAGNET = 6)
+
+/obj/item/vehicle_part/phazon_left_arm
+ name="Phazon Left Arm"
+ icon_state = "phazon_l_arm"
+ //construction_time = 200
+ //construction_cost = list(MAT_STEEL=20000,"phoron"=10000)
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
+
+/obj/item/vehicle_part/phazon_right_arm
+ name="Phazon Right Arm"
+ icon_state = "phazon_r_arm"
+ //construction_time = 200
+ //construction_cost = list(MAT_STEEL=20000,"phoron"=10000)
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
+
+/obj/item/vehicle_part/phazon_left_leg
+ name="Phazon Left Leg"
+ icon_state = "phazon_l_leg"
+ //construction_time = 200
+ //construction_cost = list(MAT_STEEL=20000,"phoron"=10000)
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
+
+/obj/item/vehicle_part/phazon_right_leg
+ name="Phazon Right Leg"
+ icon_state = "phazon_r_leg"
+ //construction_time = 200
+ //construction_cost = list(MAT_STEEL=20000,"phoron"=10000)
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
+
+/datum/construction/mecha/phazon_chassis
+ result = "/obj/vehicle/sealed/mecha/combat/phazon"
+ steps = list(list("key"=/obj/item/vehicle_part/phazon_torso),//1
+ list("key"=/obj/item/vehicle_part/phazon_left_arm),//2
+ list("key"=/obj/item/vehicle_part/phazon_right_arm),//3
+ list("key"=/obj/item/vehicle_part/phazon_left_leg),//4
+ list("key"=/obj/item/vehicle_part/phazon_right_leg),//5
+ list("key"=/obj/item/vehicle_part/phazon_head)
+ )
+
+/datum/construction/mecha/phazon_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/phazon_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/phazon_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/phazon(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "phazon0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+/datum/construction/reversible/mecha/phazon
+ result = "/obj/vehicle/sealed/mecha/combat/phazon"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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"="Hand teleporter is secured"),
+ //7
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Hand teleporter is installed"),
+ //8
+ list("key"=/obj/item/hand_tele,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="SMES coil is secured"),
+ //9
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="SMES coil is installed"),
+ //10
+ list("key"=/obj/item/smes_coil/super_capacity,
+ "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/circuitboard/mecha/phazon/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/circuitboard/mecha/phazon/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/circuitboard/mecha/phazon/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //17
+ list("key"=/obj/item/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/phazon/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/phazon/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 = "phazon1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "phazon2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "phazon0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "phazon3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "phazon1"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "phazon4"
+ 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 = "phazon2"
+ 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 = "phazon5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "phazon3"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "phazon6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/phazon/main(get_turf(holder))
+ holder.icon_state = "phazon4"
+ 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 = "phazon7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "phazon5"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "phazon8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/phazon/peripherals(get_turf(holder))
+ holder.icon_state = "phazon6"
+ 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 = "phazon9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "phazon7"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ holder.icon_state = "phazon10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ new /obj/item/circuitboard/mecha/phazon/targeting(get_turf(holder))
+ holder.icon_state = "phazon8"
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the SMES coil to [holder].", "You install the SMES coil to [holder].")
+ qdel(I)
+ holder.icon_state = "phazon11"
+ else
+ user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
+ holder.icon_state = "phazon9"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the SMES coil.", "You secure the SMES coil.")
+ holder.icon_state = "phazon12"
+ else
+ user.visible_message("[user] removes the SMES coil from [holder].", "You remove the SMES coil from [holder].")
+ new /obj/item/smes_coil/super_capacity(get_turf(holder))
+ holder.icon_state = "phazon10"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the hand teleporter to [holder].", "You install the hand teleporter to [holder].")
+ qdel(I)
+ holder.icon_state = "phazon13"
+ else
+ user.visible_message("[user] unfastens the SMES coil.", "You unfasten the SMES coil.")
+ holder.icon_state = "phazon11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the hand teleporter.", "You secure the hand teleporter.")
+ holder.icon_state = "phazon14"
+ else
+ user.visible_message("[user] removes the hand teleporter from [holder].", "You remove the hand teleporter from [holder].")
+ new /obj/item/hand_tele(get_turf(holder))
+ holder.icon_state = "phazon12"
+ 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 = "phazon19"
+ else
+ user.visible_message("[user] unfastens the hand teleporter.", "You unfasten the hand teleporter.")
+ holder.icon_state = "phazon13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
+ holder.icon_state = "phazon20"
+ 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 = "phazon14"
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ holder.icon_state = "phazon21"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "phazon19"
+ 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 = "phazon22"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "phazon20"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "phazon23"
+ 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 = "phazon21"
+ 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] unfastens the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "phazon22"
+ return 1
+
+/datum/construction/reversible/mecha/phazon/spawn_result()
+ ..()
+ feedback_inc("mecha_phazon_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon.dm
index 6028fa12a3f..b30c26615bf 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon.dm
@@ -28,11 +28,11 @@
encumbrance_gap = 2
starting_components = list(
- /obj/item/mecha_parts/component/hull/durable,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/alien,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull/durable,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/alien,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
cloak_possible = TRUE
@@ -42,8 +42,8 @@
/obj/vehicle/sealed/mecha/combat/phazon/equipped/Initialize(mapload)
. = ..()
starting_equipment = list(
- /obj/item/mecha_parts/mecha_equipment/tool/rcd,
- /obj/item/mecha_parts/mecha_equipment/gravcatapult
+ /obj/item/vehicle_module/tool/rcd,
+ /obj/item/vehicle_module/gravcatapult
)
return
@@ -76,81 +76,6 @@
output += ..()
return output
-
-
-/obj/vehicle/sealed/mecha/combat/phazon/janus
- name = "Phazon Prototype Janus Class"
- desc = "A sleek exosuit that radiates a strange, alien energy."
- icon_state = "janus"
- initial_icon = "janus"
- step_in = 1
- dir_in = 1 //Facing North.
- step_energy_drain = 3
- integrity = 350
- integrity_max = 350
- deflect_chance = 30
- damage_absorption = list("brute"=0.6,"fire"=0.7,"bullet"=0.7,"laser"=0.9,"energy"=0.7,"bomb"=0.5)
- max_temperature = 10000
- infra_luminosity = 3
- wreckage = /obj/effect/decal/mecha_wreckage/janus
- internal_damage_threshold = 25
- force = 20
- phasing_energy_drain = 300
-
- max_hull_equip = 2
- max_weapon_equip = 1
- max_utility_equip = 2
- max_universal_equip = 2
- max_special_equip = 2
-
- phasing_possible = TRUE
- switch_dmg_type_possible = TRUE
- cloak_possible = FALSE
-
-/obj/vehicle/sealed/mecha/combat/phazon/janus/take_damage_legacy(amount, type="brute")
- ..()
- if(phasing)
- phasing = FALSE
- radiation_pulse(src, RAD_INTENSITY_MECH_JANUS_FORCED_UNPHASE)
- log_append_to_last("WARNING: BLUESPACE DRIVE INSTABILITY DETECTED. DISABLING DRIVE.",1)
- visible_message("The [src.name] appears to flicker, before its silhouette stabilizes!")
- return
-
-/obj/vehicle/sealed/mecha/combat/phazon/janus/dynbulletdamage(var/obj/projectile/Proj)
- if((Proj.damage_force && !Proj.nodamage) && !istype(Proj, /obj/projectile/beam) && prob(max(1, 33 - round(Proj.damage_force / 4))))
- src.occupant_message("The armor absorbs the incoming projectile's force, negating it!")
- src.visible_message("The [src.name] absorbs the incoming projectile's force, negating it!")
- src.log_append_to_last("Armor negated.")
- return
- else if((Proj.damage_force && !Proj.nodamage) && istype(Proj, /obj/projectile/beam) && prob(max(1, (50 - round((Proj.damage_force / 2) * damage_absorption["laser"])) * (1 - (Proj.armor_penetration / 100))))) // Base 50% chance to deflect a beam,lowered by half the beam's damage scaled to laser absorption, then multiplied by the remaining percent of non-penetrated armor, with a minimum chance of 1%.
- src.occupant_message("The armor reflects the incoming beam, negating it!")
- src.visible_message("The [src.name] reflects the incoming beam, negating it!")
- src.log_append_to_last("Armor reflected.")
- return
-
- ..()
-
-/obj/vehicle/sealed/mecha/combat/phazon/janus/dynattackby(obj/item/W as obj, mob/user as mob)
- if(prob(max(1, (50 - round((W.damage_force / 2) * damage_absorption["brute"])) * (1 - (W.armor_penetration / 100)))))
- src.occupant_message("The armor absorbs the incoming attack's force, negating it!")
- src.visible_message("The [src.name] absorbs the incoming attack's force, negating it!")
- src.log_append_to_last("Armor absorbed.")
- return
-
- ..()
-
-/obj/vehicle/sealed/mecha/combat/phazon/janus/query_damtype()
- var/new_damtype = alert(src.occupant_legacy,"Gauntlet Phase Emitter Mode",null,"Force","Energy","Stun")
- switch(new_damtype)
- if("Force")
- damtype = "brute"
- if("Energy")
- damtype = "fire"
- if("Stun")
- damtype = "halloss"
- src.occupant_message("Melee damage type switched to [new_damtype]")
- return
-
//Meant for random spawns.
/obj/vehicle/sealed/mecha/combat/phazon/old
desc = "An exosuit which can only be described as 'WTF?'. This one is particularly worn looking and likely isn't as sturdy."
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon/janus-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon/janus-construction.dm
new file mode 100644
index 00000000000..b1d73806e2d
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon/janus-construction.dm
@@ -0,0 +1,340 @@
+/obj/item/vehicle_chassis/janus
+ name = "Janus Chassis"
+ origin_tech = list(TECH_MATERIAL = 7)
+
+/obj/item/vehicle_chassis/janus/New()
+ ..()
+ construct = new /datum/construction/mecha/janus_chassis(src)
+
+/obj/item/vehicle_part/janus_torso
+ name="Imperion Torso"
+ icon_state = "janus_harness"
+ origin_tech = list(TECH_DATA = 5, TECH_MATERIAL = 7, TECH_BLUESPACE = 2, TECH_POWER = 6, TECH_PRECURSOR = 2)
+
+/obj/item/vehicle_part/janus_head
+ name="Imperion Head"
+ icon_state = "janus_head"
+ origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 5, TECH_MAGNET = 6, TECH_PRECURSOR = 1)
+
+/obj/item/vehicle_part/janus_left_arm
+ name="Prototype Gygax Left Arm"
+ icon_state = "janus_l_arm"
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
+
+/obj/item/vehicle_part/janus_right_arm
+ name="Prototype Gygax Right Arm"
+ icon_state = "janus_r_arm"
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
+
+/obj/item/vehicle_part/janus_left_leg
+ name="Prototype Durand Left Leg"
+ icon_state = "janus_l_leg"
+ origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3, TECH_ARCANE = 1)
+
+/obj/item/vehicle_part/janus_right_leg
+ 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)
+
+/datum/construction/mecha/janus_chassis
+ result = "/obj/vehicle/sealed/mecha/combat/phazon/janus"
+ steps = list(list("key"=/obj/item/vehicle_part/janus_torso),//1
+ list("key"=/obj/item/vehicle_part/janus_left_arm),//2
+ list("key"=/obj/item/vehicle_part/janus_right_arm),//3
+ list("key"=/obj/item/vehicle_part/janus_left_leg),//4
+ list("key"=/obj/item/vehicle_part/janus_right_leg),//5
+ list("key"=/obj/item/vehicle_part/janus_head)
+ )
+
+/datum/construction/mecha/janus_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/janus_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/janus_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/janus(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "janus0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+/datum/construction/reversible/mecha/janus
+ result = "/obj/vehicle/sealed/mecha/combat/phazon/janus"
+ steps = list(
+ //1
+ list("key"=/obj/item/weldingtool,
+ "backkey"=IS_CROWBAR,
+ "desc"="External armor is installed."),
+ //2
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
+ "desc"="External armor is attached."),
+ //3
+ list("key"=/obj/item/stack/material/morphium,
+ "backkey"=/obj/item/weldingtool,
+ "desc"="Internal armor is welded"),
+ //4
+ list("key"=/obj/item/weldingtool,
+ "backkey"=IS_CROWBAR,
+ "desc"="Internal armor is wrenched"),
+ //5
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
+ "desc"="Internal armor is attached."),
+ //6
+ list("key"=/obj/item/stack/material/durasteel,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Durand auxiliary board is secured."),
+ //7
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Durand auxiliary board is installed"),
+ //8
+ list("key"=/obj/item/circuitboard/mecha/durand/peripherals,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Phase coil is secured"),
+ //9
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Phase coil is installed"),
+ //10
+ list("key"=/obj/item/prop/alien/phasecoil,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Gygax balance system secured"),
+ //11
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Gygax balance system installed"),
+ //12
+ list("key"=/obj/item/circuitboard/mecha/gygax/peripherals,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Targeting module is secured"),
+ //13
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Targeting module is installed"),
+ //14
+ list("key"=/obj/item/circuitboard/mecha/imperion/targeting,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Peripherals control module is secured"),
+ //15
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Peripherals control module is installed"),
+ //16
+ list("key"=/obj/item/circuitboard/mecha/imperion/peripherals,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Central control module is secured"),
+ //17
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Central control module is installed"),
+ //18
+ list("key"=/obj/item/circuitboard/mecha/imperion/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //19
+ list("key"=/obj/item/tool/wirecutters,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is added"),
+ //20
+ list("key"=/obj/item/stack/cable_coil,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The hydraulic systems are active."),
+ //21
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
+ "desc"="The hydraulic systems are connected."),
+ //22
+ list("key"=IS_WRENCH,
+ "desc"="The hydraulic systems are disconnected.")
+ )
+
+/datum/construction/reversible/mecha/janus/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/janus/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ switch(index)
+ if(22)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "janus1"
+ if(21)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "janus2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "janus0"
+ if(20)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "janus3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "janus1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "janus4"
+ 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 = "janus2"
+ if(18)
+ 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 = "janus5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "janus3"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "janus6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/imperion/main(get_turf(holder))
+ holder.icon_state = "janus4"
+ if(16)
+ 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 = "janus7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "janus5"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "janus8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/imperion/peripherals(get_turf(holder))
+ holder.icon_state = "janus6"
+ if(14)
+ 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 = "janus9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "janus7"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ holder.icon_state = "janus10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ new /obj/item/circuitboard/mecha/imperion/targeting(get_turf(holder))
+ holder.icon_state = "janus8"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the Gygax control module into [holder].", "You install the Gygax control module into [holder].")
+ qdel(I)
+ holder.icon_state = "janus11"
+ else
+ user.visible_message("[user] unfastens the Gygax control module.", "You unfasten the Gygax control module.")
+ holder.icon_state = "janus9"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the Gygax control module.", "You secure the Gygax control module.")
+ holder.icon_state = "janus12"
+ else
+ user.visible_message("[user] removes the Gygax control module from [holder].", "You remove the Gygax control module from [holder].")
+ new /obj/item/circuitboard/mecha/gygax/peripherals(get_turf(holder))
+ holder.icon_state = "janus10"
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the phase coil into [holder].", "You install the phase coil into [holder].")
+ qdel(I)
+ holder.icon_state = "janus13"
+ else
+ user.visible_message("[user] unfastens the Gygax control module.", "You unfasten the Gygax control module.")
+ holder.icon_state = "janus11"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the phase coil.", "You secure the phase coil.")
+ holder.icon_state = "janus14"
+ else
+ user.visible_message("[user] removes the phase coil from [holder].", "You remove the phase coil from [holder].")
+ new /obj/item/prop/alien/phasecoil(get_turf(holder))
+ holder.icon_state = "janus12"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the Durand control module into [holder].", "You install the Durand control module into [holder].")
+ qdel(I)
+ holder.icon_state = "janus15"
+ else
+ user.visible_message("[user] unfastens the phase coil.", "You unfasten the phase coil.")
+ holder.icon_state = "janus13"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the Durand control module.", "You secure the Durand control module.")
+ holder.icon_state = "janus16"
+ else
+ user.visible_message("[user] removes the Durand control module from [holder].", "You remove the Durand control module from [holder].")
+ new /obj/item/circuitboard/mecha/durand/peripherals(get_turf(holder))
+ holder.icon_state = "janus14"
+ 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 = "janus17"
+ else
+ user.visible_message("[user] unfastens the Durand control module.", "You unfasten the Durand control module.")
+ holder.icon_state = "janus15"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
+ holder.icon_state = "janus18"
+ 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/durasteel/MS = new /obj/item/stack/material/durasteel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "janus16"
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ holder.icon_state = "janus19"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "janus17"
+ 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 = "janus20"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "janus18"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "janus21"
+ else
+ user.visible_message("[user] pries the external armor layer from [holder].", "You pry external armor layer from [holder].")
+ var/obj/item/stack/material/morphium/MS = new /obj/item/stack/material/morphium(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "janus19"
+ 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] unfastens the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "janus20"
+ return 1
+
+/datum/construction/reversible/mecha/janus/spawn_result()
+ ..()
+ feedback_inc("mecha_janus_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon/janus.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon/janus.dm
new file mode 100644
index 00000000000..62c30f95bf6
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/phazon/janus.dm
@@ -0,0 +1,72 @@
+/obj/vehicle/sealed/mecha/combat/phazon/janus
+ name = "Phazon Prototype Janus Class"
+ desc = "A sleek exosuit that radiates a strange, alien energy."
+ icon_state = "janus"
+ initial_icon = "janus"
+ step_in = 1
+ dir_in = 1 //Facing North.
+ step_energy_drain = 3
+ integrity = 350
+ integrity_max = 350
+ deflect_chance = 30
+ damage_absorption = list("brute"=0.6,"fire"=0.7,"bullet"=0.7,"laser"=0.9,"energy"=0.7,"bomb"=0.5)
+ max_temperature = 10000
+ infra_luminosity = 3
+ wreckage = /obj/effect/decal/mecha_wreckage/janus
+ internal_damage_threshold = 25
+ force = 20
+ phasing_energy_drain = 300
+
+ max_hull_equip = 2
+ max_weapon_equip = 1
+ max_utility_equip = 2
+ max_universal_equip = 2
+ max_special_equip = 2
+
+ phasing_possible = TRUE
+ switch_dmg_type_possible = TRUE
+ cloak_possible = FALSE
+
+/obj/vehicle/sealed/mecha/combat/phazon/janus/take_damage_legacy(amount, type="brute")
+ ..()
+ if(phasing)
+ phasing = FALSE
+ radiation_pulse(src, RAD_INTENSITY_MECH_JANUS_FORCED_UNPHASE)
+ log_append_to_last("WARNING: BLUESPACE DRIVE INSTABILITY DETECTED. DISABLING DRIVE.",1)
+ visible_message("The [src.name] appears to flicker, before its silhouette stabilizes!")
+ return
+
+/obj/vehicle/sealed/mecha/combat/phazon/janus/dynbulletdamage(var/obj/projectile/Proj)
+ if((Proj.damage_force && !Proj.nodamage) && !istype(Proj, /obj/projectile/beam) && prob(max(1, 33 - round(Proj.damage_force / 4))))
+ src.occupant_message("The armor absorbs the incoming projectile's force, negating it!")
+ src.visible_message("The [src.name] absorbs the incoming projectile's force, negating it!")
+ src.log_append_to_last("Armor negated.")
+ return
+ else if((Proj.damage_force && !Proj.nodamage) && istype(Proj, /obj/projectile/beam) && prob(max(1, (50 - round((Proj.damage_force / 2) * damage_absorption["laser"])) * (1 - (Proj.armor_penetration / 100))))) // Base 50% chance to deflect a beam,lowered by half the beam's damage scaled to laser absorption, then multiplied by the remaining percent of non-penetrated armor, with a minimum chance of 1%.
+ src.occupant_message("The armor reflects the incoming beam, negating it!")
+ src.visible_message("The [src.name] reflects the incoming beam, negating it!")
+ src.log_append_to_last("Armor reflected.")
+ return
+
+ ..()
+
+/obj/vehicle/sealed/mecha/combat/phazon/janus/dynattackby(obj/item/W as obj, mob/user as mob)
+ if(prob(max(1, (50 - round((W.damage_force / 2) * damage_absorption["brute"])) * (1 - (W.armor_penetration / 100)))))
+ src.occupant_message("The armor absorbs the incoming attack's force, negating it!")
+ src.visible_message("The [src.name] absorbs the incoming attack's force, negating it!")
+ src.log_append_to_last("Armor absorbed.")
+ return
+
+ ..()
+
+/obj/vehicle/sealed/mecha/combat/phazon/janus/query_damtype()
+ var/new_damtype = alert(src.occupant_legacy,"Gauntlet Phase Emitter Mode",null,"Force","Energy","Stun")
+ switch(new_damtype)
+ if("Force")
+ damtype = "brute"
+ if("Energy")
+ damtype = "fire"
+ if("Stun")
+ damtype = "halloss"
+ src.occupant_message("Melee damage type switched to [new_damtype]")
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/reticent-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/reticent-construction.dm
new file mode 100644
index 00000000000..f5329bbcdd4
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/reticent-construction.dm
@@ -0,0 +1,325 @@
+/obj/item/vehicle_chassis/reticent
+ name = "Reticent Chassis"
+
+/obj/item/vehicle_chassis/reticent/New()
+ ..()
+ construct = new /datum/construction/mecha/reticent_chassis(src)
+
+/obj/item/vehicle_part/reticent_torso
+ name="Reticent Torso"
+ desc="A Reticent torso. The hull is augmented by a Silencium mosaic."
+ icon_state = "reticent_harness"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_BIO = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/reticent_head
+ name="Reticent Head"
+ desc="A Reticent head. The eyes stare dispassionately back at you."
+ icon_state = "reticent_head"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_MAGNET = 2, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/reticent_left_arm
+ name="Reticent Left Arm"
+ desc="A Reticent left arm. Data and power sockets are compatible with general weapons, and wickedly silent alternatives."
+ icon_state = "reticent_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/reticent_right_arm
+ name="Reticent Right Arm"
+ desc="A Reticent right arm. Data and power sockets are compatible with general weapons, and wickedly silent alternatives."
+ icon_state = "reticent_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/reticent_left_leg
+ name="Reticent Left Leg"
+ icon_state = "reticent_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/reticent_right_leg
+ name="Reticent Right Leg"
+ icon_state = "reticent_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
+
+/obj/item/vehicle_part/reticent_armour
+ name="Reticent Armour Plates"
+ icon_state = "reticent_armour"
+ origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 5)
+
+/datum/construction/mecha/reticent_chassis
+ steps = list(list("key"=/obj/item/vehicle_part/reticent_torso),//1
+ list("key"=/obj/item/vehicle_part/reticent_left_arm),//2
+ list("key"=/obj/item/vehicle_part/reticent_right_arm),//3
+ list("key"=/obj/item/vehicle_part/reticent_left_leg),//4
+ list("key"=/obj/item/vehicle_part/reticent_right_leg),//5
+ list("key"=/obj/item/vehicle_part/reticent_head)
+ )
+
+/datum/construction/mecha/reticent_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/reticent_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/reticent_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/reticent(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "reticent0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/reticent
+ result = "/obj/vehicle/sealed/mecha/combat/reticent"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/vehicle_part/reticent_armour,
+ "backkey"=/obj/item/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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/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/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/circuitboard/mecha/reticent/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/circuitboard/mecha/reticent/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/circuitboard/mecha/reticent/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //17
+ list("key"=/obj/item/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/reticent/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/reticent/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(20)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "reticent1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "reticent2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "reticent0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "reticent3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "reticent1"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "reticent4"
+ 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 = "reticent2"
+ 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 = "reticent5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "reticent3"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "reticent6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/reticent/main(get_turf(holder))
+ holder.icon_state = "reticent4"
+ 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 = "reticent7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "reticent5"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "reticent8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/reticent/peripherals(get_turf(holder))
+ holder.icon_state = "reticent6"
+ 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 = "reticent9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "reticent7"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ holder.icon_state = "reticent10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ new /obj/item/circuitboard/mecha/reticent/targeting(get_turf(holder))
+ holder.icon_state = "reticent8"
+ 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 = "reticent11"
+ else
+ user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
+ holder.icon_state = "reticent9"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
+ holder.icon_state = "reticent12"
+ else
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
+ new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
+ holder.icon_state = "reticent10"
+ 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 = "reticent13"
+ else
+ user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
+ holder.icon_state = "reticent11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ holder.icon_state = "reticent14"
+ 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 = "reticent12"
+ 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 = "reticent15"
+ else
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ holder.icon_state = "reticent13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "reticent16"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "reticent14"
+ 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 = "reticent17"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "reticent15"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs Reticent Armour Plates to [holder].", "You install Reticent Armour Plates to [holder].")
+ qdel(I)
+ holder.icon_state = "reticent18"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "reticent16"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures Reticent Armour Plates.", "You secure Reticent Armour Plates.")
+ holder.icon_state = "reticent19"
+ else
+ user.visible_message("[user] pries Reticent Armour Plates from [holder].", "You pry Reticent Armour Plates from [holder].")
+ new /obj/item/vehicle_part/reticent_armour(get_turf(holder))
+ holder.icon_state = "reticent17"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds Reticent Armour Plates to [holder].", "You weld Reticent Armour Plates to [holder].")
+ else
+ user.visible_message("[user] unfastens Reticent Armour Plates.", "You unfasten Reticent Armour Plates.")
+ holder.icon_state = "reticent18"
+ return 1
+
+/datum/construction/reversible/mecha/reticent/spawn_result()
+ ..()
+ feedback_inc("mecha_reticent_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/combat/reticent.dm b/code/modules/vehicles/sealed/mecha/subtypes/combat/reticent.dm
index 39159d2f60e..efd5176401b 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/combat/reticent.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/combat/reticent.dm
@@ -22,11 +22,11 @@
max_special_equip = 1
starting_components = list(
- /obj/item/mecha_parts/component/hull/durable,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/marshal,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull/durable,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/marshal,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
overload_possible = 1
@@ -59,10 +59,10 @@
max_special_equip = 2
starting_equipment = list(
- /obj/item/mecha_parts/mecha_equipment/weapon/whisperblade,
- /obj/item/mecha_parts/mecha_equipment/weapon/infernoblade,
- /obj/item/mecha_parts/mecha_equipment/omni_shield/reticence,
- /obj/item/mecha_parts/mecha_equipment/cloak
+ /obj/item/vehicle_module/weapon/whisperblade,
+ /obj/item/vehicle_module/weapon/infernoblade,
+ /obj/item/vehicle_module/omni_shield/reticence,
+ /obj/item/vehicle_module/cloak
)
/obj/vehicle/sealed/mecha/combat/reticent/reticence/add_cell(var/obj/item/cell/C=null)
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/medical.dm b/code/modules/vehicles/sealed/mecha/subtypes/medical.dm
index 0e84656356a..6a0af8aef21 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/medical.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/medical.dm
@@ -10,18 +10,18 @@
cargo_capacity = 1
starting_components = list(
- /obj/item/mecha_parts/component/hull,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/lightweight,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/lightweight,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
/obj/vehicle/sealed/mecha/medical/Initialize(mapload)
. = ..()
var/turf/T = get_turf(src)
if(isPlayerLevel(T.z))
- new /obj/item/mecha_parts/mecha_tracking(src)
+ new /obj/item/vehicle_tracking_beacon(src)
/* // One horrific bastardization of glorious inheritence dead. A billion to go. ~Mech
/obj/vehicle/sealed/mecha/medical/mechturn(direction)
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/medical/odysseus-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/medical/odysseus-construction.dm
new file mode 100644
index 00000000000..dfc5e87392e
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/medical/odysseus-construction.dm
@@ -0,0 +1,250 @@
+/obj/item/vehicle_chassis/odysseus
+ name = "Odysseus Chassis"
+
+/obj/item/vehicle_chassis/odysseus/New()
+ ..()
+ construct = new /datum/construction/mecha/odysseus_chassis(src)
+
+/obj/item/vehicle_part/odysseus_head
+ name="Odysseus Head"
+ icon_state = "odysseus_head"
+ origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 2)
+
+/obj/item/vehicle_part/odysseus_torso
+ name="Odysseus Torso"
+ desc="A torso part of Odysseus. Contains power unit, processing core and life support systems."
+ icon_state = "odysseus_torso"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/odysseus_left_arm
+ name="Odysseus Left Arm"
+ desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "odysseus_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/odysseus_right_arm
+ name="Odysseus Right Arm"
+ desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "odysseus_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/odysseus_left_leg
+ name="Odysseus Left Leg"
+ desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems."
+ icon_state = "odysseus_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/odysseus_right_leg
+ name="Odysseus Right Leg"
+ desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems."
+ icon_state = "odysseus_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/datum/construction/mecha/odysseus_chassis
+ steps = list(list("key"=/obj/item/vehicle_part/odysseus_torso),//1
+ list("key"=/obj/item/vehicle_part/odysseus_head),//2
+ list("key"=/obj/item/vehicle_part/odysseus_left_arm),//3
+ list("key"=/obj/item/vehicle_part/odysseus_right_arm),//4
+ list("key"=/obj/item/vehicle_part/odysseus_left_leg),//5
+ list("key"=/obj/item/vehicle_part/odysseus_right_leg)//6
+ )
+
+/datum/construction/mecha/odysseus_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/odysseus_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/odysseus_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/odysseus(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "odysseus0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/odysseus
+ result = "/obj/vehicle/sealed/mecha/medical/odysseus"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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"="Peripherals control module is secured"),
+ //7
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Peripherals control module is installed"),
+ //8
+ list("key"=/obj/item/circuitboard/mecha/odysseus/peripherals,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Central control module is secured"),
+ //9
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Central control module is installed"),
+ //10
+ list("key"=/obj/item/circuitboard/mecha/odysseus/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //11
+ list("key"=/obj/item/tool/wirecutters,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is added"),
+ //12
+ list("key"=/obj/item/stack/cable_coil,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The hydraulic systems are active."),
+ //13
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
+ "desc"="The hydraulic systems are connected."),
+ //14
+ list("key"=IS_WRENCH,
+ "desc"="The hydraulic systems are disconnected.")
+ )
+
+/datum/construction/reversible/mecha/odysseus/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/odysseus/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(14)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "odysseus1"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "odysseus2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "odysseus0"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "odysseus3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "odysseus1"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "odysseus4"
+ 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 = "odysseus2"
+ if(10)
+ 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 = "odysseus5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "odysseus3"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "odysseus6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/odysseus/main(get_turf(holder))
+ holder.icon_state = "odysseus4"
+ if(8)
+ 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 = "odysseus7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "odysseus5"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "odysseus8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/odysseus/peripherals(get_turf(holder))
+ holder.icon_state = "odysseus6"
+ 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 = "odysseus9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "odysseus7"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "odysseus10"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "odysseus8"
+ 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 = "odysseus11"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "odysseus9"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs [I] layer to [holder].", "You install external reinforced armor layer to [holder].")
+ holder.icon_state = "odysseus12"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "odysseus10"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "odysseus13"
+ else
+ var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
+ MS.amount = 5
+ user.visible_message("[user] pries [MS] from [holder].", "You pry [MS] from [holder].")
+ holder.icon_state = "odysseus11"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
+ holder.icon_state = "odysseus14"
+ else
+ user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "odysseus12"
+ return 1
+
+/datum/construction/reversible/mecha/odysseus/spawn_result()
+ ..()
+ feedback_inc("mecha_odysseus_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/medical/odysseus.dm b/code/modules/vehicles/sealed/mecha/subtypes/medical/odysseus.dm
index 34e53093a88..ac68546ec55 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/medical/odysseus.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/medical/odysseus.dm
@@ -27,11 +27,11 @@
/obj/vehicle/sealed/mecha/medical/odysseus/loaded/Initialize(mapload)
. = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/tool/sleeper
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
+ ME = new /obj/item/vehicle_module/tool/sleeper
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
+ ME = new /obj/item/vehicle_module/tool/syringe_gun
ME.attach(src)
//Meant for random spawns.
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_construction_paths_vr.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_construction_paths_vr.dm
deleted file mode 100644
index 36606784333..00000000000
--- a/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_construction_paths_vr.dm
+++ /dev/null
@@ -1,768 +0,0 @@
-/datum/construction/mecha/polecat_chassis
- steps = list(
- list("key"=/obj/item/mecha_parts/micro/part/polecat_torso),//1
- list("key"=/obj/item/mecha_parts/micro/part/polecat_left_arm),//2
- list("key"=/obj/item/mecha_parts/micro/part/polecat_right_arm),//3
- list("key"=/obj/item/mecha_parts/micro/part/polecat_left_leg),//4
- list("key"=/obj/item/mecha_parts/micro/part/polecat_right_leg),//5
- )
-
-/datum/construction/mecha/polecat_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
- holder.add_overlay("[used_atom.icon_state]+o")
- qdel(used_atom)
- return 1
-
-/datum/construction/mecha/polecat_chassis/action(atom/used_atom,mob/user as mob)
- return check_all_steps(used_atom,user)
-
-/datum/construction/mecha/polecat_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/polecat(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction_vr.dmi'
- const_holder.icon_state = "polecat0"
- const_holder.density = TRUE
- const_holder.cut_overlays()
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/polecat
- result = "/obj/vehicle/sealed/mecha/micro/sec/polecat"
- steps = list(
- //1
- list("key"=/obj/item/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/mecha_parts/micro/part/polecat_armour,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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/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/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/circuitboard/mecha/polecat/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/circuitboard/mecha/polecat/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/circuitboard/mecha/polecat/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //17
- list("key"=IS_WIRECUTTER,
- "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/polecat/action(atom/used_atom, mob/user)
- return check_step(used_atom,user)
-
-/datum/construction/reversible/mecha/polecat/custom_action(index, diff, atom/used_atom, mob/user)
- if(!..())
- return 0
- //TODO: better messages.
- switch(index)
- if(20)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "polecat1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "polecat2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "polecat0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "polecat3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "polecat1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "polecat4"
- 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 = "polecat2"
- 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(used_atom)
- holder.icon_state = "polecat5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "polecat3"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "polecat6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/polecat/main(get_turf(holder))
- holder.icon_state = "polecat4"
- 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(used_atom)
- holder.icon_state = "polecat7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "polecat5"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "polecat8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/polecat/peripherals(get_turf(holder))
- holder.icon_state = "polecat6"
- 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(used_atom)
- holder.icon_state = "polecat9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "polecat7"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "polecat10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
- new /obj/item/circuitboard/mecha/polecat/targeting(get_turf(holder))
- holder.icon_state = "polecat8"
- if(10)
- if(diff==FORWARD)
- user.visible_message("[user] installs advanced scanner module to [holder].", "You install advanced scanner module to [holder].")
- qdel(used_atom)
- holder.icon_state = "polecat11"
- else
- user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "polecat9"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
- holder.icon_state = "polecat12"
- else
- user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
- new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
- holder.icon_state = "polecat10"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].")
- qdel(used_atom)
- holder.icon_state = "polecat13"
- else
- user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
- holder.icon_state = "polecat11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
- holder.icon_state = "polecat14"
- 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 = "polecat12"
- 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 = "polecat15"
- else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
- holder.icon_state = "polecat13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "polecat16"
- 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 = 3
- holder.icon_state = "polecat14"
- 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 = "polecat17"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "polecat15"
- 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 upstream port. 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].")
- holder.icon_state = "polecat16"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "polecat19"
- else
- user.visible_message("[user] pries external armor layer from [holder].", "You pry the external armor layer from [holder].") // Rykka does smol grammar fix.
- new /obj/item/mecha_parts/micro/part/polecat_armour(get_turf(holder))// Actually gives you the polecat's armored plates back instead of plasteel.
- holder.icon_state = "polecat17"
- 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 the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "polecat18"
- return 1
-
-/datum/construction/reversible/mecha/polecat/spawn_result()
- ..()
- feedback_inc("mecha_polecat_created",1)
- return
-
-/datum/construction/mecha/gopher_chassis
- steps = list(
- list("key"=/obj/item/mecha_parts/micro/part/gopher_torso),//1
- list("key"=/obj/item/mecha_parts/micro/part/gopher_left_arm),//2
- list("key"=/obj/item/mecha_parts/micro/part/gopher_right_arm),//3
- list("key"=/obj/item/mecha_parts/micro/part/gopher_left_leg),//4
- list("key"=/obj/item/mecha_parts/micro/part/gopher_right_leg),//5
- )
-
-/datum/construction/mecha/gopher_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
- holder.add_overlay("[used_atom.icon_state]+o")
- qdel(used_atom)
- return 1
-
-/datum/construction/mecha/gopher_chassis/action(atom/used_atom,mob/user)
- return check_all_steps(used_atom,user)
-
-/datum/construction/mecha/gopher_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/gopher(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction_vr.dmi'
- const_holder.icon_state = "gopher0"
- const_holder.density = TRUE
- const_holder.cut_overlays()
- spawn()
- qdel(src)
-
-/datum/construction/reversible/mecha/gopher
- result = "/obj/vehicle/sealed/mecha/micro/utility/gopher"
- steps = list(
- //1
- list("key"=/obj/item/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/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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"="Peripherals control module is secured"),
- //7
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Peripherals control module is installed"),
- //8
- list("key"=/obj/item/circuitboard/mecha/gopher/peripherals,
- "backkey"=IS_SCREWDRIVER,
- "desc"="Central control module is secured"),
- //9
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_CROWBAR,
- "desc"="Central control module is installed"),
- //10
- list("key"=/obj/item/circuitboard/mecha/gopher/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //11
- list("key"=IS_WIRECUTTER,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is added"),
- //12
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The hydraulic systems are active."),
- //13
- list("key"=IS_SCREWDRIVER,
- "backkey"=IS_WRENCH,
- "desc"="The hydraulic systems are connected."),
- //14
- list("key"=IS_WRENCH,
- "desc"="The hydraulic systems are disconnected."),
- )
-
-/datum/construction/reversible/mecha/gopher/action(atom/used_atom,mob/user)
- return check_step(used_atom,user)
-
-/datum/construction/reversible/mecha/gopher/custom_action(index, diff, atom/used_atom, mob/user)
- if(!..())
- return FALSE
-
- //TODO: better messages.
- switch(index)
- if(14)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "gopher1"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "gopher2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "gopher0"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "gopher3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "gopher1"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "gopher4"
- 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 = "gopher2"
- if(10)
- if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
- qdel(used_atom)
- holder.icon_state = "gopher5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "gopher3"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "gopher6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/gopher/main(get_turf(holder))
- holder.icon_state = "gopher4"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
- qdel(used_atom)
- holder.icon_state = "gopher7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "gopher5"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "gopher8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/gopher/peripherals(get_turf(holder))
- holder.icon_state = "gopher6"
- 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 = "gopher9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "gopher7"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "gopher10"
- 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 = 3
- holder.icon_state = "gopher8"
- 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 = "gopher11"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "gopher9"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
- holder.icon_state = "gopher12"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "gopher10"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "gopher13"
- 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 = 2
- holder.icon_state = "gopher11"
- 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 the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "gopher12"
- return 1
-
-/datum/construction/reversible/mecha/gopher/spawn_result()
- ..()
- feedback_inc("mecha_gopher_created",1)
- return
-
-/datum/construction/mecha/weasel_chassis
- steps = list(
- list("key"=/obj/item/mecha_parts/micro/part/weasel_torso),//1
- list("key"=/obj/item/mecha_parts/micro/part/weasel_head),//2
- list("key"=/obj/item/mecha_parts/micro/part/weasel_left_arm),//3
- list("key"=/obj/item/mecha_parts/micro/part/weasel_right_arm),//4
- list("key"=/obj/item/mecha_parts/micro/part/weasel_tri_leg),//5
- )
-
-/datum/construction/reversible/mecha/gopher/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
- holder.add_overlay("[used_atom.icon_state]+o")
- qdel(used_atom)
- return 1
-
-/datum/construction/reversible/mecha/gopher/action(atom/used_atom, mob/user)
- return check_all_steps(used_atom,user)
-
-/datum/construction/reversible/mecha/gopher/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/weasel(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction_vr.dmi'
- const_holder.icon_state = "weasel0"
- const_holder.density = TRUE
- const_holder.cut_overlays()
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/weasel
- result = "/obj/vehicle/sealed/mecha/micro/sec/weasel"
- steps = list(
- //1
- list("key"=/obj/item/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/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/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/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/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/circuitboard/mecha/weasel/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/circuitboard/mecha/weasel/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/circuitboard/mecha/weasel/main,
- "backkey"=IS_SCREWDRIVER,
- "desc"="The wiring is adjusted"),
- //17
- list("key"=IS_WIRECUTTER,
- "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/gopher/action(atom/used_atom, mob/user)
- return check_step(used_atom,user)
-
-/datum/construction/reversible/mecha/gopher/custom_action(index, diff, atom/used_atom, mob/user)
- if(!..())
- return FALSE
- //TODO: better messages.
- switch(index)
- if(20)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "weasel1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "weasel2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "weasel0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "weasel3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "weasel1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "weasel4"
- 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 = "weasel2"
- 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(used_atom)
- holder.icon_state = "weasel5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "weasel3"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "weasel6"
- else
- user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
- new /obj/item/circuitboard/mecha/weasel/main(get_turf(holder))
- holder.icon_state = "weasel4"
- 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(used_atom)
- holder.icon_state = "weasel7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "weasel5"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "weasel8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
- new /obj/item/circuitboard/mecha/weasel/peripherals(get_turf(holder))
- holder.icon_state = "weasel6"
- 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(used_atom)
- holder.icon_state = "weasel9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "weasel7"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "weasel10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
- new /obj/item/circuitboard/mecha/weasel/targeting(get_turf(holder))
- holder.icon_state = "weasel8"
- if(10)
- if(diff==FORWARD)
- user.visible_message("[user] installs advanced scanner module to [holder].", "You install advanced scanner module to [holder].")
- qdel(used_atom)
- holder.icon_state = "weasel11"
- else
- user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "weasel9"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
- holder.icon_state = "weasel12"
- else
- user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
- new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
- holder.icon_state = "weasel10"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].")
- qdel(used_atom)
- holder.icon_state = "weasel13"
- else
- user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
- holder.icon_state = "weasel11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
- holder.icon_state = "weasel14"
- 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 = "weasel12"
- 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 = "weasel15"
- else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
- holder.icon_state = "weasel13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "weasel16"
- 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 = 3
- holder.icon_state = "weasel14"
- 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 = "weasel17"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "weasel15"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
- holder.icon_state = "weasel18"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "weasel16"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "weasel19"
- 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 = 3
- holder.icon_state = "weasel17"
- 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 the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "weasel18"
- return 1
-
-/datum/construction/reversible/mecha/gopher/spawn_result()
- ..()
- feedback_inc("mecha_weasel_created",1)
- return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_parts_vr.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_parts_vr.dm
deleted file mode 100644
index 6b361fa23c4..00000000000
--- a/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_parts_vr.dm
+++ /dev/null
@@ -1,143 +0,0 @@
-//new micro parts define
-
-/obj/item/mecha_parts/micro
- name = "mecha part"
- icon = 'icons/mecha/mech_construct_vr.dmi'
- icon_state = "blank"
- w_class = WEIGHT_CLASS_NORMAL
-
-
-/obj/item/mecha_parts/micro/chassis
- name="Mecha Chassis"
- icon_state = "backbone"
- var/datum/construction/construct
-
-/obj/item/mecha_parts/micro/chassis/attackby(obj/item/W, mob/user)
- if(!construct || !construct.action(W, user))
- ..()
- return
-
-/obj/item/mecha_parts/micro/chassis/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
- return
-
-//Gopher
-/obj/item/mecha_parts/micro/chassis/gopher
- name = "Gopher Chassis"
- icon_state = "gopher-chassis"
-
-/obj/item/mecha_parts/micro/chassis/gopher/New()
- ..()
- construct = new /datum/construction/mecha/gopher_chassis(src)
-
-/obj/item/mecha_parts/micro/part/gopher_torso
- name="Gopher Torso"
- desc="A torso part of Gopher. Contains power unit, processing core and life support systems."
- icon_state = "gopher-torso"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/micro/part/gopher_left_arm
- name="Gopher Left Arm"
- desc="A Gopher left arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "gopher-arm-left"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/micro/part/gopher_right_arm
- name="Gopher Right Arm"
- desc="A Gopher right arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "gopher-arm-right"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/micro/part/gopher_left_leg
- name="Gopher Left Leg"
- desc="A Gopher left leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "gopher-leg-left"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-/obj/item/mecha_parts/micro/part/gopher_right_leg
- name="Gopher Right Leg"
- desc="A Gopher right leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "gopher-leg-right"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
-
-//polecat
-/obj/item/mecha_parts/micro/chassis/polecat
- name = "Polecat Chassis"
- icon_state = "polecat-chassis"
-
-/obj/item/mecha_parts/micro/chassis/polecat/New()
- ..()
- construct = new /datum/construction/mecha/polecat_chassis(src)
-
-/obj/item/mecha_parts/micro/part/polecat_torso
- name="Polecat Torso"
- icon_state = "polecat-torso"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/micro/part/polecat_left_arm
- name="Polecat Left Arm"
- icon_state = "polecat-arm-left"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/micro/part/polecat_right_arm
- name="Polecat Right Arm"
- icon_state = "polecat-arm-right"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/micro/part/polecat_left_leg
- name="Polecat Left Leg"
- icon_state = "polecat-leg-left"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/micro/part/polecat_right_leg
- name="Polecat Right Leg"
- icon_state = "polecat-leg-right"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/micro/part/polecat_armour
- name="Polecat Armour Plates"
- icon_state = "polecat-armor"
- origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
-
-//weasel
-/obj/item/mecha_parts/micro/chassis/weasel
- name = "Weasel Chassis"
- icon_state = "weasel-chassis"
-
-/obj/item/mecha_parts/micro/chassis/weasel/New()
- ..()
- construct = new /datum/construction/mecha/weasel_chassis(src)
-
-/obj/item/mecha_parts/micro/part/weasel_torso
- name="Weasel Torso"
- icon_state = "weasel-torso"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/micro/part/weasel_head
- name="Weasel Head"
- icon_state = "weasel-head"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/micro/part/weasel_left_arm
- name="Weasel Left Arm"
- icon_state = "weasel-arm-left"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/micro/part/weasel_right_arm
- name="Weasel Right Arm"
- icon_state = "weasel-arm-right"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/*/obj/item/mecha_parts/micro/part/weasel_left_leg
- name="Weasel Left Leg"
- icon_state = "weasel-leg-left"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
-
-/obj/item/mecha_parts/micro/part/weasel_right_leg
- name="Weasel Right Leg"
- icon_state = "weasel-leg-right"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)*/
-
-/obj/item/mecha_parts/micro/part/weasel_tri_leg
- name="Weasel Legs"
- icon_state = "weasel-leg-all"
- origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/mechfab_designs_vr.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/mechfab_designs_vr.dm
index e55d4aba963..8b8a8f4f5a6 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/micro/mechfab_designs_vr.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/mechfab_designs_vr.dm
@@ -6,52 +6,52 @@
/datum/prototype/design/science/mechfab/gopher/chassis
name = "Gopher Chassis"
id = "gopher_chassis"
- build_path = /obj/item/mecha_parts/micro/chassis/gopher
+ build_path = /obj/item/vehicle_chassis/micro/gopher
work = (3 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds.
materials_base = list(MAT_STEEL = 7000)
/datum/prototype/design/science/mechfab/gopher/torso
name = "Gopher Torso"
id = "gopher_torso"
- build_path = /obj/item/mecha_parts/micro/part/gopher_torso
+ build_path = /obj/item/vehicle_part/micro/gopher_torso
materials_base = list(MAT_STEEL = 15000, MAT_GLASS = 5250)
/datum/prototype/design/science/mechfab/gopher/left_arm
name = "Gopher Left Arm"
id = "gopher_left_arm"
- build_path = /obj/item/mecha_parts/micro/part/gopher_left_arm
+ build_path = /obj/item/vehicle_part/micro/gopher_left_arm
materials_base = list(MAT_STEEL = 8750)
/datum/prototype/design/science/mechfab/gopher/right_arm
name = "Gopher Right Arm"
id = "gopher_right_arm"
- build_path = /obj/item/mecha_parts/micro/part/gopher_right_arm
+ build_path = /obj/item/vehicle_part/micro/gopher_right_arm
materials_base = list(MAT_STEEL = 8750)
/datum/prototype/design/science/mechfab/gopher/left_leg
name = "Gopher Left Leg"
id = "gopher_left_leg"
- build_path = /obj/item/mecha_parts/micro/part/gopher_left_leg
+ build_path = /obj/item/vehicle_part/micro/gopher_left_leg
materials_base = list(MAT_STEEL = 12500)
/datum/prototype/design/science/mechfab/gopher/right_leg
name = "Gopher Right Leg"
id = "gopher_right_leg"
- build_path = /obj/item/mecha_parts/micro/part/gopher_right_leg
+ build_path = /obj/item/vehicle_part/micro/gopher_right_leg
materials_base = list(MAT_STEEL = 12500)
/datum/prototype/design/science/mecha/drill/micro
name = "Miniature Drill"
id = "micro_drill"
- build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/micro
+ build_path = /obj/item/vehicle_module/tool/drill/micro
work = (5 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds.
materials_base = list(MAT_STEEL = 2500)
/datum/prototype/design/science/mecha/hydraulic_clamp/micro
name = "Mounted ore box"
id = "ore_scoop"
- build_path = /obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop
+ build_path = /obj/item/vehicle_module/tool/micro/orescoop
work = (5 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds.
materials_base = list(MAT_STEEL = 2500)
@@ -63,77 +63,77 @@
/datum/prototype/design/science/mechfab/polecat/chassis
name = "Polecat Chassis"
id = "polecat_chassis"
- build_path = /obj/item/mecha_parts/micro/chassis/polecat
+ build_path = /obj/item/vehicle_chassis/micro/polecat
work = (3 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds.
materials_base = list(MAT_STEEL = 7000)
/datum/prototype/design/science/mechfab/polecat/torso
name = "Polecat Torso"
id = "polecat_torso"
- build_path = /obj/item/mecha_parts/micro/part/polecat_torso
+ build_path = /obj/item/vehicle_part/micro/polecat_torso
materials_base = list(MAT_STEEL = 15000, MAT_GLASS = 5250)
/datum/prototype/design/science/mechfab/polecat/left_arm
name = "Polecat Left Arm"
id = "polecat_left_arm"
- build_path = /obj/item/mecha_parts/micro/part/polecat_left_arm
+ build_path = /obj/item/vehicle_part/micro/polecat_left_arm
materials_base = list(MAT_STEEL = 8750)
/datum/prototype/design/science/mechfab/polecat/right_arm
name = "Polecat Right Arm"
id = "polecat_right_arm"
- build_path = /obj/item/mecha_parts/micro/part/polecat_right_arm
+ build_path = /obj/item/vehicle_part/micro/polecat_right_arm
materials_base = list(MAT_STEEL = 8750)
/datum/prototype/design/science/mechfab/polecat/left_leg
name = "Polecat Left Leg"
id = "polecat_left_leg"
- build_path = /obj/item/mecha_parts/micro/part/polecat_left_leg
+ build_path = /obj/item/vehicle_part/micro/polecat_left_leg
materials_base = list(MAT_STEEL = 12500)
/datum/prototype/design/science/mechfab/polecat/right_leg
name = "Polecat Right Leg"
id = "polecat_right_leg"
- build_path = /obj/item/mecha_parts/micro/part/polecat_right_leg
+ build_path = /obj/item/vehicle_part/micro/polecat_right_leg
materials_base = list(MAT_STEEL = 12500)
/datum/prototype/design/science/mechfab/polecat/armour
name = "Polecat Armour Plates"
id = "polecat_armour"
- build_path = /obj/item/mecha_parts/micro/part/polecat_armour
+ build_path = /obj/item/vehicle_part/micro/polecat_armour
work = (25 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds.
materials_base = list(MAT_STEEL = 12500, MAT_PLASTIC = 7500)
/datum/prototype/design/science/mecha/taser/micro
name = "\improper TS-12 \"Suppressor\" integrated taser"
id = "micro_taser"
- build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/microtaser
+ build_path = /obj/item/vehicle_module/weapon/energy/microtaser
/datum/prototype/design/science/mecha/weapon/laser/micro
name = "\improper WS-19 \"Torch\" laser carbine"
id = "micro_laser"
// req_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 3)
- build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/microlaser
+ build_path = /obj/item/vehicle_module/weapon/energy/microlaser
/datum/prototype/design/science/mecha/weapon/laser_heavy/micro
name = "\improper PC-20 \"Lance\" light laser cannon"
id = "micro_laser_heavy"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 2000, MAT_DIAMOND = 1000)
- build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/microheavy
+ build_path = /obj/item/vehicle_module/weapon/energy/laser/microheavy
/datum/prototype/design/science/mecha/weapon/grenade_launcher/micro
name = "\improper FP-20 mounted grenade launcher"
id = "micro_flashbang_launcher"
// req_tech = list(TECH_COMBAT = 3)
- build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/microflashbang
+ build_path = /obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/microflashbang
/datum/prototype/design/science/mecha/weapon/scattershot/micro
name = "\improper Remington C-12 \"Boomstick\""
desc = "A mounted combat shotgun with integrated ammo-lathe."
id = "micro_scattershot"
// req_tech = list(TECH_COMBAT = 4)
- build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/microshotgun
+ build_path = /obj/item/vehicle_module/weapon/ballistic/microshotgun
/datum/prototype/design/science/mechfab/weasel
abstract_type = /datum/prototype/design/science/mechfab/weasel
@@ -143,50 +143,38 @@
/datum/prototype/design/science/mechfab/weasel/chassis
name = "Weasel Chassis"
id = "weasel_chassis"
- build_path = /obj/item/mecha_parts/micro/chassis/weasel
+ build_path = /obj/item/vehicle_chassis/micro/weasel
work = (3 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds.
materials_base = list(MAT_STEEL = 7000)
/datum/prototype/design/science/mechfab/weasel/torso
name = "Weasel Torso"
id = "weasel_torso"
- build_path = /obj/item/mecha_parts/micro/part/weasel_torso
+ build_path = /obj/item/vehicle_part/micro/weasel_torso
materials_base = list(MAT_STEEL = 15000, MAT_GLASS = 5250)
/datum/prototype/design/science/mechfab/weasel/left_arm
name = "Weasel Left Arm"
id = "weasel_left_arm"
- build_path = /obj/item/mecha_parts/micro/part/weasel_left_arm
+ build_path = /obj/item/vehicle_part/micro/weasel_left_arm
materials_base = list(MAT_STEEL = 8750)
/datum/prototype/design/science/mechfab/weasel/right_arm
name = "Weasel Right Arm"
id = "weasel_right_arm"
- build_path = /obj/item/mecha_parts/micro/part/weasel_right_arm
+ build_path = /obj/item/vehicle_part/micro/weasel_right_arm
materials_base = list(MAT_STEEL = 8750)
-/*/datum/prototype/design/science/mechfab/weasel/left_leg
- name = "Weasel Left Leg"
- id = "weasel_left_leg"
- build_path = /obj/item/mecha_parts/micro/part/weasel_left_leg
- materials_base = list(MAT_STEEL = 12500)
-
-/datum/prototype/design/science/mechfab/weasel/right_leg
- name = "Weasel Right Leg"
- id = "weasel_right_leg"
- build_path = /obj/item/mecha_parts/micro/part/weasel_right_leg
- materials_base = list(MAT_STEEL = 12500)*/
-
/datum/prototype/design/science/mechfab/weasel/tri_leg
name = "Weasel Tri Leg"
id = "weasel_right_leg"
- build_path = /obj/item/mecha_parts/micro/part/weasel_tri_leg
+ build_path = /obj/item/vehicle_part/micro/weasel_tri_leg
materials_base = list(MAT_STEEL = 27500)
/datum/prototype/design/science/mechfab/weasel/head
name = "Weasel Head"
id = "weasel_head"
- build_path = /obj/item/mecha_parts/micro/part/weasel_head
+ build_path = /obj/item/vehicle_part/micro/weasel_head
materials_base = list(MAT_STEEL = 7000, MAT_GLASS = 2500)
/datum/prototype/design/science/mecha/medigun
@@ -195,4 +183,4 @@
id = "mech_medigun"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_BIO = 6)
materials_base = list(MAT_STEEL = 9000, MAT_GOLD = 3000, MAT_SILVER = 2750, MAT_DIAMOND = 1500)
- build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun
+ build_path = /obj/item/vehicle_module/weapon/energy/medigun
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/micro_equipment.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/micro_equipment.dm
index e1b9312b13c..78cd653d808 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/micro/micro_equipment.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/micro_equipment.dm
@@ -4,7 +4,7 @@
//// WEAPONS BELOW ////
/////////////////////////////
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/microlaser
+/obj/item/vehicle_module/weapon/energy/microlaser
w_class = WEIGHT_CLASS_BULKY
desc = "A mounted laser-carbine for light exosuits."
equip_cooldown = 10 // same as the laser carbine
@@ -17,7 +17,7 @@
equip_type = EQUIP_MICRO_WEAPON
required_type = list(/obj/vehicle/sealed/mecha/micro/sec)
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/microheavy
+/obj/item/vehicle_module/weapon/energy/laser/microheavy
w_class = WEIGHT_CLASS_BULKY
desc = "A mounted laser cannon for light exosuits."
equip_cooldown = 30 // same as portable
@@ -30,7 +30,7 @@
equip_type = EQUIP_MICRO_WEAPON
required_type = list(/obj/vehicle/sealed/mecha/micro/sec)
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/microtaser
+/obj/item/vehicle_module/weapon/energy/microtaser
w_class = WEIGHT_CLASS_BULKY
desc = "A mounted taser for light exosuits."
name = "\improper TS-12 \"Suppressor\" integrated taser"
@@ -43,7 +43,7 @@
equip_type = EQUIP_MICRO_WEAPON
required_type = list(/obj/vehicle/sealed/mecha/micro/sec)
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/microshotgun
+/obj/item/vehicle_module/weapon/ballistic/microshotgun
w_class = WEIGHT_CLASS_BULKY
desc = "A mounted combat shotgun with integrated ammo-lathe."
name = "\improper Remington C-12 \"Boomstick\""
@@ -61,7 +61,7 @@
equip_type = EQUIP_MICRO_WEAPON
required_type = list(/obj/vehicle/sealed/mecha/micro/sec)
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/microshotgun/Topic(href,href_list)
+/obj/item/vehicle_module/weapon/ballistic/microshotgun/Topic(href,href_list)
..()
if(href_list["mode"])
mode = text2num(href_list["mode"])
@@ -78,11 +78,11 @@
return
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/microshotgun/get_equip_info()
+/obj/item/vehicle_module/weapon/ballistic/microshotgun/get_equip_info()
return "[..()] \[BS|BB|S\]"
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/microflashbang
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/microflashbang
w_class = WEIGHT_CLASS_BULKY
desc = "A mounted grenade launcher for smaller mechs."
name = "\improper FP-20 mounted grenade launcher"
@@ -101,7 +101,7 @@
//// UTILITY TOOLS BELOW ////
/////////////////////////////
-/obj/item/mecha_parts/mecha_equipment/tool/drill/micro
+/obj/item/vehicle_module/tool/drill/micro
w_class = WEIGHT_CLASS_BULKY
name = "drill"
desc = "This is the drill that'll sorta poke holes in the heavens!"
@@ -113,7 +113,7 @@
equip_type = EQUIP_MICRO_UTILITY
required_type = list(/obj/vehicle/sealed/mecha/micro/utility)
-/obj/item/mecha_parts/mecha_equipment/tool/drill/micro/action(atom/target)
+/obj/item/vehicle_module/tool/drill/micro/action(atom/target)
if(!action_checks(target))
return
set_ready_state(0)
@@ -136,7 +136,7 @@
if(get_dir(chassis,M)&chassis.dir)
M.GetDrilled()
log_message("Drilled through [target]")
- var/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop/ore_box = (locate(/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop) in chassis.equipment)
+ var/obj/item/vehicle_module/tool/micro/orescoop/ore_box = (locate(/obj/item/vehicle_module/tool/micro/orescoop) in chassis.equipment)
if(ore_box)
for(var/obj/item/stack/ore/ore in range(chassis,1))
if(get_dir(chassis,ore)&chassis.dir)
@@ -151,7 +151,7 @@
return 1
-/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop
+/obj/item/vehicle_module/tool/micro/orescoop
w_class = WEIGHT_CLASS_BULKY
name = "Mounted ore box"
desc = "A mounted ore scoop and hopper, for gathering ores."
@@ -163,7 +163,7 @@
required_type = list(/obj/vehicle/sealed/mecha/micro/utility)
var/orecapacity = 500
-/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop/action(atom/target)
+/obj/item/vehicle_module/tool/micro/orescoop/action(atom/target)
if(!action_checks(target))
return
set_ready_state(0)
@@ -183,7 +183,7 @@
ore.forceMove(src)
return 1
-/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop/Topic(href,href_list)
+/obj/item/vehicle_module/tool/micro/orescoop/Topic(href,href_list)
..()
if (href_list["empty_box"])
if(contents.len < 1)
@@ -194,10 +194,10 @@
O.loc = chassis.loc
occupant_message("Ore compartment emptied.")
-/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop/get_equip_info()
+/obj/item/vehicle_module/tool/micro/orescoop/get_equip_info()
return "[..()]
Empty ore compartment"
-/obj/item/mecha_parts/mecha_equipment/tool/orescoop/verb/empty_box() //so you can still get the ore out if someone detaches it from the mech
+/obj/item/vehicle_module/tool/orescoop/verb/empty_box() //so you can still get the ore out if someone detaches it from the mech
set name = "Empty Ore compartment"
set category = VERB_CATEGORY_OBJECT
set src in view(1)
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/sec.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec.dm
new file mode 100644
index 00000000000..d28cf36b2ae
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec.dm
@@ -0,0 +1,9 @@
+/obj/vehicle/sealed/mecha/micro/sec/occupant_added(mob/adding, datum/event_args/actor/actor, control_flags, silent)
+ . = ..()
+ if(adding.client)
+ adding.client.mouse_pointer_icon = file("icons/mecha/mecha_mouse.dmi")
+
+/obj/vehicle/sealed/mecha/micro/sec/occupant_removed(mob/removing, datum/event_args/actor/actor, control_flags, silent)
+ . = ..()
+ if(removing.client)
+ removing.client.mouse_pointer_icon = initial(src.occupant_legacy.client.mouse_pointer_icon)
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/polecat-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/polecat-construction.dm
new file mode 100644
index 00000000000..8ce0cdc2c04
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/polecat-construction.dm
@@ -0,0 +1,318 @@
+/obj/item/vehicle_chassis/micro/polecat
+ name = "Polecat Chassis"
+ icon_state = "polecat-chassis"
+
+/obj/item/vehicle_chassis/micro/polecat/New()
+ ..()
+ construct = new /datum/construction/mecha/polecat_chassis(src)
+
+/obj/item/vehicle_part/micro/polecat_torso
+ name="Polecat Torso"
+ icon_state = "polecat-torso"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/micro/polecat_left_arm
+ name="Polecat Left Arm"
+ icon_state = "polecat-arm-left"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/micro/polecat_right_arm
+ name="Polecat Right Arm"
+ icon_state = "polecat-arm-right"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/micro/polecat_left_leg
+ name="Polecat Left Leg"
+ icon_state = "polecat-leg-left"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/micro/polecat_right_leg
+ name="Polecat Right Leg"
+ icon_state = "polecat-leg-right"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/micro/polecat_armour
+ name="Polecat Armour Plates"
+ icon_state = "polecat-armor"
+ origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
+
+/datum/construction/mecha/polecat_chassis
+ steps = list(
+ list("key"=/obj/item/vehicle_part/micro/polecat_torso),//1
+ list("key"=/obj/item/vehicle_part/micro/polecat_left_arm),//2
+ list("key"=/obj/item/vehicle_part/micro/polecat_right_arm),//3
+ list("key"=/obj/item/vehicle_part/micro/polecat_left_leg),//4
+ list("key"=/obj/item/vehicle_part/micro/polecat_right_leg),//5
+ )
+
+/datum/construction/mecha/polecat_chassis/custom_action(step, atom/used_atom, mob/user)
+ user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
+ holder.add_overlay("[used_atom.icon_state]+o")
+ qdel(used_atom)
+ return 1
+
+/datum/construction/mecha/polecat_chassis/action(atom/used_atom,mob/user as mob)
+ return check_all_steps(used_atom,user)
+
+/datum/construction/mecha/polecat_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/polecat(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction_vr.dmi'
+ const_holder.icon_state = "polecat0"
+ const_holder.density = TRUE
+ const_holder.cut_overlays()
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/polecat
+ result = "/obj/vehicle/sealed/mecha/micro/sec/polecat"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/vehicle_part/micro/polecat_armour,
+ "backkey"=/obj/item/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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/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/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/circuitboard/mecha/polecat/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/circuitboard/mecha/polecat/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/circuitboard/mecha/polecat/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //17
+ list("key"=IS_WIRECUTTER,
+ "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/polecat/action(atom/used_atom, mob/user)
+ return check_step(used_atom,user)
+
+/datum/construction/reversible/mecha/polecat/custom_action(index, diff, atom/used_atom, mob/user)
+ if(!..())
+ return 0
+ //TODO: better messages.
+ switch(index)
+ if(20)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "polecat1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "polecat2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "polecat0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "polecat3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "polecat1"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "polecat4"
+ 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 = "polecat2"
+ 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(used_atom)
+ holder.icon_state = "polecat5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "polecat3"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "polecat6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/polecat/main(get_turf(holder))
+ holder.icon_state = "polecat4"
+ 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(used_atom)
+ holder.icon_state = "polecat7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "polecat5"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "polecat8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/polecat/peripherals(get_turf(holder))
+ holder.icon_state = "polecat6"
+ 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(used_atom)
+ holder.icon_state = "polecat9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "polecat7"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ holder.icon_state = "polecat10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ new /obj/item/circuitboard/mecha/polecat/targeting(get_turf(holder))
+ holder.icon_state = "polecat8"
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs advanced scanner module to [holder].", "You install advanced scanner module to [holder].")
+ qdel(used_atom)
+ holder.icon_state = "polecat11"
+ else
+ user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
+ holder.icon_state = "polecat9"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
+ holder.icon_state = "polecat12"
+ else
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
+ new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
+ holder.icon_state = "polecat10"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].")
+ qdel(used_atom)
+ holder.icon_state = "polecat13"
+ else
+ user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
+ holder.icon_state = "polecat11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ holder.icon_state = "polecat14"
+ 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 = "polecat12"
+ 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 = "polecat15"
+ else
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ holder.icon_state = "polecat13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "polecat16"
+ 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 = 3
+ holder.icon_state = "polecat14"
+ 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 = "polecat17"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "polecat15"
+ 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 upstream port. 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].")
+ holder.icon_state = "polecat16"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "polecat19"
+ else
+ user.visible_message("[user] pries external armor layer from [holder].", "You pry the external armor layer from [holder].") // Rykka does smol grammar fix.
+ new /obj/item/vehicle_part/micro/polecat_armour(get_turf(holder))// Actually gives you the polecat's armored plates back instead of plasteel.
+ holder.icon_state = "polecat17"
+ 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 the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "polecat18"
+ return 1
+
+/datum/construction/reversible/mecha/polecat/spawn_result()
+ ..()
+ feedback_inc("mecha_polecat_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/polecat.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/polecat.dm
new file mode 100644
index 00000000000..c36b42d15ab
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/polecat.dm
@@ -0,0 +1,23 @@
+/obj/vehicle/sealed/mecha/micro/sec/polecat //figured give 'em the names of small predatory critters
+ desc = "A hardened security vehicle for micro crewmembers. To them, it's a superheavy tank. To everyone else, it's kinda cute."
+ name = "Polecat"
+ icon_state = "polecat"
+ initial_icon = "polecat"
+ step_in = 2 // human running speed
+ dir_in = 2 //Facing south.
+ integrity = 150
+ step_energy_drain = 4 // less efficient than base micromech, but still a micromech.
+ deflect_chance = 10
+ damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1)
+ max_temperature = 15000
+ infra_luminosity = 6
+ wreckage = /obj/effect/decal/mecha_wreckage/micro/sec/polecat
+ internal_damage_threshold = 35
+ max_equip = 3
+ max_micro_utility_equip = 0
+ max_micro_weapon_equip = 3
+ damage_minimum = 5 //A teeny bit of armor
+
+/obj/effect/decal/mecha_wreckage/micro/sec/polecat
+ name = "Polecat wreckage"
+ icon_state = "polecat-broken"
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/weasel-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/weasel-construction.dm
new file mode 100644
index 00000000000..dae59a5b295
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/weasel-construction.dm
@@ -0,0 +1,313 @@
+/obj/item/vehicle_chassis/micro/weasel
+ name = "Weasel Chassis"
+ icon_state = "weasel-chassis"
+
+/obj/item/vehicle_chassis/micro/weasel/New()
+ ..()
+ construct = new /datum/construction/mecha/weasel_chassis(src)
+
+/obj/item/vehicle_part/micro/weasel_torso
+ name="Weasel Torso"
+ icon_state = "weasel-torso"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/micro/weasel_head
+ name="Weasel Head"
+ icon_state = "weasel-head"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/micro/weasel_left_arm
+ name="Weasel Left Arm"
+ icon_state = "weasel-arm-left"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/micro/weasel_right_arm
+ name="Weasel Right Arm"
+ icon_state = "weasel-arm-right"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/obj/item/vehicle_part/micro/weasel_tri_leg
+ name="Weasel Legs"
+ icon_state = "weasel-leg-all"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
+
+/datum/construction/mecha/weasel_chassis
+ steps = list(
+ list("key"=/obj/item/vehicle_part/micro/weasel_torso),//1
+ list("key"=/obj/item/vehicle_part/micro/weasel_head),//2
+ list("key"=/obj/item/vehicle_part/micro/weasel_left_arm),//3
+ list("key"=/obj/item/vehicle_part/micro/weasel_right_arm),//4
+ list("key"=/obj/item/vehicle_part/micro/weasel_tri_leg),//5
+ )
+
+/datum/construction/reversible/mecha/weasel/custom_action(step, atom/used_atom, mob/user)
+ user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
+ holder.add_overlay("[used_atom.icon_state]+o")
+ qdel(used_atom)
+ return 1
+
+/datum/construction/reversible/mecha/weasel/action(atom/used_atom, mob/user)
+ return check_all_steps(used_atom,user)
+
+/datum/construction/reversible/mecha/weasel/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/weasel(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction_vr.dmi'
+ const_holder.icon_state = "weasel0"
+ const_holder.density = TRUE
+ const_holder.cut_overlays()
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/weasel
+ result = "/obj/vehicle/sealed/mecha/micro/sec/weasel"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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/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/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/circuitboard/mecha/weasel/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/circuitboard/mecha/weasel/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/circuitboard/mecha/weasel/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //17
+ list("key"=IS_WIRECUTTER,
+ "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/weasel/action(atom/used_atom, mob/user)
+ return check_step(used_atom,user)
+
+/datum/construction/reversible/mecha/weasel/custom_action(index, diff, atom/used_atom, mob/user)
+ if(!..())
+ return FALSE
+ //TODO: better messages.
+ switch(index)
+ if(20)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "weasel1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "weasel2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "weasel0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "weasel3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "weasel1"
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "weasel4"
+ 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 = "weasel2"
+ 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(used_atom)
+ holder.icon_state = "weasel5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "weasel3"
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "weasel6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/weasel/main(get_turf(holder))
+ holder.icon_state = "weasel4"
+ 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(used_atom)
+ holder.icon_state = "weasel7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "weasel5"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "weasel8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/weasel/peripherals(get_turf(holder))
+ holder.icon_state = "weasel6"
+ 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(used_atom)
+ holder.icon_state = "weasel9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "weasel7"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
+ holder.icon_state = "weasel10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ new /obj/item/circuitboard/mecha/weasel/targeting(get_turf(holder))
+ holder.icon_state = "weasel8"
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs advanced scanner module to [holder].", "You install advanced scanner module to [holder].")
+ qdel(used_atom)
+ holder.icon_state = "weasel11"
+ else
+ user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
+ holder.icon_state = "weasel9"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
+ holder.icon_state = "weasel12"
+ else
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
+ new /obj/item/stock_parts/scanning_module/adv(get_turf(holder))
+ holder.icon_state = "weasel10"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].")
+ qdel(used_atom)
+ holder.icon_state = "weasel13"
+ else
+ user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
+ holder.icon_state = "weasel11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ holder.icon_state = "weasel14"
+ 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 = "weasel12"
+ 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 = "weasel15"
+ else
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ holder.icon_state = "weasel13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "weasel16"
+ 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 = 3
+ holder.icon_state = "weasel14"
+ 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 = "weasel17"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "weasel15"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
+ holder.icon_state = "weasel18"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "weasel16"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "weasel19"
+ 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 = 3
+ holder.icon_state = "weasel17"
+ 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 the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "weasel18"
+ return 1
+
+/datum/construction/reversible/mecha/weasel/spawn_result()
+ ..()
+ feedback_inc("mecha_weasel_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/weasel.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/weasel.dm
new file mode 100644
index 00000000000..2f8768208bf
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/sec/weasel.dm
@@ -0,0 +1,20 @@
+/obj/vehicle/sealed/mecha/micro/sec/weasel
+ desc = "A light scout exosuit for micro crewmembers, built for fast reconnaisance."
+ name = "Weasel"
+ icon_state = "weasel"
+ initial_icon = "weasel"
+ step_in = 1 // zoom zoom
+ dir_in = 2 //Facing south.
+ integrity = 100
+ deflect_chance = 5
+ damage_absorption = list("brute"=1,"fire"=1,"bullet"=0.9,"laser"=0.8,"energy"=0.85,"bomb"=1)
+ max_temperature = 5000
+ wreckage = /obj/effect/decal/mecha_wreckage/micro/sec/weasel
+ internal_damage_threshold = 20
+ max_equip = 2
+ max_micro_utility_equip = 0
+ max_micro_weapon_equip = 2
+
+/obj/effect/decal/mecha_wreckage/micro/sec/weasel
+ name = "Weasel wreckage"
+ icon_state = "weasel-broken"
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/security.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/security.dm
deleted file mode 100644
index 0a4e313d196..00000000000
--- a/code/modules/vehicles/sealed/mecha/subtypes/micro/security.dm
+++ /dev/null
@@ -1,54 +0,0 @@
-/obj/vehicle/sealed/mecha/micro/sec/occupant_added(mob/adding, datum/event_args/actor/actor, control_flags, silent)
- . = ..()
- if(adding.client)
- adding.client.mouse_pointer_icon = file("icons/mecha/mecha_mouse.dmi")
-
-/obj/vehicle/sealed/mecha/micro/sec/occupant_removed(mob/removing, datum/event_args/actor/actor, control_flags, silent)
- . = ..()
- if(removing.client)
- removing.client.mouse_pointer_icon = initial(src.occupant_legacy.client.mouse_pointer_icon)
-
-/obj/vehicle/sealed/mecha/micro/sec/polecat //figured give 'em the names of small predatory critters
- desc = "A hardened security vehicle for micro crewmembers. To them, it's a superheavy tank. To everyone else, it's kinda cute."
- name = "Polecat"
- icon_state = "polecat"
- initial_icon = "polecat"
- step_in = 2 // human running speed
- dir_in = 2 //Facing south.
- integrity = 150
- step_energy_drain = 4 // less efficient than base micromech, but still a micromech.
- deflect_chance = 10
- damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1)
- max_temperature = 15000
- infra_luminosity = 6
- wreckage = /obj/effect/decal/mecha_wreckage/micro/sec/polecat
- internal_damage_threshold = 35
- max_equip = 3
- max_micro_utility_equip = 0
- max_micro_weapon_equip = 3
- damage_minimum = 5 //A teeny bit of armor
-
-/obj/effect/decal/mecha_wreckage/micro/sec/polecat
- name = "Polecat wreckage"
- icon_state = "polecat-broken"
-
-/obj/vehicle/sealed/mecha/micro/sec/weasel
- desc = "A light scout exosuit for micro crewmembers, built for fast reconnaisance."
- name = "Weasel"
- icon_state = "weasel"
- initial_icon = "weasel"
- step_in = 1 // zoom zoom
- dir_in = 2 //Facing south.
- integrity = 100
- deflect_chance = 5
- damage_absorption = list("brute"=1,"fire"=1,"bullet"=0.9,"laser"=0.8,"energy"=0.85,"bomb"=1)
- max_temperature = 5000
- wreckage = /obj/effect/decal/mecha_wreckage/micro/sec/weasel
- internal_damage_threshold = 20
- max_equip = 2
- max_micro_utility_equip = 0
- max_micro_weapon_equip = 2
-
-/obj/effect/decal/mecha_wreckage/micro/sec/weasel
- name = "Weasel wreckage"
- icon_state = "weasel-broken"
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/utility.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/utility.dm
index c6240b4ea1a..149b36a35af 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/micro/utility.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/utility.dm
@@ -1,24 +1 @@
-
-
-/obj/vehicle/sealed/mecha/micro/utility/gopher //small digging creature, to keep the theme
- desc = "A tough little utility mech for micro crewmembers, based on a miner borg chassis."
- name = "Gopher"
- icon_state = "gopher"
- initial_icon = "gopher"
- step_in = 3
- dir_in = 2 //Facing south.
- integrity = 100
- deflect_chance = 10
- damage_absorption = list("brute"=0.9,"fire"=1,"bullet"=1,"laser"=1,"energy"=1,"bomb"=1)
- max_temperature = 15000
- infra_luminosity = 6
- wreckage = /obj/effect/decal/mecha_wreckage/micro/utility/gopher
- internal_damage_threshold = 35
- max_micro_utility_equip = 2
- max_micro_weapon_equip = 0
- max_equip = 2
-
-/obj/effect/decal/mecha_wreckage/micro/utility/gopher
- name = "Gopher wreckage"
- icon_state = "gopher-broken"
-
+/obj/vehicle/sealed/mecha/micro/utility
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/utility/gopher-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/utility/gopher-construction.dm
new file mode 100644
index 00000000000..d7e94cd1c59
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/utility/gopher-construction.dm
@@ -0,0 +1,244 @@
+/obj/item/vehicle_chassis/micro/gopher
+ name = "Gopher Chassis"
+ icon_state = "gopher-chassis"
+
+/obj/item/vehicle_chassis/micro/gopher/New()
+ ..()
+ construct = new /datum/construction/mecha/gopher_chassis(src)
+
+/obj/item/vehicle_part/micro/gopher_torso
+ name="Gopher Torso"
+ desc="A torso part of Gopher. Contains power unit, processing core and life support systems."
+ icon_state = "gopher-torso"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/micro/gopher_left_arm
+ name="Gopher Left Arm"
+ desc="A Gopher left arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "gopher-arm-left"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/micro/gopher_right_arm
+ name="Gopher Right Arm"
+ desc="A Gopher right arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "gopher-arm-right"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/micro/gopher_left_leg
+ name="Gopher Left Leg"
+ desc="A Gopher left leg. Contains somewhat complex servodrives and balance maintaining systems."
+ icon_state = "gopher-leg-left"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/micro/gopher_right_leg
+ name="Gopher Right Leg"
+ desc="A Gopher right leg. Contains somewhat complex servodrives and balance maintaining systems."
+ icon_state = "gopher-leg-right"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/datum/construction/mecha/gopher_chassis
+ steps = list(
+ list("key"=/obj/item/vehicle_part/micro/gopher_torso),//1
+ list("key"=/obj/item/vehicle_part/micro/gopher_left_arm),//2
+ list("key"=/obj/item/vehicle_part/micro/gopher_right_arm),//3
+ list("key"=/obj/item/vehicle_part/micro/gopher_left_leg),//4
+ list("key"=/obj/item/vehicle_part/micro/gopher_right_leg),//5
+ )
+
+/datum/construction/mecha/gopher_chassis/custom_action(step, atom/used_atom, mob/user)
+ user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
+ holder.add_overlay("[used_atom.icon_state]+o")
+ qdel(used_atom)
+ return 1
+
+/datum/construction/mecha/gopher_chassis/action(atom/used_atom,mob/user)
+ return check_all_steps(used_atom,user)
+
+/datum/construction/mecha/gopher_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/gopher(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction_vr.dmi'
+ const_holder.icon_state = "gopher0"
+ const_holder.density = TRUE
+ const_holder.cut_overlays()
+ spawn()
+ qdel(src)
+
+/datum/construction/reversible/mecha/gopher
+ result = "/obj/vehicle/sealed/mecha/micro/utility/gopher"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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"="Peripherals control module is secured"),
+ //7
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Peripherals control module is installed"),
+ //8
+ list("key"=/obj/item/circuitboard/mecha/gopher/peripherals,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Central control module is secured"),
+ //9
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Central control module is installed"),
+ //10
+ list("key"=/obj/item/circuitboard/mecha/gopher/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //11
+ list("key"=IS_WIRECUTTER,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is added"),
+ //12
+ list("key"=/obj/item/stack/cable_coil,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The hydraulic systems are active."),
+ //13
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
+ "desc"="The hydraulic systems are connected."),
+ //14
+ list("key"=IS_WRENCH,
+ "desc"="The hydraulic systems are disconnected."),
+ )
+
+/datum/construction/reversible/mecha/gopher/action(atom/used_atom,mob/user)
+ return check_step(used_atom,user)
+
+/datum/construction/reversible/mecha/gopher/custom_action(index, diff, atom/used_atom, mob/user)
+ if(!..())
+ return FALSE
+
+ //TODO: better messages.
+ switch(index)
+ if(14)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "gopher1"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "gopher2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "gopher0"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "gopher3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "gopher1"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "gopher4"
+ 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 = "gopher2"
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
+ qdel(used_atom)
+ holder.icon_state = "gopher5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "gopher3"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "gopher6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/gopher/main(get_turf(holder))
+ holder.icon_state = "gopher4"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
+ qdel(used_atom)
+ holder.icon_state = "gopher7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "gopher5"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "gopher8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/gopher/peripherals(get_turf(holder))
+ holder.icon_state = "gopher6"
+ 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 = "gopher9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "gopher7"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "gopher10"
+ 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 = 3
+ holder.icon_state = "gopher8"
+ 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 = "gopher11"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "gopher9"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
+ holder.icon_state = "gopher12"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "gopher10"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "gopher13"
+ 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 = 2
+ holder.icon_state = "gopher11"
+ 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 the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "gopher12"
+ return 1
+
+/datum/construction/reversible/mecha/gopher/spawn_result()
+ ..()
+ feedback_inc("mecha_gopher_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/utility/gopher.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/utility/gopher.dm
new file mode 100644
index 00000000000..0c2e40d6e25
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/utility/gopher.dm
@@ -0,0 +1,21 @@
+/obj/vehicle/sealed/mecha/micro/utility/gopher //small digging creature, to keep the theme
+ desc = "A tough little utility mech for micro crewmembers, based on a miner borg chassis."
+ name = "Gopher"
+ icon_state = "gopher"
+ initial_icon = "gopher"
+ step_in = 3
+ dir_in = 2 //Facing south.
+ integrity = 100
+ deflect_chance = 10
+ damage_absorption = list("brute"=0.9,"fire"=1,"bullet"=1,"laser"=1,"energy"=1,"bomb"=1)
+ max_temperature = 15000
+ infra_luminosity = 6
+ wreckage = /obj/effect/decal/mecha_wreckage/micro/utility/gopher
+ internal_damage_threshold = 35
+ max_micro_utility_equip = 2
+ max_micro_weapon_equip = 0
+ max_equip = 2
+
+/obj/effect/decal/mecha_wreckage/micro/utility/gopher
+ name = "Gopher wreckage"
+ icon_state = "gopher-broken"
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/working.dm b/code/modules/vehicles/sealed/mecha/subtypes/working.dm
index 726c08a2b4f..bb2f52bba76 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/working.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/working.dm
@@ -10,7 +10,7 @@
. = ..()
var/turf/T = get_turf(src)
if(isPlayerLevel(T.z))
- new /obj/item/mecha_parts/mecha_tracking(src)
+ new /obj/item/vehicle_tracking_beacon(src)
/obj/vehicle/sealed/mecha/working/range_action(atom/target as obj|mob|turf)
return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/working/hoverpod.dm b/code/modules/vehicles/sealed/mecha/subtypes/working/hoverpod.dm
index cb63981a0d6..5ee9f69f84f 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/working/hoverpod.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/working/hoverpod.dm
@@ -121,9 +121,9 @@
/obj/vehicle/sealed/mecha/working/hoverpod/combatpod/Initialize(mapload)
. = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/weapon/energy/laser
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive
+ ME = new /obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive
ME.attach(src)
@@ -132,7 +132,7 @@
/obj/vehicle/sealed/mecha/working/hoverpod/shuttlepod/Initialize(mapload)
. = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/tool/passenger
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
+ ME = new /obj/item/vehicle_module/tool/passenger
ME.attach(src)
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/working/ripley-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley-construction.dm
new file mode 100644
index 00000000000..66231671569
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley-construction.dm
@@ -0,0 +1,244 @@
+/obj/item/vehicle_chassis/ripley
+ name = "Ripley Chassis"
+
+/obj/item/vehicle_chassis/ripley/New()
+ ..()
+ construct = new /datum/construction/mecha/ripley_chassis(src)
+
+/obj/item/vehicle_part/ripley_torso
+ name="Ripley Torso"
+ desc="A torso part of Ripley APLU. Contains power unit, processing core and life support systems."
+ icon_state = "ripley_harness"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/ripley_left_arm
+ name="Ripley Left Arm"
+ desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "ripley_l_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/ripley_right_arm
+ name="Ripley Right Arm"
+ desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "ripley_r_arm"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/ripley_left_leg
+ name="Ripley Left Leg"
+ desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
+ icon_state = "ripley_l_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/obj/item/vehicle_part/ripley_right_leg
+ name="Ripley Right Leg"
+ desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
+ icon_state = "ripley_r_leg"
+ origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+
+/datum/construction/mecha/ripley_chassis
+ steps = list(list("key"=/obj/item/vehicle_part/ripley_torso),//1
+ list("key"=/obj/item/vehicle_part/ripley_left_arm),//2
+ list("key"=/obj/item/vehicle_part/ripley_right_arm),//3
+ list("key"=/obj/item/vehicle_part/ripley_left_leg),//4
+ list("key"=/obj/item/vehicle_part/ripley_right_leg)//5
+ )
+
+/datum/construction/mecha/ripley_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/ripley_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/ripley_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/ripley(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "ripley0"
+ const_holder.density = 1
+ const_holder.cut_overlays()
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/ripley
+ result = "/obj/vehicle/sealed/mecha/working/ripley"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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"="Peripherals control module is secured"),
+ //7
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Peripherals control module is installed"),
+ //8
+ list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Central control module is secured"),
+ //9
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Central control module is installed"),
+ //10
+ list("key"=/obj/item/circuitboard/mecha/ripley/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //11
+ list("key"=IS_WIRECUTTER,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is added"),
+ //12
+ list("key"=/obj/item/stack/cable_coil,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The hydraulic systems are active."),
+ //13
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
+ "desc"="The hydraulic systems are connected."),
+ //14
+ list("key"=IS_WRENCH,
+ "desc"="The hydraulic systems are disconnected.")
+ )
+
+/datum/construction/reversible/mecha/ripley/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/ripley/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(14)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "ripley1"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "ripley2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "ripley0"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "ripley3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "ripley1"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "ripley4"
+ 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 = "ripley2"
+ if(10)
+ 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 = "ripley5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "ripley3"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "ripley6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
+ holder.icon_state = "ripley4"
+ if(8)
+ 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 = "ripley7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "ripley5"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "ripley8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
+ holder.icon_state = "ripley6"
+ 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 = "ripley9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "ripley7"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "ripley10"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "ripley8"
+ 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 = "ripley11"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "ripley9"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
+ holder.icon_state = "ripley12"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "ripley10"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "ripley13"
+ else
+ user.visible_message("[user] pries 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 = "ripley11"
+ 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 the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "ripley12"
+ return 1
+
+/datum/construction/reversible/mecha/ripley/spawn_result()
+ ..()
+ feedback_inc("mecha_ripley_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/working/ripley.dm b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley.dm
index 4565776996a..f7279631add 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/working/ripley.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley.dm
@@ -17,31 +17,29 @@
encumbrance_gap = 2
starting_components = list(
- /obj/item/mecha_parts/component/hull/durable,
- /obj/item/mecha_parts/component/actuator,
- /obj/item/mecha_parts/component/armor/mining,
- /obj/item/mecha_parts/component/gas,
- /obj/item/mecha_parts/component/electrical
+ /obj/item/vehicle_component/hull/durable,
+ /obj/item/vehicle_component/actuator,
+ /obj/item/vehicle_component/armor/mining,
+ /obj/item/vehicle_component/gas,
+ /obj/item/vehicle_component/electrical
)
icon_scale_x = 1.2
icon_scale_y = 1.2
-/obj/vehicle/sealed/mecha/working/ripley/firefighter
- desc = "Standard APLU chassis was refitted with additional thermal protection and cistern."
- name = "APLU \"Firefighter\""
- icon_state = "firefighter"
- initial_icon = "firefighter"
- max_temperature = 65000
- integrity = 250
- lights_power = 8
- damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5)
- wreckage = /obj/effect/decal/mecha_wreckage/ripley/firefighter
- max_hull_equip = 2
- max_weapon_equip = 0
- max_utility_equip = 2
- max_universal_equip = 1
- max_special_equip = 1
+/obj/vehicle/sealed/mecha/working/ripley/Initialize(mapload)
+ . = ..()
+ orescanner = new /obj/item/mining_scanner
+
+/obj/vehicle/sealed/mecha/working/ripley/verb/detect_ore()
+ set category = "Exosuit Interface"
+ set name = "Detect Ores"
+ set src = usr.loc
+ set popup_menu = 0
+
+ orescanner.attack_self(usr)
+
+//! misc subtypes !//
/obj/vehicle/sealed/mecha/working/ripley/deathripley
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
@@ -61,7 +59,7 @@
/obj/vehicle/sealed/mecha/working/ripley/deathripley/Initialize(mapload)
. = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/safety
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/tool/hydraulic_clamp/safety
ME.attach(src)
return
@@ -73,50 +71,18 @@
. = ..()
//Attach drill
if(prob(25)) //Possible diamond drill... Feeling lucky?
- var/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
+ var/obj/item/vehicle_module/tool/drill/diamonddrill/D = new /obj/item/vehicle_module/tool/drill/diamonddrill
D.attach(src)
else
- var/obj/item/mecha_parts/mecha_equipment/tool/drill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill
+ var/obj/item/vehicle_module/tool/drill/D = new /obj/item/vehicle_module/tool/drill
D.attach(src)
//Attach hydrolic clamp
- var/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/HC = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
+ var/obj/item/vehicle_module/tool/hydraulic_clamp/HC = new /obj/item/vehicle_module/tool/hydraulic_clamp
HC.attach(src)
- for(var/obj/item/mecha_parts/mecha_tracking/B in src.contents)//Deletes the beacon so it can't be found easily
+ for(var/obj/item/vehicle_tracking_beacon/B in src.contents)//Deletes the beacon so it can't be found easily
qdel (B)
-/obj/vehicle/sealed/mecha/working/ripley/geiger
- name = "APLU \"Geiger\""
- desc = "You can't beat the classics."
- icon_state = "ripley-old"
- initial_icon = "ripley-old"
- max_temperature = 5000
- integrity = 150
- integrity_max = 150
- internal_damage_threshold = 50
- step_energy_drain = 3
-
- show_pilot = TRUE
- pilot_lift = 5
-
- max_utility_equip = 1
- max_universal_equip = 3
-
- icon_scale_x = 1
- icon_scale_y = 1
-
-/obj/vehicle/sealed/mecha/working/ripley/Initialize(mapload)
- . = ..()
- orescanner = new /obj/item/mining_scanner
-
-/obj/vehicle/sealed/mecha/working/ripley/verb/detect_ore()
- set category = "Exosuit Interface"
- set name = "Detect Ores"
- set src = usr.loc
- set popup_menu = 0
-
- orescanner.attack_self(usr)
-
//Meant for random spawns.
/obj/vehicle/sealed/mecha/working/ripley/mining/old
desc = "An old, dusty mining ripley."
@@ -131,5 +97,5 @@
//Mechbay
/obj/vehicle/sealed/mecha/working/ripley/abandoned/Initialize(mapload)
. = ..()
- for(var/obj/item/mecha_parts/mecha_tracking/B in src.contents) //Deletes the beacon so it can't be found easily
+ for(var/obj/item/vehicle_tracking_beacon/B in src.contents) //Deletes the beacon so it can't be found easily
qdel(B)
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/firefighter-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/firefighter-construction.dm
new file mode 100644
index 00000000000..3748f13046b
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/firefighter-construction.dm
@@ -0,0 +1,227 @@
+/obj/item/vehicle_chassis/firefighter
+ name = "Firefighter Chassis"
+
+/obj/item/vehicle_chassis/firefighter/New()
+ ..()
+ construct = new /datum/construction/mecha/firefighter_chassis(src)
+
+/datum/construction/mecha/firefighter_chassis
+ steps = list(list("key"=/obj/item/vehicle_part/ripley_torso),//1
+ list("key"=/obj/item/vehicle_part/ripley_left_arm),//2
+ list("key"=/obj/item/vehicle_part/ripley_right_arm),//3
+ list("key"=/obj/item/vehicle_part/ripley_left_leg),//4
+ list("key"=/obj/item/vehicle_part/ripley_right_leg),//5
+ list("key"=/obj/item/clothing/suit/fire)//6
+ )
+
+/datum/construction/mecha/firefighter_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/firefighter_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/firefighter_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/firefighter(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "fireripley0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/firefighter
+ result = "/obj/vehicle/sealed/mecha/working/ripley/firefighter"
+ steps = list(
+ //1
+ list("key"=/obj/item/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"=IS_CROWBAR,
+ "desc"="External armor is being installed."),
+ //4
+ list("key"=/obj/item/stack/material/plasteel,
+ "backkey"=/obj/item/weldingtool,
+ "desc"="Internal armor is welded."),
+ //5
+ list("key"=/obj/item/weldingtool,
+ "backkey"=IS_WRENCH,
+ "desc"="Internal armor is wrenched"),
+ //6
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
+ "desc"="Internal armor is installed"),
+ //7
+ list("key"=/obj/item/stack/material/plasteel,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Peripherals control module is secured"),
+ //8
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Peripherals control module is installed"),
+ //9
+ list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Central control module is secured"),
+ //10
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Central control module is installed"),
+ //11
+ list("key"=/obj/item/circuitboard/mecha/ripley/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //12
+ list("key"=/obj/item/tool/wirecutters,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is added"),
+ //13
+ list("key"=/obj/item/stack/cable_coil,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The hydraulic systems are active."),
+ //14
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
+ "desc"="The hydraulic systems are connected."),
+ //15
+ list("key"=IS_WRENCH,
+ "desc"="The hydraulic systems are disconnected.")
+ )
+
+/datum/construction/reversible/mecha/firefighter/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/firefighter/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(15)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "fireripley1"
+ if(14)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "fireripley2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "fireripley0"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "fireripley3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "fireripley1"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "fireripley4"
+ 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 = "fireripley2"
+ if(11)
+ 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 = "fireripley5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "fireripley3"
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "fireripley6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
+ holder.icon_state = "fireripley4"
+ if(9)
+ 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 = "fireripley7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "fireripley5"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "fireripley8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
+ holder.icon_state = "fireripley6"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].")
+ holder.icon_state = "fireripley9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "fireripley7"
+ if(6)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "fireripley10"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry internal 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 = "fireripley8"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ holder.icon_state = "fireripley11"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "fireripley9"
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] starts to install the external armor layer to [holder].", "You start to install the external armor layer to [holder].")
+ holder.icon_state = "fireripley12"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "fireripley10"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
+ holder.icon_state = "fireripley13"
+ else
+ user.visible_message("[user] removes the external armor from [holder].", "You remove the external armor from [holder].")
+ var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "fireripley11"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "fireripley14"
+ else
+ user.visible_message("[user] pries 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 = "fireripley12"
+ 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 the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "fireripley13"
+ return 1
+
+/datum/construction/reversible/mecha/firefighter/spawn_result()
+ ..()
+ feedback_inc("mecha_firefighter_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/firefighter.dm b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/firefighter.dm
new file mode 100644
index 00000000000..e7733cf3f49
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/firefighter.dm
@@ -0,0 +1,15 @@
+/obj/vehicle/sealed/mecha/working/ripley/firefighter
+ desc = "Standard APLU chassis was refitted with additional thermal protection and cistern."
+ name = "APLU \"Firefighter\""
+ icon_state = "firefighter"
+ initial_icon = "firefighter"
+ max_temperature = 65000
+ integrity = 250
+ lights_power = 8
+ damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5)
+ wreckage = /obj/effect/decal/mecha_wreckage/ripley/firefighter
+ max_hull_equip = 2
+ max_weapon_equip = 0
+ max_utility_equip = 2
+ max_universal_equip = 1
+ max_special_equip = 1
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/geiger-construction.dm b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/geiger-construction.dm
new file mode 100644
index 00000000000..bbd57d4767e
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/geiger-construction.dm
@@ -0,0 +1,218 @@
+/obj/item/vehicle_chassis/geiger
+ name = "Lightweight APLU Chassis"
+
+/obj/item/vehicle_chassis/geiger/New()
+ ..()
+ construct = new /datum/construction/mecha/geiger_chassis(src)
+
+/obj/item/vehicle_part/geiger_torso
+ name="Lightweight APLU Torso"
+ icon_state = "ripley_harness"
+
+/datum/construction/mecha/geiger_chassis
+ steps = list(list("key"=/obj/item/vehicle_part/geiger_torso),//1
+ list("key"=/obj/item/vehicle_part/ripley_left_arm),//2
+ list("key"=/obj/item/vehicle_part/ripley_right_arm),//3
+ list("key"=/obj/item/vehicle_part/ripley_left_leg),//4
+ list("key"=/obj/item/vehicle_part/ripley_right_leg)//5
+ )
+
+/datum/construction/mecha/geiger_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/geiger_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/geiger_chassis/spawn_result()
+ var/obj/item/vehicle_chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/geiger(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "ripley0"
+ const_holder.density = 1
+ const_holder.cut_overlays()
+ spawn()
+ qdel(src)
+ return
+
+
+/datum/construction/reversible/mecha/geiger
+ result = "/obj/vehicle/sealed/mecha/working/ripley/geiger"
+ steps = list(
+ //1
+ list("key"=/obj/item/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/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/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"="Peripherals control module is secured"),
+ //7
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Peripherals control module is installed"),
+ //8
+ list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Central control module is secured"),
+ //9
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Central control module is installed"),
+ //10
+ list("key"=/obj/item/circuitboard/mecha/ripley/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //11
+ list("key"=IS_WIRECUTTER,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is added"),
+ //12
+ list("key"=/obj/item/stack/cable_coil,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The hydraulic systems are active."),
+ //13
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
+ "desc"="The hydraulic systems are connected."),
+ //14
+ list("key"=IS_WRENCH,
+ "desc"="The hydraulic systems are disconnected.")
+ )
+
+/datum/construction/reversible/mecha/geiger/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/geiger/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(14)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "ripley1"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "ripley2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "ripley0"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "ripley3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "ripley1"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "ripley4"
+ 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 = "ripley2"
+ if(10)
+ 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 = "ripley5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "ripley3"
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ holder.icon_state = "ripley6"
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
+ holder.icon_state = "ripley4"
+ if(8)
+ 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 = "ripley7"
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ holder.icon_state = "ripley5"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ holder.icon_state = "ripley8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
+ holder.icon_state = "ripley6"
+ 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 = "ripley9"
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ holder.icon_state = "ripley7"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "ripley10"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry 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 = "ripley8"
+ 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 = "ripley11"
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ holder.icon_state = "ripley9"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
+ holder.icon_state = "ripley12"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "ripley10"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "oldripley13"
+ else
+ user.visible_message("[user] pries 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 = "ripley11"
+ 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 the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "ripley12"
+ return 1
+
+/datum/construction/reversible/mecha/geiger/spawn_result()
+ ..()
+ feedback_inc("mecha_geiger_created",1)
+ return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/geiger.dm b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/geiger.dm
new file mode 100644
index 00000000000..eb882dfe9ac
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/subtypes/working/ripley/geiger.dm
@@ -0,0 +1,19 @@
+/obj/vehicle/sealed/mecha/working/ripley/geiger
+ name = "APLU \"Geiger\""
+ desc = "You can't beat the classics."
+ icon_state = "ripley-old"
+ initial_icon = "ripley-old"
+ max_temperature = 5000
+ integrity = 150
+ integrity_max = 150
+ internal_damage_threshold = 50
+ step_energy_drain = 3
+
+ show_pilot = TRUE
+ pilot_lift = 5
+
+ max_utility_equip = 1
+ max_universal_equip = 3
+
+ icon_scale_x = 1
+ icon_scale_y = 1
diff --git a/code/modules/vehicles/sealed/mecha/vehicle_chassis.dm b/code/modules/vehicles/sealed/mecha/vehicle_chassis.dm
new file mode 100644
index 00000000000..55daa17c369
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/vehicle_chassis.dm
@@ -0,0 +1,25 @@
+
+/obj/item/vehicle_chassis
+ name="Mecha Chassis"
+ icon = 'icons/mecha/mech_construct.dmi'
+ icon_state = "backbone"
+ w_class = WEIGHT_CLASS_HUGE
+ var/datum/construction/construct
+
+/obj/item/vehicle_chassis/attackby(obj/item/W, mob/user)
+ if(!construct || !construct.action(W, user))
+ ..()
+ return
+
+/obj/item/vehicle_chassis/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
+ return
+
+/obj/item/vehicle_chassis/fighter
+ name="Fighter Chassis"
+ icon = 'icons/mecha/fighters_construct64x64.dmi'
+ icon_state = "backbone"
+
+/obj/item/vehicle_chassis/micro
+ icon = 'icons/mecha/mech_construct_vr.dmi'
+ icon_state = "blank"
+ w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/modules/vehicles/sealed/mecha/components/_component.dm b/code/modules/vehicles/sealed/mecha/vehicle_component.dm
similarity index 83%
rename from code/modules/vehicles/sealed/mecha/components/_component.dm
rename to code/modules/vehicles/sealed/mecha/vehicle_component.dm
index 00d8765145c..d98c049ec82 100644
--- a/code/modules/vehicles/sealed/mecha/components/_component.dm
+++ b/code/modules/vehicles/sealed/mecha/vehicle_component.dm
@@ -1,5 +1,5 @@
-/obj/item/mecha_parts/component
+/obj/item/vehicle_component
name = "mecha component"
icon = 'icons/mecha/mech_component.dmi'
icon_state = "component"
@@ -25,7 +25,7 @@
var/internal_damage_flag // If set, the component will toggle the flag on or off if it is destroyed / severely damaged.
-/obj/item/mecha_parts/component/examine(mob/user, dist)
+/obj/item/vehicle_component/examine(mob/user, dist)
. = ..()
var/show_integrity = round(integrity/integrity_max*100, 0.1)
switch(show_integrity)
@@ -42,20 +42,20 @@
if(0 to 1)
. += "It is completely destroyed."
-/obj/item/mecha_parts/component/Initialize(mapload)
+/obj/item/vehicle_component/Initialize(mapload)
. = ..()
integrity = integrity_max
if(start_damaged)
integrity = round(integrity * integrity_danger_mod)
-/obj/item/mecha_parts/component/Destroy()
+/obj/item/vehicle_component/Destroy()
detach()
return ..()
// Damage code.
-/obj/item/mecha_parts/component/emp_act(var/severity = 4)
+/obj/item/vehicle_component/emp_act(var/severity = 4)
if(severity + emp_resistance > 4)
return
@@ -63,11 +63,11 @@
damage_integrity((4 - severity) * round(integrity * 0.1, 0.1))
-/obj/item/mecha_parts/component/proc/adjust_integrity_mecha(var/amt = 0)
+/obj/item/vehicle_component/proc/adjust_integrity_mecha(var/amt = 0)
integrity = clamp(integrity + amt, 0, integrity_max)
return
-/obj/item/mecha_parts/component/proc/damage_part(var/dam_amt = 0, var/type = DAMAGE_TYPE_BRUTE)
+/obj/item/vehicle_component/proc/damage_part(var/dam_amt = 0, var/type = DAMAGE_TYPE_BRUTE)
if(dam_amt <= 0)
return FALSE
@@ -79,7 +79,7 @@
return TRUE
-/obj/item/mecha_parts/component/proc/get_efficiency()
+/obj/item/vehicle_component/proc/get_efficiency()
var/integ_limit = round(integrity_max * integrity_danger_mod)
if(integrity < integ_limit)
@@ -91,7 +91,7 @@
// Attach/Detach code.
-/obj/item/mecha_parts/component/proc/attach(var/obj/vehicle/sealed/mecha/target, var/mob/living/user)
+/obj/item/vehicle_component/proc/attach(var/obj/vehicle/sealed/mecha/target, var/mob/living/user)
if(target)
if(!(component_type in target.internal_components))
if(user)
@@ -123,7 +123,7 @@
return TRUE
return FALSE
-/obj/item/mecha_parts/component/proc/detach()
+/obj/item/vehicle_component/proc/detach()
if(chassis)
chassis.internal_components[component_type] = null
@@ -135,7 +135,7 @@
return TRUE
-/obj/item/mecha_parts/component/attackby(obj/item/W as obj, mob/user as mob)
+/obj/item/vehicle_component/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/stack/nanopaste))
var/obj/item/stack/nanopaste/NP = W
@@ -150,8 +150,8 @@
// Various procs to handle different calls by Exosuits. IE, movement actions, damage actions, etc.
-/obj/item/mecha_parts/component/proc/get_step_delay()
+/obj/item/vehicle_component/proc/get_step_delay()
return step_delay
-/obj/item/mecha_parts/component/proc/handle_move()
+/obj/item/vehicle_component/proc/handle_move()
return
diff --git a/code/modules/vehicles/sealed/mecha/vehicle_module-dynamicprocs.dm b/code/modules/vehicles/sealed/mecha/vehicle_module-dynamicprocs.dm
new file mode 100644
index 00000000000..df04467651f
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/vehicle_module-dynamicprocs.dm
@@ -0,0 +1,19 @@
+/*
+ * File containing all the default 'handlers' for Exosuit equipment, hopefully to make all dynX calls extinct.
+ */
+
+// Used for impacting (thrown) objects, and damage value.
+/obj/item/vehicle_module/proc/handle_ranged_contact(var/obj/A, var/inc_damage = 0)
+ return max(0, inc_damage)
+
+// Used for melee strikes with an object, and a mob, and damage value.
+/obj/item/vehicle_module/proc/handle_melee_contact(var/obj/item/W, var/mob/living/user, var/inc_damage = 0)
+ return max(0, inc_damage)
+
+// Used for projectile impacts from bullet_act.
+/obj/item/vehicle_module/proc/handle_projectile_contact(var/obj/projectile/Proj, var/inc_damage = 0)
+ return max(0, inc_damage)
+
+// Used for on-movement actions.
+/obj/item/vehicle_module/proc/handle_movement_action() //Any modules that have special effects or needs when taking a step or floating through space.
+ return
diff --git a/code/modules/vehicles/sealed/mecha/equipment/mecha_equipment.dm b/code/modules/vehicles/sealed/mecha/vehicle_module.dm
similarity index 82%
rename from code/modules/vehicles/sealed/mecha/equipment/mecha_equipment.dm
rename to code/modules/vehicles/sealed/mecha/vehicle_module.dm
index 3d95be75143..58d8be2a132 100644
--- a/code/modules/vehicles/sealed/mecha/equipment/mecha_equipment.dm
+++ b/code/modules/vehicles/sealed/mecha/vehicle_module.dm
@@ -8,7 +8,7 @@
#define EQUIP_MICRO_UTILITY "micro_utility"
#define EQUIP_MICRO_WEAPON "micro_weapon"
-/obj/item/mecha_parts/mecha_equipment
+/obj/item/vehicle_module
name = "mecha equipment"
icon = 'icons/mecha/mecha_equipment.dmi'
icon_state = "mecha_equip"
@@ -35,7 +35,7 @@
///Does the component slow/speed up the suit?
var/step_delay = 0
-/obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(target=1)
+/obj/item/vehicle_module/proc/do_after_cooldown(target=1)
sleep(equip_cooldown)
set_ready_state(1)
if(ready_sound) //Kind of like the kinetic accelerator.
@@ -44,28 +44,28 @@
return TRUE
return FALSE
-/obj/item/mecha_parts/mecha_equipment/examine(mob/user, dist)
+/obj/item/vehicle_module/examine(mob/user, dist)
. = ..()
. += SPAN_NOTICE("[src] will fill [equip_type?"a [equip_type]":"any"] slot.")
-/obj/item/mecha_parts/mecha_equipment/proc/add_equip_overlay(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/proc/add_equip_overlay(obj/vehicle/sealed/mecha/M as obj)
return
-/obj/item/mecha_parts/mecha_equipment/proc/update_chassis_page()
+/obj/item/vehicle_module/proc/update_chassis_page()
if(chassis)
send_byjax(chassis.occupant_legacy,"exosuit.browser","eq_list",chassis.get_equipment_list())
send_byjax(chassis.occupant_legacy,"exosuit.browser","equipment_menu",chassis.get_equipment_menu(),"dropdowns")
return TRUE
return
-/obj/item/mecha_parts/mecha_equipment/proc/update_equip_info()
+/obj/item/vehicle_module/proc/update_equip_info()
if(chassis)
send_byjax(chassis.occupant_legacy,"exosuit.browser","\ref[src]",get_equip_info())
return TRUE
return
///Missiles detonating, teleporter creating singularity?
-/obj/item/mecha_parts/mecha_equipment/proc/destroy()
+/obj/item/vehicle_module/proc/destroy()
if(chassis)
if(equip_type)
if(equip_type == EQUIP_HULL)
@@ -94,7 +94,7 @@
src.update_chassis_page()
chassis.occupant_message(SPAN_DANGER("The [src] is destroyed!"))
chassis.log_append_to_last("[src] is destroyed.",1)
- if(istype(src, /obj/item/mecha_parts/mecha_equipment/weapon))//Gun
+ if(istype(src, /obj/item/vehicle_module/weapon))//Gun
switch(chassis.mech_faction)
if(MECH_FACTION_NT)
src.chassis.occupant_legacy << sound('sound/mecha/weapdestrnano.ogg',volume=70)
@@ -114,22 +114,22 @@
qdel(src)
return
-/obj/item/mecha_parts/mecha_equipment/proc/critfail()
+/obj/item/vehicle_module/proc/critfail()
if(chassis)
log_message("Critical failure",1)
return
-/obj/item/mecha_parts/mecha_equipment/proc/get_equip_info()
+/obj/item/vehicle_module/proc/get_equip_info()
if(!chassis) return
return "* [chassis.selected==src?"":""][src.name][chassis.selected==src?"":""]"
-/obj/item/mecha_parts/mecha_equipment/proc/is_ranged()//add a distance restricted equipment. Why not?
+/obj/item/vehicle_module/proc/is_ranged()//add a distance restricted equipment. Why not?
return range&RANGED
-/obj/item/mecha_parts/mecha_equipment/proc/is_melee()
+/obj/item/vehicle_module/proc/is_melee()
return range&MELEE
-/obj/item/mecha_parts/mecha_equipment/proc/enable_special_checks(atom/target)
+/obj/item/vehicle_module/proc/enable_special_checks(atom/target)
if(ispath(required_type))
return istype(target, required_type)
@@ -138,7 +138,7 @@
return TRUE
return FALSE
-/obj/item/mecha_parts/mecha_equipment/proc/action_checks(atom/target)
+/obj/item/vehicle_module/proc/action_checks(atom/target)
if(!target)
return FALSE
if(!chassis)
@@ -149,14 +149,14 @@
return FALSE
return TRUE
-/obj/item/mecha_parts/mecha_equipment/proc/action(atom/target)
+/obj/item/vehicle_module/proc/action(atom/target)
return
-/obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/proc/can_attach(obj/vehicle/sealed/mecha/M as obj)
//if(M.equipment.len >= M.max_equip)
// return FALSE
if(!allow_duplicate)
- for(var/obj/item/mecha_parts/mecha_equipment/ME in M.equipment) //Exact duplicate components aren't allowed.
+ for(var/obj/item/vehicle_module/ME in M.equipment) //Exact duplicate components aren't allowed.
if(ME.type == src.type)
return FALSE
if(equip_type == EQUIP_HULL && M.hull_equipment.len < M.max_hull_equip)
@@ -184,7 +184,7 @@
*/
return FALSE
-/obj/item/mecha_parts/mecha_equipment/proc/attach(obj/vehicle/sealed/mecha/M as obj)
+/obj/item/vehicle_module/proc/attach(obj/vehicle/sealed/mecha/M as obj)
//M.equipment += src
var/has_equipped = FALSE
if(equip_type == EQUIP_HULL && M.hull_equipment.len < M.max_hull_equip && !has_equipped)
@@ -220,7 +220,7 @@
src.update_chassis_page()
return
-/obj/item/mecha_parts/mecha_equipment/proc/detach(atom/moveto=null)
+/obj/item/vehicle_module/proc/detach(atom/moveto=null)
moveto = moveto || get_turf(chassis)
if(src.forceMove(moveto))
chassis.equipment -= src
@@ -248,33 +248,33 @@
enable_special = FALSE
return
-/obj/item/mecha_parts/mecha_equipment/Topic(href,href_list)
+/obj/item/vehicle_module/Topic(href,href_list)
if(href_list["detach"])
src.detach()
return
-/obj/item/mecha_parts/mecha_equipment/proc/set_ready_state(state)
+/obj/item/vehicle_module/proc/set_ready_state(state)
equip_ready = state
if(chassis)
send_byjax(chassis.occupant_legacy,"exosuit.browser","\ref[src]",src.get_equip_info())
return
-/obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message)
+/obj/item/vehicle_module/proc/occupant_message(message)
if(chassis)
chassis.occupant_message("[icon2html(src, world)] [message]")
return
-/obj/item/mecha_parts/mecha_equipment/proc/log_message(message)
+/obj/item/vehicle_module/proc/log_message(message)
if(chassis)
chassis.log_message("[src]: [message]")
return
///Allows mech equipment to do an action upon the mech moving
-/obj/item/mecha_parts/mecha_equipment/proc/MoveAction()
+/obj/item/vehicle_module/proc/MoveAction()
return
///Equipment returns its slowdown or speedboost.
-/obj/item/mecha_parts/mecha_equipment/proc/get_step_delay()
+/obj/item/vehicle_module/proc/get_step_delay()
return step_delay
//* Chassis - Physicality *//
@@ -285,5 +285,5 @@
* * This is usually our mech.
* * If we are not mounted, this always fails.
*/
-/obj/item/mecha_parts/mecha_equipment/proc/sufficiently_adjacent(atom/entity)
+/obj/item/vehicle_module/proc/sufficiently_adjacent(atom/entity)
return chassis?.sufficiently_adjacent(entity)
diff --git a/code/modules/vehicles/sealed/mecha/vehicle_part.dm b/code/modules/vehicles/sealed/mecha/vehicle_part.dm
new file mode 100644
index 00000000000..babe841e7a7
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/vehicle_part.dm
@@ -0,0 +1,14 @@
+/obj/item/vehicle_part
+ name = "mecha part"
+ icon = 'icons/mecha/mech_construct.dmi'
+ icon_state = "blank"
+ w_class = WEIGHT_CLASS_HUGE
+
+/obj/item/vehicle_part/fighter
+ icon = 'icons/mecha/fighters_construct64x64.dmi'
+ icon_state = "backbone"
+
+/obj/item/vehicle_part/micro
+ icon = 'icons/mecha/mech_construct_vr.dmi'
+ icon_state = "blank"
+ w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/modules/vehicles/sealed/mecha/vehicle_tracking_beacon.dm b/code/modules/vehicles/sealed/mecha/vehicle_tracking_beacon.dm
new file mode 100644
index 00000000000..8d0cdb63a26
--- /dev/null
+++ b/code/modules/vehicles/sealed/mecha/vehicle_tracking_beacon.dm
@@ -0,0 +1,70 @@
+// todo: this is neither a component nor a module and it's weird, deal with it somehow
+/obj/item/vehicle_tracking_beacon
+ name = "Exosuit tracking beacon"
+ desc = "Device used to transmit exosuit data."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "motion2"
+ origin_tech = list(TECH_DATA = 2, TECH_MAGNET = 2)
+
+/obj/item/vehicle_tracking_beacon/ui_data(mob/user, datum/tgui/ui)
+ var/list/data = ..()
+ if(!in_mecha())
+ return FALSE
+
+ var/obj/vehicle/sealed/mecha/M = loc
+ data["ref"] = REF(src)
+ data["charge"] = M.get_charge()
+ data["name"] = M.name
+ data["integrity"] = M.integrity
+ data["maxHealth"] = initial(M.integrity)
+ data["cell"] = M.cell
+ if(M.cell)
+ data["cellCharge"] = M.cell.charge
+ data["cellMaxCharge"] = M.cell.charge
+ data["airtank"] = M.return_pressure()
+ data["pilot"] = M.occupant_legacy
+ data["location"] = get_area(M)
+ data["active"] = M.selected
+ if(istype(M, /obj/vehicle/sealed/mecha/working/ripley))
+ var/obj/vehicle/sealed/mecha/working/ripley/RM = M
+ data["cargoUsed"] = RM.cargo.len
+ data["cargoMax"] = RM.cargo_capacity
+
+ return data
+
+/obj/item/vehicle_tracking_beacon/emp_act()
+ qdel(src)
+ return
+
+/obj/item/vehicle_tracking_beacon/legacy_ex_act()
+ qdel(src)
+ return
+
+/obj/item/vehicle_tracking_beacon/proc/in_mecha()
+ if(istype(loc, /obj/vehicle/sealed/mecha))
+ return loc
+ return 0
+
+/obj/item/vehicle_tracking_beacon/proc/shock()
+ var/obj/vehicle/sealed/mecha/M = in_mecha()
+ if(M)
+ M.emp_act(4)
+ qdel(src)
+
+/obj/item/vehicle_tracking_beacon/proc/get_mecha_log()
+ if(!in_mecha())
+ return list()
+ var/obj/vehicle/sealed/mecha/M = loc
+ return M.get_log_tgui()
+
+/obj/item/storage/box/mechabeacons
+ name = "Exosuit Tracking Beacons"
+
+/obj/item/storage/box/mechabeacons/legacy_spawn_contents()
+ new /obj/item/vehicle_tracking_beacon(src)
+ new /obj/item/vehicle_tracking_beacon(src)
+ new /obj/item/vehicle_tracking_beacon(src)
+ new /obj/item/vehicle_tracking_beacon(src)
+ new /obj/item/vehicle_tracking_beacon(src)
+ new /obj/item/vehicle_tracking_beacon(src)
+ new /obj/item/vehicle_tracking_beacon(src)
diff --git a/code/modules/vore/fluffstuff/custom_mecha.dm b/code/modules/vore/fluffstuff/custom_mecha.dm
index c9d3ecbfa34..0c524afc130 100644
--- a/code/modules/vore/fluffstuff/custom_mecha.dm
+++ b/code/modules/vore/fluffstuff/custom_mecha.dm
@@ -9,9 +9,9 @@
/obj/vehicle/sealed/mecha/combat/phazon/scree/Initialize(mapload)
. = ..()
- var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
+ var/obj/item/vehicle_module/ME = new /obj/item/vehicle_module/weapon/energy/taser
ME.attach(src)
- ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
+ ME = new /obj/item/vehicle_module/tesla_energy_relay
ME.attach(src)
/obj/effect/decal/mecha_wreckage/phazon/scree
diff --git a/code/modules/xenoarcheaology/boulder.dm b/code/modules/xenoarcheaology/boulder.dm
index 06b9df8e17a..e67d1f87cc1 100644
--- a/code/modules/xenoarcheaology/boulder.dm
+++ b/code/modules/xenoarcheaology/boulder.dm
@@ -96,5 +96,5 @@
else if(istype(AM,/obj/vehicle/sealed/mecha))
var/obj/vehicle/sealed/mecha/M = AM
- if(istype(M.selected,/obj/item/mecha_parts/mecha_equipment/tool/drill))
+ if(istype(M.selected,/obj/item/vehicle_module/tool/drill))
M.selected.action(src)
diff --git a/maps/away_missions/140x140/carpfarm.dmm b/maps/away_missions/140x140/carpfarm.dmm
index d8a1daef049..89e7bd5af55 100644
--- a/maps/away_missions/140x140/carpfarm.dmm
+++ b/maps/away_missions/140x140/carpfarm.dmm
@@ -383,7 +383,7 @@
/turf/simulated/floor/tiled,
/area/awaymission/carpfarm/base)
"br" = (
-/obj/item/mecha_parts/mecha_equipment/tool/drill,
+/obj/item/vehicle_module/tool/drill,
/obj/item/storage/toolbox/mechanical,
/obj/structure/table/steel,
/turf/simulated/floor/tiled,
diff --git a/maps/away_missions/140x140/snow_outpost.dmm b/maps/away_missions/140x140/snow_outpost.dmm
index b069148df78..bda1e1d1583 100644
--- a/maps/away_missions/140x140/snow_outpost.dmm
+++ b/maps/away_missions/140x140/snow_outpost.dmm
@@ -586,7 +586,7 @@
/turf/simulated/floor/snow/snow2,
/area/awaymission/snow_outpost/dark)
"cE" = (
-/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,
+/obj/item/vehicle_module/tool/drill/diamonddrill,
/turf/simulated/floor/snow/snow2,
/area/awaymission/snow_outpost/dark)
"cG" = (
@@ -2098,7 +2098,7 @@
/turf/simulated/mineral/floor/ignore_mapgen,
/area/awaymission/snow_outpost/dark)
"hV" = (
-/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,
+/obj/item/vehicle_module/tool/drill/diamonddrill,
/turf/simulated/mineral/floor/ignore_mapgen,
/area/awaymission/snow_outpost/dark)
"hW" = (
diff --git a/maps/away_missions/archive/spacebattle.dmm b/maps/away_missions/archive/spacebattle.dmm
index c4b40dc7013..741ad85307f 100644
--- a/maps/away_missions/archive/spacebattle.dmm
+++ b/maps/away_missions/archive/spacebattle.dmm
@@ -671,14 +671,14 @@
/obj/structure/closet/crate{
name = "Gold Crate"
},
-/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,
+/obj/item/vehicle_module/tool/hydraulic_clamp,
/turf/simulated/floor/plating,
/area/awaymission/spacebattle/cruiser)
"dQ" = (
/obj/structure/closet/crate{
name = "Gold Crate"
},
-/obj/item/mecha_parts/mecha_equipment/tool/drill,
+/obj/item/vehicle_module/tool/drill,
/turf/simulated/floor/plating,
/area/awaymission/spacebattle/cruiser)
"dR" = (
@@ -757,14 +757,14 @@
/obj/structure/closet/crate{
name = "Gold Crate"
},
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,
+/obj/item/vehicle_module/tool/syringe_gun,
/turf/simulated/floor/plating,
/area/awaymission/spacebattle/cruiser)
"ej" = (
/obj/structure/closet/crate{
name = "Gold Crate"
},
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
+/obj/item/vehicle_module/repair_droid,
/turf/simulated/floor/plating,
/area/awaymission/spacebattle/cruiser)
"el" = (
diff --git a/maps/endeavour/levels/deck3.dmm b/maps/endeavour/levels/deck3.dmm
index a89ec51fc48..ad1514cf5c7 100644
--- a/maps/endeavour/levels/deck3.dmm
+++ b/maps/endeavour/levels/deck3.dmm
@@ -22419,9 +22419,9 @@
"oOf" = (
/obj/machinery/camera/network/prison,
/obj/structure/table/reinforced,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase,
+/obj/item/vehicle_module/weapon/energy/phase,
+/obj/item/vehicle_module/weapon/energy/phase,
+/obj/item/vehicle_module/weapon/energy/phase,
/obj/machinery/air_alarm/east_mount,
/turf/simulated/floor/tiled,
/area/security/hanger)
@@ -32701,9 +32701,9 @@
/area/endeavour/hallway/d3aftmaint)
"vvV" = (
/obj/structure/table/reinforced,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/microtaser,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
+/obj/item/vehicle_module/weapon/energy/microtaser,
+/obj/item/vehicle_module/weapon/energy/taser,
+/obj/item/vehicle_module/weapon/energy/taser,
/turf/simulated/floor/tiled,
/area/security/hanger)
"vvX" = (
diff --git a/maps/minitest/levels/sector1.dmm b/maps/minitest/levels/sector1.dmm
index c1054be3158..13e74a6eb3e 100644
--- a/maps/minitest/levels/sector1.dmm
+++ b/maps/minitest/levels/sector1.dmm
@@ -382,7 +382,7 @@
/turf/simulated/floor/tiled,
/area/awaymission)
"bn" = (
-/obj/item/mecha_parts/mecha_equipment/tool/drill,
+/obj/item/vehicle_module/tool/drill,
/obj/item/storage/toolbox/mechanical,
/obj/structure/table/steel,
/turf/simulated/floor/tiled,
diff --git a/maps/rift/levels/rift-04-surface1.dmm b/maps/rift/levels/rift-04-surface1.dmm
index 0fc70cfd2c3..eee25e31cb8 100644
--- a/maps/rift/levels/rift-04-surface1.dmm
+++ b/maps/rift/levels/rift-04-surface1.dmm
@@ -20544,7 +20544,7 @@
/turf/simulated/floor/tiled,
/area/rnd/outpost/xenobiology/outpost_hallway)
"mSE" = (
-/obj/item/mecha_parts/part/durand_left_leg,
+/obj/item/vehicle_part/durand_left_leg,
/obj/item/cane/crutch,
/obj/item/pack/cardemon,
/obj/item/soap/syndie,
diff --git a/maps/rift/levels/rift-05-surface2.dmm b/maps/rift/levels/rift-05-surface2.dmm
index 181a1193981..b321e7b7fa6 100644
--- a/maps/rift/levels/rift-05-surface2.dmm
+++ b/maps/rift/levels/rift-05-surface2.dmm
@@ -3416,7 +3416,7 @@
/turf/simulated/wall/prepainted,
/area/maintenance/lower/medsec_maintenance)
"bXh" = (
-/obj/item/mecha_parts/part/durand_right_leg{
+/obj/item/vehicle_part/durand_right_leg{
name = "Priapic Monument"
},
/turf/simulated/floor/tiled/techfloor,
diff --git a/maps/sectors/piratebase_192/levels/piratebase_192.dmm b/maps/sectors/piratebase_192/levels/piratebase_192.dmm
index 893e20c6984..2d77de6e3ce 100644
--- a/maps/sectors/piratebase_192/levels/piratebase_192.dmm
+++ b/maps/sectors/piratebase_192/levels/piratebase_192.dmm
@@ -2551,7 +2551,7 @@
/area/piratebase/atmospherics)
"xA" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/rigged,
+/obj/item/vehicle_module/weapon/ballistic/scattershot/rigged,
/turf/simulated/floor/reinforced,
/area/piratebase/vault)
"xE" = (
@@ -2832,7 +2832,7 @@
/area/piratebase/construction)
"zU" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray/rigged,
+/obj/item/vehicle_module/weapon/energy/laser/xray/rigged,
/turf/simulated/floor/reinforced,
/area/piratebase/vault)
"zV" = (
@@ -5091,7 +5091,7 @@
/area/shuttle/pirate/bridge)
"Ty" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot,
+/obj/item/vehicle_module/weapon/ballistic/scattershot,
/turf/simulated/floor/reinforced,
/area/piratebase/vault)
"Tz" = (
diff --git a/maps/submaps/level_specific/class_d/Possesed_mech_cave.dmm b/maps/submaps/level_specific/class_d/Possesed_mech_cave.dmm
index f57aef4e5ad..2cdce55d361 100644
--- a/maps/submaps/level_specific/class_d/Possesed_mech_cave.dmm
+++ b/maps/submaps/level_specific/class_d/Possesed_mech_cave.dmm
@@ -95,7 +95,7 @@
/turf/simulated/floor/classd/indoors,
/area/class_d/explored/underground)
"tb" = (
-/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,
+/obj/item/vehicle_module/tool/drill/diamonddrill,
/obj/structure/table/rack,
/obj/item/gps/survival/on,
/turf/simulated/floor/classd/indoors,
diff --git a/maps/submaps/level_specific/class_h/AuxiliaryResearchFacility.dmm b/maps/submaps/level_specific/class_h/AuxiliaryResearchFacility.dmm
index 1cb457c79fc..2e4c9c70907 100644
--- a/maps/submaps/level_specific/class_h/AuxiliaryResearchFacility.dmm
+++ b/maps/submaps/level_specific/class_h/AuxiliaryResearchFacility.dmm
@@ -1617,7 +1617,7 @@
/turf/simulated/floor/tiled/white,
/area/class_h/POIs/AuxiliaryResearchFacility)
"KG" = (
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray,
+/obj/item/vehicle_module/weapon/energy/laser/xray,
/turf/simulated/floor/tiled/steel,
/area/class_h/POIs/AuxiliaryResearchFacility)
"KM" = (
@@ -1704,7 +1704,7 @@
/turf/simulated/floor/tiled/techfloor/grid,
/area/class_h/POIs/AuxiliaryResearchFacility)
"Mg" = (
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
+/obj/item/vehicle_module/repair_droid,
/obj/effect/floor_decal/corner/red/border,
/turf/simulated/floor/tiled/dark,
/area/class_h/POIs/AuxiliaryResearchFacility)
diff --git a/maps/submaps/level_specific/class_p/HeadscientistHQ.dmm b/maps/submaps/level_specific/class_p/HeadscientistHQ.dmm
index a402f16ecac..358ede97b89 100644
--- a/maps/submaps/level_specific/class_p/HeadscientistHQ.dmm
+++ b/maps/submaps/level_specific/class_p/HeadscientistHQ.dmm
@@ -299,7 +299,7 @@
/turf/simulated/shuttle/floor/yellow,
/area/submap/HeadscientistHQ)
"lP" = (
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun,
+/obj/item/vehicle_module/weapon/energy/medigun,
/turf/simulated/shuttle/floor/red,
/area/submap/HeadscientistHQ)
"lW" = (
@@ -523,7 +523,7 @@
/turf/simulated/shuttle/floor,
/area/submap/HeadscientistHQ)
"xA" = (
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
+/obj/item/vehicle_module/repair_droid,
/turf/template_noop,
/area/template_noop)
"xT" = (
@@ -1037,7 +1037,7 @@
/turf/simulated/shuttle/floor/purple,
/area/submap/HeadscientistHQ)
"Vz" = (
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot,
+/obj/item/vehicle_module/weapon/ballistic/scattershot,
/obj/effect/debris/cleanable/dirt,
/turf/simulated/shuttle/floor/red,
/area/submap/HeadscientistHQ)
diff --git a/maps/submaps/level_specific/debrisfield/oldshuttle.dmm b/maps/submaps/level_specific/debrisfield/oldshuttle.dmm
index 16e3edd673f..5f2aea5d88a 100644
--- a/maps/submaps/level_specific/debrisfield/oldshuttle.dmm
+++ b/maps/submaps/level_specific/debrisfield/oldshuttle.dmm
@@ -130,8 +130,8 @@
"aw" = (
/obj/effect/floor_decal/industrial/outline/red,
/obj/structure/closet/crate/secure/weapon,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase,
+/obj/item/vehicle_module/weapon/energy/phase,
+/obj/item/vehicle_module/weapon/energy/phase,
/obj/random/ammo_all,
/obj/random/ammo_all,
/obj/random/janusmodule,
diff --git a/maps/submaps/level_specific/virgo2/Musk.dmm b/maps/submaps/level_specific/virgo2/Musk.dmm
index 97b43f511f8..c10b99a674b 100644
--- a/maps/submaps/level_specific/virgo2/Musk.dmm
+++ b/maps/submaps/level_specific/virgo2/Musk.dmm
@@ -3,7 +3,7 @@
/turf/template_noop,
/area/template_noop)
"b" = (
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
+/obj/item/vehicle_module/tesla_energy_relay,
/turf/template_noop,
/area/template_noop)
"c" = (
@@ -11,7 +11,7 @@
/turf/template_noop,
/area/template_noop)
"d" = (
-/obj/item/mecha_parts/mecha_equipment/shocker,
+/obj/item/vehicle_module/shocker,
/turf/template_noop,
/area/template_noop)
diff --git a/maps/submaps/level_specific/virgo2/Rockybase.dmm b/maps/submaps/level_specific/virgo2/Rockybase.dmm
index 4f965fd4c30..6c68c4bfbb3 100644
--- a/maps/submaps/level_specific/virgo2/Rockybase.dmm
+++ b/maps/submaps/level_specific/virgo2/Rockybase.dmm
@@ -253,7 +253,7 @@
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"aU" = (
-/obj/item/mecha_parts/part/gygax_left_leg,
+/obj/item/vehicle_part/gygax_left_leg,
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"aV" = (
@@ -376,7 +376,7 @@
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"bs" = (
-/obj/item/mecha_parts/part/gygax_right_arm,
+/obj/item/vehicle_part/gygax_right_arm,
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"bt" = (
@@ -480,7 +480,7 @@
/turf/simulated/floor/plating/virgo2,
/area/submap/virgo2/Rockybase)
"bK" = (
-/obj/item/mecha_parts/part/gygax_torso,
+/obj/item/vehicle_part/gygax_torso,
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"bL" = (
@@ -575,7 +575,7 @@
/area/submap/virgo2/Rockybase)
"cc" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
+/obj/item/vehicle_module/repair_droid,
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"cd" = (
@@ -624,7 +624,7 @@
/turf/simulated/floor/plating/virgo2,
/area/submap/virgo2/Rockybase)
"cl" = (
-/obj/item/mecha_parts/part/gygax_armour,
+/obj/item/vehicle_part/gygax_armour,
/turf/simulated/floor/plating/virgo2,
/area/submap/virgo2/Rockybase)
"cm" = (
@@ -634,7 +634,7 @@
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"cn" = (
-/obj/item/mecha_parts/chassis/gygax,
+/obj/item/vehicle_chassis/gygax,
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"cp" = (
@@ -687,7 +687,7 @@
/turf/simulated/floor/plating/virgo2,
/area/submap/virgo2/Rockybase)
"cu" = (
-/obj/item/mecha_parts/part/gygax_right_leg,
+/obj/item/vehicle_part/gygax_right_leg,
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"cv" = (
@@ -695,7 +695,7 @@
dir = 4;
pixel_x = 11
},
-/obj/item/mecha_parts/part/gygax_left_arm,
+/obj/item/vehicle_part/gygax_left_arm,
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"cw" = (
@@ -741,7 +741,7 @@
/area/submap/virgo2/Rockybase)
"cF" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/part/gygax_head,
+/obj/item/vehicle_part/gygax_head,
/turf/simulated/floor/plating/virgo2,
/area/submap/virgo2/Rockybase)
"cG" = (
diff --git a/maps/submaps/mountains/Scave1.dmm b/maps/submaps/mountains/Scave1.dmm
index 77e3da04f9f..5fd45174285 100644
--- a/maps/submaps/mountains/Scave1.dmm
+++ b/maps/submaps/mountains/Scave1.dmm
@@ -49,7 +49,7 @@
/turf/simulated/mineral/floor/ignore_mapgen,
/area/submap/cave/Scave1)
"m" = (
-/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,
+/obj/item/vehicle_module/tool/drill/diamonddrill,
/turf/simulated/mineral/floor/ignore_mapgen,
/area/submap/cave/Scave1)
"n" = (
diff --git a/maps/submaps/mountains/cultmine.dmm b/maps/submaps/mountains/cultmine.dmm
index 625765cde0d..5cf06728d95 100644
--- a/maps/submaps/mountains/cultmine.dmm
+++ b/maps/submaps/mountains/cultmine.dmm
@@ -127,7 +127,7 @@
/turf/simulated/floor/tiled/steel_dirty,
/area/submap/cave/cultmine)
"ay" = (
-/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,
+/obj/item/vehicle_module/tool/hydraulic_clamp,
/obj/effect/debris/cleanable/dirt,
/turf/simulated/floor/tiled/steel_grid,
/area/submap/cave/cultmine)
@@ -265,7 +265,7 @@
/turf/simulated/wall,
/area/submap/cave/cultmine)
"ba" = (
-/obj/item/mecha_parts/mecha_equipment/generator,
+/obj/item/vehicle_module/generator,
/turf/simulated/floor/tiled/freezer,
/area/submap/cave/cultmine)
"bb" = (
@@ -409,7 +409,7 @@
/turf/simulated/floor/tiled/white,
/area/submap/cave/cultmine)
"bD" = (
-/obj/item/mecha_parts/mecha_equipment/tool/drill,
+/obj/item/vehicle_module/tool/drill,
/turf/simulated/floor/tiled/white,
/area/submap/cave/cultmine)
"bE" = (
diff --git a/maps/submaps/mountains/digsite.dmm b/maps/submaps/mountains/digsite.dmm
index 51312672398..37683e62cb3 100644
--- a/maps/submaps/mountains/digsite.dmm
+++ b/maps/submaps/mountains/digsite.dmm
@@ -83,7 +83,7 @@
/turf/simulated/mineral/floor/ignore_mapgen,
/area/submap/cave/digsite)
"B" = (
-/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,
+/obj/item/vehicle_module/tool/drill/diamonddrill,
/turf/simulated/mineral/floor/ignore_mapgen,
/area/submap/cave/digsite)
"D" = (
diff --git a/maps/submaps/wilderness/Musk.dmm b/maps/submaps/wilderness/Musk.dmm
index 97b43f511f8..c10b99a674b 100644
--- a/maps/submaps/wilderness/Musk.dmm
+++ b/maps/submaps/wilderness/Musk.dmm
@@ -3,7 +3,7 @@
/turf/template_noop,
/area/template_noop)
"b" = (
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
+/obj/item/vehicle_module/tesla_energy_relay,
/turf/template_noop,
/area/template_noop)
"c" = (
@@ -11,7 +11,7 @@
/turf/template_noop,
/area/template_noop)
"d" = (
-/obj/item/mecha_parts/mecha_equipment/shocker,
+/obj/item/vehicle_module/shocker,
/turf/template_noop,
/area/template_noop)
diff --git a/maps/submaps/wilderness/Rockybase.dmm b/maps/submaps/wilderness/Rockybase.dmm
index ac87998f613..557db9ae73f 100644
--- a/maps/submaps/wilderness/Rockybase.dmm
+++ b/maps/submaps/wilderness/Rockybase.dmm
@@ -352,7 +352,7 @@
/turf/simulated/floor/tiled/hydro,
/area/submap/Rockybase)
"bl" = (
-/obj/item/mecha_parts/part/gygax_left_leg,
+/obj/item/vehicle_part/gygax_left_leg,
/turf/simulated/floor/holofloor/lino,
/area/submap/Rockybase)
"bm" = (
@@ -557,7 +557,7 @@
/turf/simulated/floor/tiled,
/area/submap/Rockybase)
"bW" = (
-/obj/item/mecha_parts/part/gygax_right_arm,
+/obj/item/vehicle_part/gygax_right_arm,
/obj/effect/floor_decal/borderfloor,
/turf/simulated/floor/tiled,
/area/submap/Rockybase)
@@ -681,7 +681,7 @@
/turf/simulated/floor/tiled,
/area/submap/Rockybase)
"cs" = (
-/obj/item/mecha_parts/part/gygax_torso,
+/obj/item/vehicle_part/gygax_torso,
/turf/simulated/floor/tiled,
/area/submap/Rockybase)
"ct" = (
@@ -806,8 +806,8 @@
/area/submap/Rockybase)
"cP" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive,
+/obj/item/vehicle_module/repair_droid,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive,
/turf/simulated/floor/tiled,
/area/submap/Rockybase)
"cQ" = (
@@ -870,11 +870,11 @@
/turf/simulated/floor,
/area/submap/Rockybase)
"cZ" = (
-/obj/item/mecha_parts/part/gygax_armour,
+/obj/item/vehicle_part/gygax_armour,
/turf/simulated/floor,
/area/submap/Rockybase)
"da" = (
-/obj/item/mecha_parts/chassis/gygax,
+/obj/item/vehicle_chassis/gygax,
/turf/simulated/floor/tiled,
/area/submap/Rockybase)
"dc" = (
@@ -934,7 +934,7 @@
/turf/simulated/floor,
/area/submap/Rockybase)
"dj" = (
-/obj/item/mecha_parts/part/gygax_right_leg,
+/obj/item/vehicle_part/gygax_right_leg,
/obj/effect/floor_decal/corner/lime/border{
dir = 4
},
@@ -945,7 +945,7 @@
dir = 4;
pixel_x = 11
},
-/obj/item/mecha_parts/part/gygax_left_arm,
+/obj/item/vehicle_part/gygax_left_arm,
/turf/simulated/floor/tiled/hydro,
/area/submap/Rockybase)
"dl" = (
@@ -1012,7 +1012,7 @@
/area/submap/Rockybase)
"dw" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/part/gygax_head,
+/obj/item/vehicle_part/gygax_head,
/turf/simulated/floor/tiled,
/area/submap/Rockybase)
"dx" = (
diff --git a/maps/templates/admin/ert.dmm b/maps/templates/admin/ert.dmm
index 8c30b07b921..425c42ff428 100644
--- a/maps/templates/admin/ert.dmm
+++ b/maps/templates/admin/ert.dmm
@@ -706,14 +706,14 @@
/area/ship/ert/atmos)
"gw" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/tool/extinguisher,
-/obj/item/mecha_parts/mecha_equipment/tool/extinguisher,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/medanalyzer,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun,
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper,
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper,
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,
+/obj/item/vehicle_module/tool/extinguisher,
+/obj/item/vehicle_module/tool/extinguisher,
+/obj/item/vehicle_module/tool/powertool/medanalyzer,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/flare,
+/obj/item/vehicle_module/weapon/energy/medigun,
+/obj/item/vehicle_module/tool/sleeper,
+/obj/item/vehicle_module/tool/sleeper,
+/obj/item/vehicle_module/tool/syringe_gun,
/obj/effect/floor_decal/industrial/outline,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
@@ -747,8 +747,8 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse,
+/obj/item/vehicle_module/weapon/energy/pulse,
+/obj/item/vehicle_module/weapon/energy/pulse,
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
@@ -786,8 +786,8 @@
/area/ship/ert/engine)
"gW" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/shocker,
-/obj/item/mecha_parts/mecha_equipment/shocker,
+/obj/item/vehicle_module/shocker,
+/obj/item/vehicle_module/shocker,
/obj/machinery/power/apc/hyper/north_mount{
alarms_hidden = 1;
name = "VB APC - North";
@@ -826,23 +826,23 @@
/area/ship/ert/bridge)
"hj" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
+/obj/item/vehicle_module/anticcw_armor_booster,
+/obj/item/vehicle_module/anticcw_armor_booster,
+/obj/item/vehicle_module/antiproj_armor_booster,
+/obj/item/vehicle_module/antiproj_armor_booster,
/obj/machinery/fire_alarm/alarms_hidden/north_mount,
/obj/effect/floor_decal/industrial/outline/blue,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
"hk" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/combat_shield,
-/obj/item/mecha_parts/mecha_equipment/combat_shield,
-/obj/item/mecha_parts/mecha_equipment/omni_shield,
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
+/obj/item/vehicle_module/combat_shield,
+/obj/item/vehicle_module/combat_shield,
+/obj/item/vehicle_module/omni_shield,
+/obj/item/vehicle_module/repair_droid,
+/obj/item/vehicle_module/repair_droid,
+/obj/item/vehicle_module/repair_droid,
+/obj/item/vehicle_module/repair_droid,
/obj/effect/floor_decal/industrial/outline/blue,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
@@ -1149,11 +1149,11 @@
/area/ship/ert/med)
"kn" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/mortar,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive,
+/obj/item/vehicle_module/weapon/ballistic/lmg,
+/obj/item/vehicle_module/weapon/ballistic/lmg,
+/obj/item/vehicle_module/weapon/ballistic/mortar,
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
@@ -2230,25 +2230,25 @@
/area/ship/ert/med)
"qD" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/tool/cable_layer,
-/obj/item/mecha_parts/mecha_equipment/tool/rcd,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/cutter,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/prybar,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/screwdriver,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/welding,
-/obj/item/mecha_parts/mecha_equipment/speedboost,
+/obj/item/vehicle_module/tool/cable_layer,
+/obj/item/vehicle_module/tool/rcd,
+/obj/item/vehicle_module/tool/powertool,
+/obj/item/vehicle_module/tool/powertool/cutter,
+/obj/item/vehicle_module/tool/powertool/inflatables,
+/obj/item/vehicle_module/tool/powertool/prybar,
+/obj/item/vehicle_module/tool/powertool/screwdriver,
+/obj/item/vehicle_module/tool/powertool/welding,
+/obj/item/vehicle_module/speedboost,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
"qE" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang,
+/obj/item/vehicle_module/weapon/energy/taser,
+/obj/item/vehicle_module/weapon/energy/taser,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/clusterbang,
/obj/effect/floor_decal/industrial/outline/red,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/clusterbang,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
"qF" = (
@@ -2273,35 +2273,35 @@
/area/ship/ert/atmos)
"qS" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/gravcatapult,
-/obj/item/mecha_parts/mecha_equipment/wormhole_generator,
+/obj/item/vehicle_module/gravcatapult,
+/obj/item/vehicle_module/wormhole_generator,
/obj/effect/floor_decal/industrial/outline/grey,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
"qT" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack,
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack,
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack,
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack,
+/obj/item/vehicle_module/tool/jetpack,
+/obj/item/vehicle_module/tool/jetpack,
+/obj/item/vehicle_module/tool/jetpack,
+/obj/item/vehicle_module/tool/jetpack,
/obj/effect/floor_decal/industrial/outline/grey,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
"rp" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,
+/obj/item/vehicle_module/weapon/energy/ion,
+/obj/item/vehicle_module/weapon/energy/ion,
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
"rr" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray,
+/obj/item/vehicle_module/weapon/energy/laser/heavy,
+/obj/item/vehicle_module/weapon/energy/laser/heavy,
+/obj/item/vehicle_module/weapon/energy/laser,
+/obj/item/vehicle_module/weapon/energy/laser,
+/obj/item/vehicle_module/weapon/energy/laser/xray,
+/obj/item/vehicle_module/weapon/energy/laser/xray,
/obj/machinery/light,
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/techfloor,
@@ -3569,8 +3569,8 @@
/area/ship/ert/eng_storage)
"Bl" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/frag,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/frag,
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/techfloor,
/area/ship/ert/mech_bay)
diff --git a/maps/templates/admin/kk_mercship.dmm b/maps/templates/admin/kk_mercship.dmm
index 558686a433a..d5f115d2307 100644
--- a/maps/templates/admin/kk_mercship.dmm
+++ b/maps/templates/admin/kk_mercship.dmm
@@ -4166,8 +4166,8 @@
/area/ship/manta/engineering)
"ve" = (
/obj/structure/table/rack,
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/mortar,
+/obj/item/vehicle_module/anticcw_armor_booster,
+/obj/item/vehicle_module/weapon/ballistic/mortar,
/obj/effect/floor_decal/techfloor{
dir = 9
},
@@ -4195,9 +4195,9 @@
/area/ship/manta/mech_bay)
"vt" = (
/obj/structure/table/rack,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive,
-/obj/item/mecha_parts/mecha_equipment/omni_shield,
-/obj/item/mecha_parts/mecha_equipment/repair_droid,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive,
+/obj/item/vehicle_module/omni_shield,
+/obj/item/vehicle_module/repair_droid,
/obj/effect/floor_decal/techfloor{
dir = 5
},
@@ -6604,8 +6604,8 @@
/area/ship/manta/dock_port)
"Hg" = (
/obj/structure/table/rack,
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag,
+/obj/item/vehicle_module/antiproj_armor_booster,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/frag,
/obj/effect/floor_decal/techfloor{
dir = 10
},
@@ -6616,7 +6616,7 @@
/area/ship/manta/engine)
"Hl" = (
/obj/structure/table/rack,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,
+/obj/item/vehicle_module/weapon/energy/ion,
/obj/effect/floor_decal/techfloor,
/turf/simulated/floor/tiled/techfloor,
/area/ship/manta/mech_bay)
@@ -6636,7 +6636,7 @@
/area/ship/manta/barracks)
"Hr" = (
/obj/structure/table/rack,
-/obj/item/mecha_parts/mecha_equipment/shocker,
+/obj/item/vehicle_module/shocker,
/obj/effect/floor_decal/techfloor,
/obj/machinery/power/apc/hyper/south_mount{
alarms_hidden = 1;
@@ -6663,8 +6663,8 @@
/area/ship/manta/hallways_aft)
"Hz" = (
/obj/structure/table/rack,
-/obj/item/mecha_parts/mecha_equipment/tool/jetpack,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray,
+/obj/item/vehicle_module/tool/jetpack,
+/obj/item/vehicle_module/weapon/energy/laser/xray,
/obj/effect/floor_decal/techfloor{
dir = 6
},
diff --git a/maps/templates/admin/shipcave.dmm b/maps/templates/admin/shipcave.dmm
index cfcce26a9d3..4f705d11e46 100644
--- a/maps/templates/admin/shipcave.dmm
+++ b/maps/templates/admin/shipcave.dmm
@@ -1736,7 +1736,7 @@
/area/awaymission/shipcave/ship/guns)
"qI" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/rigged,
+/obj/item/vehicle_module/weapon/ballistic/scattershot/rigged,
/turf/simulated/floor/tiled/steel_dirty/dark,
/area/awaymission/shipcave/ship/mechbay)
"qM" = (
@@ -2647,7 +2647,7 @@
/area/awaymission/shipcave/ship/vault)
"Ap" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/rigged,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/rigged,
/turf/simulated/floor/tiled/steel_dirty/dark,
/area/awaymission/shipcave/ship/mechbay)
"Ar" = (
@@ -2739,7 +2739,7 @@
/area/awaymission/shipcave/ship/crew)
"Bs" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/rigged,
+/obj/item/vehicle_module/weapon/ballistic/lmg/rigged,
/turf/simulated/floor/tiled/steel_dirty/dark,
/area/awaymission/shipcave/ship/mechbay)
"Bu" = (
@@ -3594,7 +3594,7 @@
/area/awaymission/shipcave/ship/execution)
"Kg" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive/rigged,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/explosive/rigged,
/obj/machinery/light{
dir = 8;
light_range = 12
diff --git a/maps/templates/shuttles/overmaps/generic/curashuttle.dmm b/maps/templates/shuttles/overmaps/generic/curashuttle.dmm
index 8b757308b6b..75a34a7f793 100644
--- a/maps/templates/shuttles/overmaps/generic/curashuttle.dmm
+++ b/maps/templates/shuttles/overmaps/generic/curashuttle.dmm
@@ -1073,14 +1073,14 @@
/area/shuttle/curabitur/curashuttle/eng)
"cc" = (
/obj/structure/table/rack,
-/obj/item/mecha_parts/mecha_equipment/crisis_drone,
-/obj/item/mecha_parts/mecha_equipment/crisis_drone/rad,
-/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/medanalyzer,
-/obj/item/mecha_parts/mecha_equipment/tool/powertool/prybar,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
+/obj/item/vehicle_module/crisis_drone,
+/obj/item/vehicle_module/crisis_drone/rad,
+/obj/item/vehicle_module/tool/syringe_gun,
+/obj/item/vehicle_module/weapon/energy/medigun,
+/obj/item/vehicle_module/tool/powertool/inflatables,
+/obj/item/vehicle_module/tool/powertool/medanalyzer,
+/obj/item/vehicle_module/tool/powertool/prybar,
+/obj/item/vehicle_module/weapon/energy/taser,
/turf/simulated/floor/tiled/techfloor/grid,
/area/shuttle/curabitur/curashuttle/hangar)
"cd" = (
@@ -1153,11 +1153,11 @@
/area/shuttle/curabitur/curashuttle/hangar)
"cm" = (
/obj/structure/table/rack,
-/obj/item/mecha_parts/mecha_equipment/tool/passenger,
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper,
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper,
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper,
-/obj/item/mecha_parts/mecha_equipment/tool/sleeper,
+/obj/item/vehicle_module/tool/passenger,
+/obj/item/vehicle_module/tool/sleeper,
+/obj/item/vehicle_module/tool/sleeper,
+/obj/item/vehicle_module/tool/sleeper,
+/obj/item/vehicle_module/tool/sleeper,
/obj/machinery/atmospherics/component/unary/vent_scrubber/on{
dir = 8
},
diff --git a/maps/templates/shuttles/overmaps/generic/ghostship.dmm b/maps/templates/shuttles/overmaps/generic/ghostship.dmm
index cdb31a5ecbf..eb8b06d33c2 100644
--- a/maps/templates/shuttles/overmaps/generic/ghostship.dmm
+++ b/maps/templates/shuttles/overmaps/generic/ghostship.dmm
@@ -10477,8 +10477,8 @@
/area/ship/ghostship/hangar)
"Dr" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,
+/obj/item/vehicle_module/antiproj_armor_booster,
+/obj/item/vehicle_module/anticcw_armor_booster,
/turf/simulated/floor/reinforced,
/area/ship/ghostship/porthangar)
"Du" = (
@@ -10750,7 +10750,7 @@
/area/ship/ghostship/cabin2)
"IQ" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/clusterbang,
/turf/simulated/floor/reinforced,
/area/ship/ghostship/porthangar)
"IS" = (
@@ -10877,7 +10877,7 @@
/area/ship/ghostship/cabin5)
"Lp" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg,
+/obj/item/vehicle_module/weapon/ballistic/lmg,
/turf/simulated/floor/reinforced,
/area/ship/ghostship/porthangar)
"Md" = (
@@ -11010,8 +11010,8 @@
/area/ship/ghostship/hangar)
"Pi" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
-/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,
+/obj/item/vehicle_module/antiproj_armor_booster,
+/obj/item/vehicle_module/anticcw_armor_booster,
/turf/simulated/floor/reinforced,
/area/ship/ghostship/starboardhangar)
"Pt" = (
@@ -11055,7 +11055,7 @@
/area/ship/ghostship/hangar)
"Qg" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang,
+/obj/item/vehicle_module/weapon/ballistic/missile_rack/grenade/clusterbang,
/turf/simulated/floor/reinforced,
/area/ship/ghostship/starboardhangar)
"Qo" = (
@@ -11416,7 +11416,7 @@
/area/ship/ghostship/hangar)
"XG" = (
/obj/structure/table/standard,
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg,
+/obj/item/vehicle_module/weapon/ballistic/lmg,
/turf/simulated/floor/reinforced,
/area/ship/ghostship/starboardhangar)
"XH" = (
diff --git a/maps/tether/levels/surface3.dmm b/maps/tether/levels/surface3.dmm
index eb0294b8e0e..576b7b248c6 100644
--- a/maps/tether/levels/surface3.dmm
+++ b/maps/tether/levels/surface3.dmm
@@ -33790,7 +33790,7 @@
/area/hallway/lower/third_south)
"ueV" = (
/obj/structure/table/rack/steel,
-/obj/item/mecha_parts/part/durand_left_leg,
+/obj/item/vehicle_part/durand_left_leg,
/obj/item/cane/crutch,
/obj/item/pack/cardemon,
/obj/item/soap/syndie,
diff --git a/maps/triumph/levels/deck4.dmm b/maps/triumph/levels/deck4.dmm
index 0ba610e5273..3cf175d9fd5 100644
--- a/maps/triumph/levels/deck4.dmm
+++ b/maps/triumph/levels/deck4.dmm
@@ -6420,9 +6420,9 @@
/area/security/warden)
"epK" = (
/obj/structure/table/reinforced,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/microtaser,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
+/obj/item/vehicle_module/weapon/energy/microtaser,
+/obj/item/vehicle_module/weapon/energy/taser,
+/obj/item/vehicle_module/weapon/energy/taser,
/turf/simulated/floor/tiled,
/area/security/eva)
"eqO" = (
@@ -14903,9 +14903,9 @@
"kfc" = (
/obj/machinery/camera/network/prison,
/obj/structure/table/reinforced,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase,
-/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase,
+/obj/item/vehicle_module/weapon/energy/phase,
+/obj/item/vehicle_module/weapon/energy/phase,
+/obj/item/vehicle_module/weapon/energy/phase,
/turf/simulated/floor/tiled,
/area/security/eva)
"kfh" = (