diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm
index e4017e9ece..7768a929da 100644
--- a/code/datums/helper_datums/construction_datum.dm
+++ b/code/datums/helper_datums/construction_datum.dm
@@ -1,103 +1,111 @@
-#define FORWARD -1
-#define BACKWARD 1
-
-/datum/construction
- var/list/steps
- var/atom/holder
- var/result
- var/list/steps_desc
-
-/datum/construction/New(atom)
- ..()
- holder = atom
- if(!holder) //don't want this without a holder
- qdel(src)
- set_desc(steps.len)
- return
-
-/datum/construction/proc/next_step()
- steps.len--
- if(!steps.len)
- spawn_result()
- else
- set_desc(steps.len)
- return
-
-/datum/construction/proc/action(atom/used_atom,mob/user)
- return
-
-/datum/construction/proc/check_step(atom/used_atom,mob/user) //check last step only
- var/valid_step = is_right_key(used_atom)
- if(valid_step)
- if(custom_action(valid_step, used_atom, user))
- next_step()
- return 1
- return 0
-
-/datum/construction/proc/is_right_key(atom/used_atom) // returns current step num if used_atom is of the right type.
- var/list/L = steps[steps.len]
- if(istype(used_atom, L["key"]))
- return steps.len
- return 0
-
-/datum/construction/proc/custom_action(step, used_atom, user)
- return 1
-
-/datum/construction/proc/check_all_steps(atom/used_atom,mob/user) //check all steps, remove matching one.
- for(var/i=1;i<=steps.len;i++)
- var/list/L = steps[i];
- if(istype(used_atom, L["key"]))
- if(custom_action(i, used_atom, user))
- steps[i]=null;//stupid byond list from list removal...
- listclearnulls(steps);
- if(!steps.len)
- spawn_result()
- return 1
- return 0
-
-
-/datum/construction/proc/spawn_result()
- if(result)
- new result(get_turf(holder))
- qdel(holder)
- return
-
-/datum/construction/proc/set_desc(index as num)
- var/list/step = steps[index]
- holder.desc = step["desc"]
- return
-
-/datum/construction/reversible
- var/index
-
-/datum/construction/reversible/New(atom)
- ..()
- index = steps.len
- return
-
-/datum/construction/reversible/proc/update_index(diff as num)
- index+=diff
- if(index==0)
- spawn_result()
- else
- set_desc(index)
- return
-
-/datum/construction/reversible/is_right_key(atom/used_atom) // returns index step
- var/list/L = steps[index]
- if(istype(used_atom, L["key"]))
- return FORWARD //to the first step -> forward
- else if(L["backkey"] && istype(used_atom, L["backkey"]))
- return BACKWARD //to the last step -> backwards
- return 0
-
-/datum/construction/reversible/check_step(atom/used_atom,mob/user)
- var/diff = is_right_key(used_atom)
- if(diff)
- if(custom_action(index, diff, used_atom, user))
- update_index(diff)
- return 1
- return 0
-
-/datum/construction/reversible/custom_action(index, diff, used_atom, user)
- return 1
+#define FORWARD -1
+#define BACKWARD 1
+
+/datum/construction
+ var/list/steps
+ var/atom/holder
+ var/result
+ var/list/steps_desc
+
+/datum/construction/New(atom)
+ ..()
+ holder = atom
+ if(!holder) //don't want this without a holder
+ qdel(src)
+ set_desc(steps.len)
+ return
+
+/datum/construction/proc/next_step()
+ steps.len--
+ if(!steps.len)
+ spawn_result()
+ else
+ set_desc(steps.len)
+ return
+
+/datum/construction/proc/action(atom/used_atom,mob/user)
+ return
+
+/datum/construction/proc/check_step(atom/used_atom,mob/user) //check last step only
+ var/valid_step = is_right_key(used_atom)
+ if(valid_step)
+ if(custom_action(valid_step, used_atom, user))
+ next_step()
+ return 1
+ return 0
+
+/datum/construction/proc/is_right_key(atom/used_atom) // returns current step num if used_atom is of the right type.
+ var/list/L = steps[steps.len]
+ if(istype(used_atom, L["key"]))
+ return steps.len
+ return 0
+
+/datum/construction/proc/custom_action(step, used_atom, user)
+ return 1
+
+/datum/construction/proc/check_all_steps(atom/used_atom,mob/user) //check all steps, remove matching one.
+ for(var/i=1;i<=steps.len;i++)
+ var/list/L = steps[i];
+ if(istype(used_atom, L["key"]))
+ if(custom_action(i, used_atom, user))
+ steps[i]=null;//stupid byond list from list removal...
+ listclearnulls(steps);
+ if(!steps.len)
+ spawn_result()
+ return 1
+ return 0
+
+
+/datum/construction/proc/spawn_result()
+ if(result)
+ new result(get_turf(holder))
+ qdel(holder)
+ return
+
+/datum/construction/proc/spawn_mecha_result()
+ if(result)
+ var/obj/mecha/m = new result(get_turf(holder))
+ var/obj/item/oldcell = locate (/obj/item/stock_parts/cell) in m
+ QDEL_NULL(oldcell)
+ m.CheckParts(holder.contents)
+ QDEL_NULL(holder)
+
+/datum/construction/proc/set_desc(index as num)
+ var/list/step = steps[index]
+ holder.desc = step["desc"]
+ return
+
+/datum/construction/reversible
+ var/index
+
+/datum/construction/reversible/New(atom)
+ ..()
+ index = steps.len
+ return
+
+/datum/construction/reversible/proc/update_index(diff as num)
+ index+=diff
+ if(index==0)
+ spawn_result()
+ else
+ set_desc(index)
+ return
+
+/datum/construction/reversible/is_right_key(atom/used_atom) // returns index step
+ var/list/L = steps[index]
+ if(istype(used_atom, L["key"]))
+ return FORWARD //to the first step -> forward
+ else if(L["backkey"] && istype(used_atom, L["backkey"]))
+ return BACKWARD //to the last step -> backwards
+ return 0
+
+/datum/construction/reversible/check_step(atom/used_atom,mob/user)
+ var/diff = is_right_key(used_atom)
+ if(diff)
+ if(custom_action(index, diff, used_atom, user))
+ update_index(diff)
+ return 1
+ return 0
+
+/datum/construction/reversible/custom_action(index, diff, used_atom, user)
+ return 1
diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm
index 4e8e42e10f..626c405284 100644
--- a/code/game/mecha/combat/combat.dm
+++ b/code/game/mecha/combat/combat.dm
@@ -1,37 +1,26 @@
-/obj/mecha/combat
- force = 30
- internal_damage_threshold = 50
- armor = list(melee = 30, bullet = 30, laser = 15, energy = 20, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 100)
-
-/obj/mecha/combat/CheckParts(list/parts_list)
- ..()
- var/obj/item/stock_parts/capacitor/C = locate() in contents
- var/obj/item/stock_parts/scanning_module/SM = locate() in contents
- step_energy_drain = 20 - (5 * SM.rating) //10 is normal, so on lowest part its worse, on second its ok and on higher its real good up to 0 on best
- armor["energy"] += (C.rating * 10) //Each level of capacitor protects the mech against emp by 10%
- qdel(C)
- qdel(SM)
-
-/obj/mecha/combat/moved_inside(mob/living/carbon/human/H)
- if(..())
- if(H.client && H.client.mouse_pointer_icon == initial(H.client.mouse_pointer_icon))
- H.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi'
- return 1
- else
- return 0
-
-/obj/mecha/combat/mmi_moved_inside(obj/item/device/mmi/mmi_as_oc,mob/user)
- if(..())
- if(occupant.client && occupant.client.mouse_pointer_icon == initial(occupant.client.mouse_pointer_icon))
- occupant.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi'
- return 1
- else
- return 0
-
-
-/obj/mecha/combat/go_out()
- if(occupant && occupant.client && occupant.client.mouse_pointer_icon == 'icons/mecha/mecha_mouse.dmi')
- occupant.client.mouse_pointer_icon = initial(occupant.client.mouse_pointer_icon)
- ..()
-
-
+/obj/mecha/combat
+ force = 30
+ internal_damage_threshold = 50
+ armor = list(melee = 30, bullet = 30, laser = 15, energy = 20, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 100)
+
+/obj/mecha/combat/moved_inside(mob/living/carbon/human/H)
+ if(..())
+ if(H.client && H.client.mouse_pointer_icon == initial(H.client.mouse_pointer_icon))
+ H.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi'
+ return 1
+ else
+ return 0
+
+/obj/mecha/combat/mmi_moved_inside(obj/item/device/mmi/mmi_as_oc,mob/user)
+ if(..())
+ if(occupant.client && occupant.client.mouse_pointer_icon == initial(occupant.client.mouse_pointer_icon))
+ occupant.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi'
+ return 1
+ else
+ return 0
+
+
+/obj/mecha/combat/go_out()
+ if(occupant && occupant.client && occupant.client.mouse_pointer_icon == 'icons/mecha/mecha_mouse.dmi')
+ occupant.client.mouse_pointer_icon = initial(occupant.client.mouse_pointer_icon)
+ ..()
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index ed2a1ff82a..9b27e1e7c6 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -202,6 +202,19 @@
GLOB.mechas_list -= src //global mech list
return ..()
+/obj/mecha/CheckParts(list/parts_list)
+ ..()
+ var/obj/item/C = locate(/obj/item/stock_parts/cell) in contents
+ cell = C
+ var/obj/item/stock_parts/scanning_module/SM = locate() in contents
+ var/obj/item/stock_parts/capacitor/CP = locate() in contents
+ if(SM)
+ step_energy_drain = 20 - (5 * SM.rating) //10 is normal, so on lowest part its worse, on second its ok and on higher its real good up to 0 on best
+ qdel(SM)
+ if(CP)
+ armor["energy"] += (CP.rating * 10) //Each level of capacitor protects the mech against emp by 10%
+ qdel(CP)
+
////////////////////////
////// Helpers /////////
////////////////////////
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 24c1c513c3..27aeea4c09 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -102,8 +102,11 @@
/datum/construction/reversible/mecha/ripley
- result = "/obj/mecha/working/ripley"
+ result = /obj/mecha/working/ripley
steps = list(
+ //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
+ list("desc"="You shouldn't be able to see this."),
+
//1
list("key"=/obj/item/weldingtool,
"backkey"=/obj/item/wrench,
@@ -127,38 +130,47 @@
//6
list("key"=/obj/item/stack/sheet/metal,
"backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
+ "desc"="The power cell is secured."),
//7
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
+ "desc"="The power cell is installed."),
//8
- list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
+ list("key"=/obj/item/stock_parts/cell,
"backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
+ "desc"="Peripherals control module is secured."),
//9
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
+ "desc"="Peripherals control module is installed."),
//10
+ list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
+ "backkey"=/obj/item/screwdriver,
+ "desc"="Central control module is secured."),
+ //11
+ list("key"=/obj/item/screwdriver,
+ "backkey"=/obj/item/crowbar,
+ "desc"="Central control module is installed."),
+ //12
list("key"=/obj/item/circuitboard/mecha/ripley/main,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is adjusted."),
- //11
+ //13
list("key"=/obj/item/wirecutters,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is added."),
- //12
+ //14
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/screwdriver,
"desc"="The hydraulic systems are active."),
- //13
+ //15
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/wrench,
"desc"="The hydraulic systems are connected."),
- //14
+ //16
list("key"=/obj/item/wrench,
"desc"="The hydraulic systems are disconnected.")
+
)
/datum/construction/reversible/mecha/ripley/action(atom/used_atom,mob/user)
@@ -170,24 +182,24 @@
//TODO: better messages.
switch(index)
- if(14)
+ if(17)
user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "ripley1"
- if(13)
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "ripley2"
else
user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "ripley0"
- if(12)
+ if(15)
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "ripley3"
else
user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "ripley1"
- if(11)
+ if(14)
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "ripley4"
@@ -196,7 +208,7 @@
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(13)
if(diff==FORWARD)
user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
@@ -204,7 +216,7 @@
else
user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "ripley3"
- if(9)
+ if(12)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "ripley6"
@@ -212,7 +224,7 @@
user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
holder.icon_state = "ripley4"
- if(8)
+ if(11)
if(diff==FORWARD)
user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
@@ -220,7 +232,7 @@
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "ripley5"
- if(7)
+ if(10)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
holder.icon_state = "ripley8"
@@ -228,54 +240,73 @@
user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
holder.icon_state = "ripley6"
- if(6)
+ if(9)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
+ var/obj/item/I = used_atom
+ user.transferItemToLoc(I, holder, TRUE)
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(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ holder.icon_state = "ripley10"
+ else
+ user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
+ var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
+ I.forceMove(holder.drop_location())
+ holder.icon_state = "ripley8"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ holder.icon_state = "ripley11"
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ holder.icon_state = "ripley9"
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "ripley10"
+ holder.icon_state = "ripley12"
else
user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
MS.amount = 5
- holder.icon_state = "ripley8"
- if(4)
+ holder.icon_state = "ripley10"
+ if(5)
if(diff==FORWARD)
user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "ripley11"
+ holder.icon_state = "ripley13"
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "ripley9"
- if(3)
+ holder.icon_state = "ripley11"
+ if(4)
if(diff==FORWARD)
user.visible_message("[user] installs the external reinforced armor layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
- holder.icon_state = "ripley12"
+ holder.icon_state = "ripley14"
else
user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "ripley10"
- if(2)
+ holder.icon_state = "ripley12"
+ if(3)
if(diff==FORWARD)
user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
- holder.icon_state = "ripley13"
+ holder.icon_state = "ripley15"
else
user.visible_message("[user] pries external armor layer from the [holder].", "You pry external armor layer from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
- holder.icon_state = "ripley11"
- if(1)
+ holder.icon_state = "ripley13"
+ if(2)
if(diff==FORWARD)
user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
+ spawn_mecha_result()
else
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "ripley12"
+ holder.icon_state = "ripley14"
return 1
-/datum/construction/reversible/mecha/ripley/spawn_result()
+/datum/construction/reversible/mecha/ripley/spawn_mecha_result()
..()
SSblackbox.inc("mecha_ripley_created",1)
return
@@ -311,8 +342,11 @@
/datum/construction/reversible/mecha/gygax
- result = "/obj/mecha/combat/gygax"
+ result = /obj/mecha/combat/gygax
steps = list(
+ //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
+ list("desc"="You shouldn't be able to see this."),
+
//1
list("key"=/obj/item/weldingtool,
"backkey"=/obj/item/wrench,
@@ -336,60 +370,68 @@
//6
list("key"=/obj/item/stack/sheet/metal,
"backkey"=/obj/item/screwdriver,
- "desc"="Advanced capacitor is secured."),
+ "desc"="The power cell is secured."),
//7
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Advanced capacitor is installed."),
+ "desc"="The power cell is installed."),
//8
- list("key"=/obj/item/stock_parts/capacitor,
+ list("key"=/obj/item/stock_parts/cell,
"backkey"=/obj/item/screwdriver,
- "desc"="Advanced scanner module is secured."),
+ "desc"="Advanced capacitor is secured."),
//9
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Advanced scanner module is installed."),
+ "desc"="Advanced capacitor is installed."),
//10
- list("key"=/obj/item/stock_parts/scanning_module,
+ list("key"=/obj/item/stock_parts/capacitor,
"backkey"=/obj/item/screwdriver,
- "desc"="Weapon control module is secured."),
+ "desc"="Advanced scanner module is secured."),
//11
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Weapon control module is installed."),
+ "desc"="Advanced scanner module is installed."),
//12
- list("key"=/obj/item/circuitboard/mecha/gygax/targeting,
+ list("key"=/obj/item/stock_parts/scanning_module,
"backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
+ "desc"="Weapon control module is secured."),
//13
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
+ "desc"="Weapon control module is installed."),
//14
- list("key"=/obj/item/circuitboard/mecha/gygax/peripherals,
+ list("key"=/obj/item/circuitboard/mecha/gygax/targeting,
"backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
+ "desc"="Peripherals control module is secured."),
//15
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
+ "desc"="Peripherals control module is installed."),
//16
+ list("key"=/obj/item/circuitboard/mecha/gygax/peripherals,
+ "backkey"=/obj/item/screwdriver,
+ "desc"="Central control module is secured."),
+ //17
+ list("key"=/obj/item/screwdriver,
+ "backkey"=/obj/item/crowbar,
+ "desc"="Central control module is installed."),
+ //18
list("key"=/obj/item/circuitboard/mecha/gygax/main,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is adjusted."),
- //17
+ //19
list("key"=/obj/item/wirecutters,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is added."),
- //18
+ //20
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/screwdriver,
"desc"="The hydraulic systems are active."),
- //19
+ //21
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/wrench,
"desc"="The hydraulic systems are connected."),
- //20
+ //22
list("key"=/obj/item/wrench,
"desc"="The hydraulic systems are disconnected.")
)
@@ -403,24 +445,24 @@
//TODO: better messages.
switch(index)
- if(20)
+ if(23)
user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "gygax1"
- if(19)
+ if(22)
if(diff==FORWARD)
user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "gygax2"
else
user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "gygax0"
- if(18)
+ if(21)
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "gygax3"
else
user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "gygax1"
- if(17)
+ if(20)
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "gygax4"
@@ -429,7 +471,7 @@
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(19)
if(diff==FORWARD)
user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
@@ -437,7 +479,7 @@
else
user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "gygax3"
- if(15)
+ if(18)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "gygax6"
@@ -445,7 +487,7 @@
user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/circuitboard/mecha/gygax/main(get_turf(holder))
holder.icon_state = "gygax4"
- if(14)
+ if(17)
if(diff==FORWARD)
user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
@@ -453,7 +495,7 @@
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "gygax5"
- if(13)
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
holder.icon_state = "gygax8"
@@ -461,7 +503,7 @@
user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/circuitboard/mecha/gygax/peripherals(get_turf(holder))
holder.icon_state = "gygax6"
- if(12)
+ if(15)
if(diff==FORWARD)
user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
qdel(used_atom)
@@ -469,7 +511,7 @@
else
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
holder.icon_state = "gygax7"
- if(11)
+ if(14)
if(diff==FORWARD)
user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
holder.icon_state = "gygax10"
@@ -477,7 +519,7 @@
user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
new /obj/item/circuitboard/mecha/gygax/targeting(get_turf(holder))
holder.icon_state = "gygax8"
- if(10)
+ if(13)
if(diff==FORWARD)
user.visible_message("[user] installs scanner module to the [holder].", "You install scanner module to the [holder].")
var/obj/item/I = used_atom
@@ -486,7 +528,7 @@
else
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
holder.icon_state = "gygax9"
- if(9)
+ if(12)
if(diff==FORWARD)
user.visible_message("[user] secures the advanced scanner module.", "You secure the scanner module.")
holder.icon_state = "gygax12"
@@ -495,7 +537,7 @@
var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder
I.loc = get_turf(holder)
holder.icon_state = "gygax10"
- if(8)
+ if(11)
if(diff==FORWARD)
user.visible_message("[user] installs capacitor to the [holder].", "You install capacitor to the [holder].")
var/obj/item/I = used_atom
@@ -504,7 +546,7 @@
else
user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.")
holder.icon_state = "gygax11"
- if(7)
+ if(10)
if(diff==FORWARD)
user.visible_message("[user] secures the capacitor.", "You secure the capacitor.")
holder.icon_state = "gygax14"
@@ -513,57 +555,74 @@
var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder
I.loc = get_turf(holder)
holder.icon_state = "gygax12"
- if(6)
+ if(9)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
+ var/obj/item/I = used_atom
+ user.transferItemToLoc(I, holder, TRUE)
holder.icon_state = "gygax15"
else
user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.")
holder.icon_state = "gygax13"
- if(5)
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ holder.icon_state = "gygax16"
+ else
+ user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
+ var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
+ I.forceMove(holder.drop_location())
+ holder.icon_state = "gygax14"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ holder.icon_state = "gygax17"
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ holder.icon_state = "gygax15"
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "gygax16"
+ holder.icon_state = "gygax18"
else
user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
MS.amount = 5
- holder.icon_state = "gygax14"
- if(4)
+ holder.icon_state = "gygax16"
+ if(5)
if(diff==FORWARD)
user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "gygax17"
+ holder.icon_state = "gygax19"
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "gygax15"
- if(3)
+ holder.icon_state = "gygax17"
+ if(4)
if(diff==FORWARD)
user.visible_message("[user] installs Gygax Armor Plates to the [holder].", "You install Gygax Armor Plates to the [holder].")
qdel(used_atom)
- holder.icon_state = "gygax18"
+ holder.icon_state = "gygax20"
else
user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "gygax16"
- if(2)
+ holder.icon_state = "gygax18"
+ if(3)
if(diff==FORWARD)
user.visible_message("[user] secures Gygax Armor Plates.", "You secure Gygax Armor Plates.")
- holder.icon_state = "gygax19"
+ holder.icon_state = "gygax21"
else
user.visible_message("[user] pries Gygax Armor Plates from the [holder].", "You pry Gygax Armor Plates from the [holder].")
new /obj/item/mecha_parts/part/gygax_armor(get_turf(holder))
- holder.icon_state = "gygax17"
- if(1)
+ holder.icon_state = "gygax19"
+ if(2)
if(diff==FORWARD)
user.visible_message("[user] welds Gygax Armor Plates to the [holder].", "You weld Gygax Armor Plates to the [holder].")
+ spawn_mecha_result()
else
user.visible_message("[user] unfastens Gygax Armor Plates.", "You unfasten Gygax Armor Plates.")
- holder.icon_state = "gygax18"
+ holder.icon_state = "gygax20"
return 1
-/datum/construction/reversible/mecha/gygax/spawn_result()
- var/obj/mecha/combat/gygax/M = new result(get_turf(holder))
- M.CheckParts(holder.contents)
- qdel(holder)
+/datum/construction/reversible/mecha/gygax/spawn_mecha_result()
+ ..()
SSblackbox.inc("mecha_gygax_created",1)
return
@@ -596,13 +655,16 @@
/datum/construction/reversible/mecha/firefighter
- result = "/obj/mecha/working/ripley/firefighter"
+ result = /obj/mecha/working/ripley/firefighter
steps = list(
- //1
- list("key"=/obj/item/weldingtool,
+ //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
+ list("desc"="You shouldn't be able to see this."),
+
+ //1
+ list("key"=/obj/item/weldingtool,
"backkey"=/obj/item/wrench,
"desc"="External armor is wrenched."),
- //2
+ //2
list("key"=/obj/item/wrench,
"backkey"=/obj/item/crowbar,
"desc"="External armor is installed."),
@@ -622,40 +684,47 @@
list("key"=/obj/item/wrench,
"backkey"=/obj/item/crowbar,
"desc"="Internal armor is installed."),
-
//7
list("key"=/obj/item/stack/sheet/plasteel,
"backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
+ "desc"="The power cell is secured."),
//8
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
+ "desc"="The power cell is installed."),
//9
- list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
+ list("key"=/obj/item/stock_parts/cell,
"backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
+ "desc"="Peripherals control module is secured."),
//10
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
+ "desc"="Peripherals control module is installed."),
//11
+ list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
+ "backkey"=/obj/item/screwdriver,
+ "desc"="Central control module is secured."),
+ //12
+ list("key"=/obj/item/screwdriver,
+ "backkey"=/obj/item/crowbar,
+ "desc"="Central control module is installed."),
+ //13
list("key"=/obj/item/circuitboard/mecha/ripley/main,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is adjusted."),
- //12
+ //14
list("key"=/obj/item/wirecutters,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is added."),
- //13
+ //15
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/screwdriver,
"desc"="The hydraulic systems are active."),
- //14
+ //16
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/wrench,
"desc"="The hydraulic systems are connected."),
- //15
+ //17
list("key"=/obj/item/wrench,
"desc"="The hydraulic systems are disconnected.")
)
@@ -669,24 +738,24 @@
//TODO: better messages.
switch(index)
- if(15)
+ if(18)
user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "fireripley1"
- if(14)
+ if(17)
if(diff==FORWARD)
user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "fireripley2"
else
user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "fireripley0"
- if(13)
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "fireripley3"
else
user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "fireripley1"
- if(12)
+ if(15)
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "fireripley4"
@@ -695,7 +764,7 @@
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(14)
if(diff==FORWARD)
user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
@@ -703,7 +772,7 @@
else
user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "fireripley3"
- if(10)
+ if(13)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "fireripley6"
@@ -711,7 +780,7 @@
user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
holder.icon_state = "fireripley4"
- if(9)
+ if(12)
if(diff==FORWARD)
user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
@@ -719,7 +788,7 @@
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "fireripley5"
- if(8)
+ if(11)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
holder.icon_state = "fireripley8"
@@ -727,64 +796,82 @@
user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
holder.icon_state = "fireripley6"
- if(7)
+ if(10)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
+ var/obj/item/I = used_atom
+ user.transferItemToLoc(I, holder, TRUE)
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(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ holder.icon_state = "fireripley10"
+ else
+ user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
+ var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
+ I.forceMove(holder.drop_location())
+ holder.icon_state = "fireripley8"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ holder.icon_state = "fireripley11"
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ holder.icon_state = "fireripley9"
+ if(7)
if(diff==FORWARD)
user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "fireripley10"
+ holder.icon_state = "fireripley12"
else
user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
- holder.icon_state = "fireripley8"
- if(5)
+ holder.icon_state = "fireripley10"
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "fireripley11"
+ holder.icon_state = "fireripley13"
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "fireripley9"
- if(4)
+ holder.icon_state = "fireripley11"
+ if(5)
if(diff==FORWARD)
user.visible_message("[user] starts to install the external armor layer to the [holder].", "You install the external armor layer to the [holder].")
- holder.icon_state = "fireripley12"
+ holder.icon_state = "fireripley14"
else
user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "fireripley10"
- if(3)
+ holder.icon_state = "fireripley12"
+ if(4)
if(diff==FORWARD)
user.visible_message("[user] installs the external reinforced armor layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
- holder.icon_state = "fireripley13"
+ holder.icon_state = "fireripley15"
else
user.visible_message("[user] removes the external armor from the [holder].", "You remove the external armor from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
- holder.icon_state = "fireripley11"
- if(2)
+ holder.icon_state = "fireripley13"
+ if(3)
if(diff==FORWARD)
user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
- holder.icon_state = "fireripley14"
+ holder.icon_state = "fireripley16"
else
user.visible_message("[user] pries external armor layer from the [holder].", "You pry external armor layer from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
- holder.icon_state = "fireripley12"
- if(1)
+ holder.icon_state = "fireripley14"
+ if(2)
if(diff==FORWARD)
user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
+ spawn_mecha_result()
else
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "fireripley13"
+ holder.icon_state = "fireripley15"
return 1
-/datum/construction/reversible/mecha/firefighter/spawn_result()
+/datum/construction/reversible/mecha/firefighter/spawn_mecha_result()
..()
SSblackbox.inc("mecha_firefighter_created",1)
return
@@ -818,19 +905,23 @@
/datum/construction/mecha/honker
- result = "/obj/mecha/combat/honker"
- steps = list(list("key"=/obj/item/bikehorn), //1
+ result = /obj/mecha/combat/honker
+ steps = list(
+ list("desc"="You shouldn't be able to see this."), //0, note steps in the construction path are +1 to the ones here
+ list("key"=/obj/item/bikehorn), //1
list("key"=/obj/item/clothing/shoes/clown_shoes), //2
list("key"=/obj/item/bikehorn), //3
list("key"=/obj/item/clothing/mask/gas/clown_hat), //4
list("key"=/obj/item/bikehorn), //5
- list("key"=/obj/item/circuitboard/mecha/honker/targeting), //6
+ list("key"=/obj/item/stock_parts/cell), //6
list("key"=/obj/item/bikehorn), //7
- list("key"=/obj/item/circuitboard/mecha/honker/peripherals), //8
+ list("key"=/obj/item/circuitboard/mecha/honker/targeting), //8
list("key"=/obj/item/bikehorn), //9
- list("key"=/obj/item/circuitboard/mecha/honker/main), //10
+ list("key"=/obj/item/circuitboard/mecha/honker/peripherals), //10
list("key"=/obj/item/bikehorn), //11
- )
+ list("key"=/obj/item/circuitboard/mecha/honker/main), //12
+ list("key"=/obj/item/bikehorn), //13
+ )
/datum/construction/mecha/honker/action(atom/used_atom,mob/user)
return check_step(used_atom,user)
@@ -842,27 +933,34 @@
if(istype(used_atom, /obj/item/bikehorn))
playsound(holder, 'sound/items/bikehorn.ogg', 50, 1)
user.visible_message("HONK!")
+ if(step==2)
+ spawn_mecha_result()
+
//TODO: better messages.
switch(step)
- if(10)
+ if(13)
user.visible_message("[user] installs the central control module into the [holder].", "You install the central control module into the [holder].")
qdel(used_atom)
- if(8)
+ if(11)
user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
- if(6)
+ if(9)
user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
qdel(used_atom)
- if(4)
+ if(7)
+ user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
+ var/obj/item/I = used_atom
+ user.transferItemToLoc(I, holder, TRUE)
+ if(5)
user.visible_message("[user] puts clown wig and mask on the [holder].", "You put clown wig and mask on the [holder].")
qdel(used_atom)
- if(2)
+ if(3)
user.visible_message("[user] puts clown boots on the [holder].", "You put clown boots on the [holder].")
qdel(used_atom)
return 1
-/datum/construction/mecha/honker/spawn_result()
+/datum/construction/mecha/honker/spawn_mecha_result()
..()
SSblackbox.inc("mecha_honker_created",1)
return
@@ -895,10 +993,13 @@
return
/datum/construction/reversible/mecha/durand
- result = "/obj/mecha/combat/durand"
+ result = /obj/mecha/combat/durand
steps = list(
- //1
- list("key"=/obj/item/weldingtool,
+ //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
+ list("desc"="You shouldn't be able to see this."),
+
+ //1
+ list("key"=/obj/item/weldingtool,
"backkey"=/obj/item/wrench,
"desc"="External armor is wrenched."),
//2
@@ -920,60 +1021,68 @@
//6
list("key"=/obj/item/stack/sheet/metal,
"backkey"=/obj/item/screwdriver,
- "desc"="Super capacitor is secured."),
+ "desc"="The power cell is secured."),
//7
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Super capacitor is installed."),
+ "desc"="The power cell is installed."),
//8
- list("key"=/obj/item/stock_parts/capacitor,
+ list("key"=/obj/item/stock_parts/cell,
"backkey"=/obj/item/screwdriver,
- "desc"="Phasic scanner module is secured."),
+ "desc"="Super capacitor is secured."),
//9
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Phasic scanner module is installed."),
+ "desc"="Super capacitor is installed."),
//10
- list("key"=/obj/item/stock_parts/scanning_module,
+ list("key"=/obj/item/stock_parts/capacitor,
"backkey"=/obj/item/screwdriver,
- "desc"="Weapon control module is secured."),
+ "desc"="Phasic scanner module is secured."),
//11
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Weapon control module is installed."),
+ "desc"="Phasic scanner module is installed."),
//12
- list("key"=/obj/item/circuitboard/mecha/durand/targeting,
+ list("key"=/obj/item/stock_parts/scanning_module,
"backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
+ "desc"="Weapon control module is secured."),
//13
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
+ "desc"="Weapon control module is installed."),
//14
- list("key"=/obj/item/circuitboard/mecha/durand/peripherals,
+ list("key"=/obj/item/circuitboard/mecha/durand/targeting,
"backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
+ "desc"="Peripherals control module is secured."),
//15
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
+ "desc"="Peripherals control module is installed."),
//16
+ list("key"=/obj/item/circuitboard/mecha/durand/peripherals,
+ "backkey"=/obj/item/screwdriver,
+ "desc"="Central control module is secured."),
+ //17
+ list("key"=/obj/item/screwdriver,
+ "backkey"=/obj/item/crowbar,
+ "desc"="Central control module is installed."),
+ //18
list("key"=/obj/item/circuitboard/mecha/durand/main,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is adjusted."),
- //17
+ //19
list("key"=/obj/item/wirecutters,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is added."),
- //18
+ //20
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/screwdriver,
"desc"="The hydraulic systems are active."),
- //19
+ //21
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/wrench,
"desc"="The hydraulic systems are connected."),
- //20
+ //22
list("key"=/obj/item/wrench,
"desc"="The hydraulic systems are disconnected.")
)
@@ -988,24 +1097,24 @@
//TODO: better messages.
switch(index)
- if(20)
+ if(23)
user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "durand1"
- if(19)
+ if(22)
if(diff==FORWARD)
user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "durand2"
else
user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "durand0"
- if(18)
+ if(21)
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "durand3"
else
user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "durand1"
- if(17)
+ if(20)
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "durand4"
@@ -1014,7 +1123,7 @@
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(19)
if(diff==FORWARD)
user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
@@ -1022,7 +1131,7 @@
else
user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "durand3"
- if(15)
+ if(18)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "durand6"
@@ -1030,7 +1139,7 @@
user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/circuitboard/mecha/durand/main(get_turf(holder))
holder.icon_state = "durand4"
- if(14)
+ if(17)
if(diff==FORWARD)
user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
@@ -1038,7 +1147,7 @@
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "durand5"
- if(13)
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
holder.icon_state = "durand8"
@@ -1046,7 +1155,7 @@
user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/circuitboard/mecha/durand/peripherals(get_turf(holder))
holder.icon_state = "durand6"
- if(12)
+ if(15)
if(diff==FORWARD)
user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
qdel(used_atom)
@@ -1054,7 +1163,7 @@
else
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
holder.icon_state = "durand7"
- if(11)
+ if(14)
if(diff==FORWARD)
user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
holder.icon_state = "durand10"
@@ -1062,7 +1171,7 @@
user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
new /obj/item/circuitboard/mecha/durand/targeting(get_turf(holder))
holder.icon_state = "durand8"
- if(10)
+ if(13)
if(diff==FORWARD)
user.visible_message("[user] installs scanner module to the [holder].", "You install phasic scanner module to the [holder].")
var/obj/item/I = used_atom
@@ -1071,7 +1180,7 @@
else
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
holder.icon_state = "durand9"
- if(9)
+ if(12)
if(diff==FORWARD)
user.visible_message("[user] secures the scanner module.", "You secure the scanner module.")
holder.icon_state = "durand12"
@@ -1080,7 +1189,7 @@
var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder
I.loc = get_turf(holder)
holder.icon_state = "durand10"
- if(8)
+ if(11)
if(diff==FORWARD)
user.visible_message("[user] installs capacitor to the [holder].", "You install capacitor to the [holder].")
var/obj/item/I = used_atom
@@ -1089,7 +1198,7 @@
else
user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.")
holder.icon_state = "durand11"
- if(7)
+ if(10)
if(diff==FORWARD)
user.visible_message("[user] secures the capacitor.", "You secure the capacitor.")
holder.icon_state = "durand14"
@@ -1098,64 +1207,80 @@
var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder
I.loc = get_turf(holder)
holder.icon_state = "durand12"
- if(6)
+ if(9)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
+ var/obj/item/I = used_atom
+ user.transferItemToLoc(I, holder, TRUE)
holder.icon_state = "durand15"
else
- user.visible_message("[user] unfastens the super capacitor.", "You unfasten the capacitor.")
+ user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.")
holder.icon_state = "durand13"
- if(5)
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ holder.icon_state = "durand16"
+ else
+ user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
+ var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
+ I.forceMove(holder.drop_location())
+ holder.icon_state = "durand14"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ holder.icon_state = "durand17"
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ holder.icon_state = "durand15"
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "durand16"
+ holder.icon_state = "durand18"
else
user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
MS.amount = 5
- holder.icon_state = "durand14"
- if(4)
+ holder.icon_state = "durand16"
+ if(5)
if(diff==FORWARD)
user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "durand17"
+ holder.icon_state = "durand19"
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "durand15"
- if(3)
+ holder.icon_state = "durand17"
+ if(4)
if(diff==FORWARD)
user.visible_message("[user] installs Durand Armor Plates to the [holder].", "You install Durand Armor Plates to the [holder].")
qdel(used_atom)
- holder.icon_state = "durand18"
+ holder.icon_state = "durand20"
else
user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "durand16"
- if(2)
+ holder.icon_state = "durand18"
+ if(3)
if(diff==FORWARD)
user.visible_message("[user] secures Durand Armor Plates.", "You secure Durand Armor Plates.")
- holder.icon_state = "durand19"
+ holder.icon_state = "durand21"
else
user.visible_message("[user] pries Durand Armor Plates from the [holder].", "You pry Durand Armor Plates from the [holder].")
new /obj/item/mecha_parts/part/durand_armor(get_turf(holder))
- holder.icon_state = "durand17"
- if(1)
+ holder.icon_state = "durand19"
+ if(2)
if(diff==FORWARD)
user.visible_message("[user] welds Durand Armor Plates to the [holder].", "You weld Durand Armor Plates to the [holder].")
+ spawn_mecha_result()
else
user.visible_message("[user] unfastens Durand Armor Plates.", "You unfasten Durand Armor Plates.")
- holder.icon_state = "durand18"
+ holder.icon_state = "durand20"
return 1
-/datum/construction/reversible/mecha/durand/spawn_result()
- var/obj/mecha/combat/gygax/M = new result(get_turf(holder))
- M.CheckParts(holder.contents)
- qdel(holder)
+/datum/construction/reversible/mecha/durand/spawn_mecha_result()
+ ..()
SSblackbox.inc("mecha_durand_created",1)
return
//PHAZON
/datum/construction/mecha/phazon_chassis
- result = "/obj/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
@@ -1183,15 +1308,17 @@
return
/datum/construction/reversible/mecha/phazon
- result = "/obj/mecha/combat/phazon"
+ result = /obj/mecha/combat/phazon
steps = list(
- //1
- list("key"=/obj/item/device/assembly/signaler/anomaly,
+ //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
+ list("desc"="You shouldn't be able to see this."),
+
+ //1
+ list("key"=/obj/item/device/assembly/signaler/anomaly,
"backkey"=null, //Cannot remove the anomaly core once it's in
"desc"="Anomaly core socket is open and awaiting connection."),
-
- //2
- list("key"=/obj/item/weldingtool,
+ //2
+ list("key"=/obj/item/weldingtool,
"backkey"=/obj/item/wrench,
"desc"="External armor is wrenched."),
//3
@@ -1213,72 +1340,80 @@
//7
list("key"=/obj/item/stack/sheet/plasteel,
"backkey"=/obj/item/screwdriver,
- "desc"="The bluespace crystal is engaged."),
+ "desc"="The power cell is secured."),
//8
+ list("key"=/obj/item/screwdriver,
+ "backkey"=/obj/item/crowbar,
+ "desc"="The power cell is installed."),
+ //9
+ list("key"=/obj/item/stock_parts/cell,
+ "backkey"=/obj/item/screwdriver,
+ "desc"="The bluespace crystal is engaged."),
+ //10
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/wirecutters,
"desc"="The bluespace crystal is connected."),
- //9
+ //11
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/crowbar,
"desc"="The bluespace crystal is installed."),
- //10
+ //12
list("key"=/obj/item/ore/bluespace_crystal,
"backkey"=/obj/item/screwdriver,
"desc"="Super capacitor is secured."),
- //12
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Super capacitor is installed."),
- //12
- list("key"=/obj/item/stock_parts/capacitor,
- "backkey"=/obj/item/screwdriver,
- "desc"="Phasic scanner module is secured."),
//13
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Phasic scanner module is installed."),
+ "desc"="Super capacitor is installed."),
//14
- list("key"=/obj/item/stock_parts/scanning_module,
+ list("key"=/obj/item/stock_parts/capacitor,
"backkey"=/obj/item/screwdriver,
- "desc"="Weapon control module is secured."),
+ "desc"="Phasic scanner module is secured."),
//15
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Weapon control is installed."),
+ "desc"="Phasic scanner module is installed."),
//16
- list("key"=/obj/item/circuitboard/mecha/phazon/targeting,
+ list("key"=/obj/item/stock_parts/scanning_module,
"backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
+ "desc"="Weapon control module is secured."),
//17
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed"),
+ "desc"="Weapon control is installed."),
//18
- list("key"=/obj/item/circuitboard/mecha/phazon/peripherals,
+ list("key"=/obj/item/circuitboard/mecha/phazon/targeting,
"backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
+ "desc"="Peripherals control module is secured."),
//19
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
+ "desc"="Peripherals control module is installed"),
//20
+ list("key"=/obj/item/circuitboard/mecha/phazon/peripherals,
+ "backkey"=/obj/item/screwdriver,
+ "desc"="Central control module is secured."),
+ //21
+ list("key"=/obj/item/screwdriver,
+ "backkey"=/obj/item/crowbar,
+ "desc"="Central control module is installed."),
+ //22
list("key"=/obj/item/circuitboard/mecha/phazon/main,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is adjusted."),
- //21
+ //23
list("key"=/obj/item/wirecutters,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is added."),
- //22
+ //24
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/screwdriver,
"desc"="The hydraulic systems are active."),
- //23
+ //25
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/wrench,
"desc"="The hydraulic systems are connected."),
- //24
+ //26
list("key"=/obj/item/wrench,
"desc"="The hydraulic systems are disconnected.")
)
@@ -1293,24 +1428,24 @@
//TODO: better messages.
switch(index)
- if(24)
+ if(27)
user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "phazon1"
- if(23)
+ if(26)
if(diff==FORWARD)
user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "phazon2"
else
user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "phazon0"
- if(22)
+ if(25)
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "phazon3"
else
user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "phazon1"
- if(21)
+ if(24)
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "phazon4"
@@ -1319,7 +1454,7 @@
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "phazon2"
- if(20)
+ if(23)
if(diff==FORWARD)
user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
@@ -1327,7 +1462,7 @@
else
user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "phazon3"
- if(19)
+ if(22)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "phazon6"
@@ -1335,7 +1470,7 @@
user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/circuitboard/mecha/phazon/main(get_turf(holder))
holder.icon_state = "phazon4"
- if(18)
+ if(21)
if(diff==FORWARD)
user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
@@ -1343,7 +1478,7 @@
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "phazon5"
- if(17)
+ if(20)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
holder.icon_state = "phazon8"
@@ -1351,7 +1486,7 @@
user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/circuitboard/mecha/phazon/peripherals(get_turf(holder))
holder.icon_state = "phazon6"
- if(16)
+ if(19)
if(diff==FORWARD)
user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
qdel(used_atom)
@@ -1359,7 +1494,7 @@
else
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
holder.icon_state = "phazon7"
- if(15)
+ if(18)
if(diff==FORWARD)
user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
holder.icon_state = "phazon10"
@@ -1367,7 +1502,7 @@
user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
new /obj/item/circuitboard/mecha/phazon/targeting(get_turf(holder))
holder.icon_state = "phazon8"
- if(14)
+ if(17)
if(diff==FORWARD)
user.visible_message("[user] installs phasic scanner module to the [holder].", "You install scanner module to the [holder].")
var/obj/item/I = used_atom
@@ -1376,7 +1511,7 @@
else
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
holder.icon_state = "phazon9"
- if(13)
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] secures the phasic scanner module.", "You secure the scanner module.")
holder.icon_state = "phazon12"
@@ -1385,7 +1520,7 @@
var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder
I.loc = get_turf(holder)
holder.icon_state = "phazon10"
- if(12)
+ if(15)
if(diff==FORWARD)
user.visible_message("[user] installs super capacitor to the [holder].", "You install capacitor to the [holder].")
var/obj/item/I = used_atom
@@ -1394,7 +1529,7 @@
else
user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the scanner module.")
holder.icon_state = "phazon11"
- if(11)
+ if(14)
if(diff==FORWARD)
user.visible_message("[user] secures the super capacitor.", "You secure the capacitor.")
holder.icon_state = "phazon14"
@@ -1403,7 +1538,7 @@
var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder
I.loc = get_turf(holder)
holder.icon_state = "phazon12"
- if(10)
+ if(13)
if(diff==FORWARD)
user.visible_message("[user] installs the bluespace crystal.", "You install the bluespace crystal.")
qdel(used_atom)
@@ -1411,7 +1546,7 @@
else
user.visible_message("[user] unsecures the super capacitor from the [holder].", "You unsecure the capacitor from the [holder].")
holder.icon_state = "phazon13"
- if(9)
+ if(12)
if(diff==FORWARD)
user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystal.")
holder.icon_state = "phazon16"
@@ -1419,68 +1554,85 @@
user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].")
new /obj/item/ore/bluespace_crystal(get_turf(holder))
holder.icon_state = "phazon14"
- if(8)
+ if(11)
if(diff==FORWARD)
user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystal.")
holder.icon_state = "phazon17"
else
user.visible_message("[user] disconnects the bluespace crystal from the [holder].", "You disconnect the bluespace crystal from the [holder].")
holder.icon_state = "phazon15"
- if(7)
+ if(10)
if(diff==FORWARD)
- user.visible_message("[user] installs the phase armor layer to the [holder].", "You install the phase armor layer to the [holder].")
+ user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
+ var/obj/item/I = used_atom
+ user.transferItemToLoc(I, holder, TRUE)
holder.icon_state = "phazon18"
else
user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystal.")
holder.icon_state = "phazon16"
- if(6)
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ holder.icon_state = "phazon19"
+ else
+ user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
+ var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
+ I.forceMove(holder.drop_location())
+ holder.icon_state = "phazon17"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the phase armor layer to the [holder].", "You install the phase armor layer to the [holder].")
+ holder.icon_state = "phazon20"
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ holder.icon_state = "durand18"
+ if(7)
if(diff==FORWARD)
user.visible_message("[user] secures the phase armor layer.", "You secure the phase armor layer.")
- holder.icon_state = "phazon19"
+ holder.icon_state = "phazon21"
else
user.visible_message("[user] pries the phase armor layer from the [holder].", "You pry the phase armor layer from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
- holder.icon_state = "phazon17"
- if(5)
+ holder.icon_state = "phazon19"
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] welds the phase armor layer to the [holder].", "You weld the phase armor layer to the [holder].")
- holder.icon_state = "phazon20"
+ holder.icon_state = "phazon22"
else
user.visible_message("[user] unfastens the phase armor layer.", "You unfasten the phase armor layer.")
- holder.icon_state = "phazon18"
- if(4)
+ holder.icon_state = "phazon20"
+ if(5)
if(diff==FORWARD)
user.visible_message("[user] installs Phazon Armor Plates to the [holder].", "You install Phazon Armor Plates to the [holder].")
qdel(used_atom)
- holder.icon_state = "phazon21"
+ holder.icon_state = "phazon23"
else
user.visible_message("[user] cuts phase armor layer from the [holder].", "You cut the phase armor layer from the [holder].")
- holder.icon_state = "phazon19"
- if(3)
+ holder.icon_state = "phazon21"
+ if(4)
if(diff==FORWARD)
user.visible_message("[user] secures Phazon Armor Plates.", "You secure Phazon Armor Plates.")
- holder.icon_state = "phazon22"
+ holder.icon_state = "phazon24"
else
user.visible_message("[user] pries Phazon Armor Plates from the [holder].", "You pry Phazon Armor Plates from the [holder].")
new /obj/item/mecha_parts/part/phazon_armor(get_turf(holder))
- holder.icon_state = "phazon20"
- if(2)
+ holder.icon_state = "phazon22"
+ if(3)
if(diff==FORWARD)
user.visible_message("[user] welds Phazon Armor Plates to the [holder].", "You weld Phazon Armor Plates to the [holder].")
else
user.visible_message("[user] unfastens Phazon Armor Plates.", "You unfasten Phazon Armor Plates.")
- holder.icon_state = "phazon21"
- if(1)
+ holder.icon_state = "phazon23"
+ if(2)
if(diff==FORWARD)
user.visible_message("[user] carefully inserts the anomaly core into \the [holder] and secures it.", "You slowly place the anomaly core into its socket and close its chamber.")
qdel(used_atom)
+ spawn_mecha_result()
return 1
-/datum/construction/reversible/mecha/phazon/spawn_result()
- var/obj/mecha/combat/gygax/M = new result(get_turf(holder))
- M.CheckParts(holder.contents)
- qdel(holder)
+/datum/construction/reversible/mecha/phazon/spawn_mecha_result()
+ ..()
SSblackbox.inc("mecha_phazon_created",1)
return
@@ -1515,13 +1667,16 @@
/datum/construction/reversible/mecha/odysseus
- result = "/obj/mecha/medical/odysseus"
+ result = /obj/mecha/medical/odysseus
steps = list(
- //1
- list("key"=/obj/item/weldingtool,
+ //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
+ list("desc"="You shouldn't be able to see this."),
+
+ //1
+ list("key"=/obj/item/weldingtool,
"backkey"=/obj/item/wrench,
"desc"="External armor is wrenched."),
- //2
+ //2
list("key"=/obj/item/wrench,
"backkey"=/obj/item/crowbar,
"desc"="External armor is installed."),
@@ -1540,36 +1695,44 @@
//6
list("key"=/obj/item/stack/sheet/metal,
"backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
+ "desc"="The power cell is secured."),
//7
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
+ "desc"="The power cell is installed."),
//8
- list("key"=/obj/item/circuitboard/mecha/odysseus/peripherals,
+ list("key"=/obj/item/stock_parts/cell,
"backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
+ "desc"="Peripherals control module is secured."),
//9
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
+ "desc"="Peripherals control module is installed."),
//10
+ list("key"=/obj/item/circuitboard/mecha/odysseus/peripherals,
+ "backkey"=/obj/item/screwdriver,
+ "desc"="Central control module is secured."),
+ //11
+ list("key"=/obj/item/screwdriver,
+ "backkey"=/obj/item/crowbar,
+ "desc"="Central control module is installed."),
+ //12
list("key"=/obj/item/circuitboard/mecha/odysseus/main,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is adjusted."),
- //11
+ //13
list("key"=/obj/item/wirecutters,
"backkey"=/obj/item/screwdriver,
"desc"="The wiring is added."),
- //12
+ //14
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/screwdriver,
"desc"="The hydraulic systems are active."),
- //13
+ //15
list("key"=/obj/item/screwdriver,
"backkey"=/obj/item/wrench,
"desc"="The hydraulic systems are connected."),
- //14
+ //16
list("key"=/obj/item/wrench,
"desc"="The hydraulic systems are disconnected.")
)
@@ -1583,24 +1746,24 @@
//TODO: better messages.
switch(index)
- if(14)
+ if(17)
user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "odysseus1"
- if(13)
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "odysseus2"
else
user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "odysseus0"
- if(12)
+ if(15)
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "odysseus3"
else
user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "odysseus1"
- if(11)
+ if(14)
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "odysseus4"
@@ -1609,7 +1772,7 @@
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(13)
if(diff==FORWARD)
user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
@@ -1617,7 +1780,7 @@
else
user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "odysseus3"
- if(9)
+ if(12)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "odysseus6"
@@ -1625,7 +1788,7 @@
user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/circuitboard/mecha/odysseus/main(get_turf(holder))
holder.icon_state = "odysseus4"
- if(8)
+ if(11)
if(diff==FORWARD)
user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
@@ -1633,7 +1796,7 @@
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "odysseus5"
- if(7)
+ if(10)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
holder.icon_state = "odysseus8"
@@ -1641,56 +1804,74 @@
user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/circuitboard/mecha/odysseus/peripherals(get_turf(holder))
holder.icon_state = "odysseus6"
- if(6)
+ if(9)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
+ var/obj/item/I = used_atom
+ user.transferItemToLoc(I, holder, TRUE)
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(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ holder.icon_state = "odysseus10"
+ else
+ user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
+ var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
+ I.forceMove(holder.drop_location())
+ holder.icon_state = "odysseus8"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ holder.icon_state = "odysseus11"
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ holder.icon_state = "odysseus9"
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "odysseus10"
+ holder.icon_state = "odysseus12"
else
user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
MS.amount = 5
- holder.icon_state = "odysseus8"
- if(4)
+ holder.icon_state = "odysseus10"
+ if(5)
if(diff==FORWARD)
user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "odysseus11"
+ holder.icon_state = "odysseus13"
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "odysseus9"
- if(3)
+ holder.icon_state = "odysseus11"
+ if(4)
if(diff==FORWARD)
user.visible_message("[user] installs [used_atom] layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
- holder.icon_state = "odysseus12"
+ holder.icon_state = "odysseus14"
else
user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "odysseus10"
- if(2)
+ holder.icon_state = "odysseus12"
+ if(3)
if(diff==FORWARD)
user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
- holder.icon_state = "odysseus13"
+ holder.icon_state = "odysseus15"
else
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
user.visible_message("[user] pries [MS] from the [holder].", "You pry [MS] from the [holder].")
- holder.icon_state = "odysseus11"
- if(1)
+ holder.icon_state = "odysseus13"
+ if(2)
if(diff==FORWARD)
user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
- holder.icon_state = "odysseus14"
+ spawn_mecha_result()
else
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "odysseus12"
+ holder.icon_state = "odysseus14"
return 1
-/datum/construction/reversible/mecha/odysseus/spawn_result()
+/datum/construction/reversible/mecha/odysseus/spawn_mecha_result()
..()
SSblackbox.inc("mecha_odysseus_created",1)
return
diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi
index 38b3b04c5d..42cc8eeb57 100644
Binary files a/icons/mecha/mech_construction.dmi and b/icons/mecha/mech_construction.dmi differ