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