diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 222f08c44c53..aca69f9ca08d 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -77,7 +77,6 @@ "Durand", "H.O.N.K", "Reticence", - "Executioner", "Phazon", "Exosuit Equipment", "Cyborg Upgrade Modules", diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 47c0582fb170..0a8ae1a6db7f 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -96,8 +96,6 @@ var/smoke = 5 var/smoke_ready = 1 var/smoke_cooldown = 100 - var/flash_ready = TRUE - var/flash_cooldown = 50 var/zoom_mode = FALSE var/phasing = FALSE var/phasing_energy_drain = 200 diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index 5df983e82da6..1929ce39599c 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -12,7 +12,6 @@ var/datum/action/innate/mecha/mech_zoom/zoom_action = new var/datum/action/innate/mecha/mech_toggle_phasing/phasing_action = new var/datum/action/innate/mecha/mech_switch_damtype/switch_damtype_action = new - var/datum/action/innate/mecha/flash/flash_action = new /obj/mecha/proc/GrantActions(mob/living/user, human_occupant = 0) if(human_occupant) @@ -233,34 +232,3 @@ playsound(src, 'sound/mecha/mechmove01.ogg', 50, 1) UpdateButtonIcon() -/datum/action/innate/mecha/flash - name = "Святой огонь" - desc = "Очистите оскверненных тварей с помощью святого света!" - button_icon_state = "holyflash" - -/datum/action/innate/mecha/flash/proc/flash_carbon(mob/living/carbon/M, mob/user = null, power = 5) - if(user) - add_attack_logs(user, M, "Flashed with [chassis]") - if(M.flash_eyes(1, 1)) - M.AdjustConfused(power) - M.Stun(5) - M.Weaken(10) - to_chat(user, "Вы ослепили [M] священным светом!") - to_chat(M, "[chassis] ослепил Вас с помощью священного света!") - else - to_chat(user, "Вам не удалось ослепить [M] священным светом!") - to_chat(M, "[chassis] не смог ослепить вас с помощью священного света!") - return - -/datum/action/innate/mecha/flash/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - if(chassis.flash_ready) - chassis.visible_message("[chassis] emits a blinding holy light!", "Your [chassis] emits a blinding holy light!") - for(var/mob/living/carbon/M in oview(3, chassis)) - flash_carbon(M, chassis.occupant, 3, FALSE) - chassis.flash_ready = FALSE - spawn(chassis.flash_cooldown) - chassis.flash_ready = TRUE - else - chassis.occupant_message("Святой свет ещё не готов!") diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index c40938bc0a0b..813c7fb1f180 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -1244,315 +1244,6 @@ holder.icon_state = "durand18" return 1 - -/datum/construction/mecha/executioner_chassis - steps = list( - list("key"=/obj/item/mecha_parts/part/executioner_torso),//1 - list("key"=/obj/item/mecha_parts/part/executioner_left_arm),//2 - list("key"=/obj/item/mecha_parts/part/executioner_right_arm),//3 - list("key"=/obj/item/mecha_parts/part/executioner_left_leg),//4 - list("key"=/obj/item/mecha_parts/part/executioner_right_leg),//5 - list("key"=/obj/item/mecha_parts/part/executioner_head) - ) - -/datum/construction/mecha/executioner_chassis/custom_action(step, atom/used_atom, mob/user) - user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]") - holder.overlays += used_atom.icon_state+"+o" - qdel(used_atom) - return 1 - -/datum/construction/mecha/executioner_chassis/action(atom/used_atom,mob/user as mob) - return check_all_steps(used_atom,user) - -/datum/construction/mecha/executioner_chassis/spawn_result() - ..("mk. V \"The Executioner\"") - var/obj/item/mecha_parts/chassis/const_holder = holder - const_holder.construct = new /datum/construction/reversible/mecha/executioner(const_holder) - const_holder.icon = 'icons/mecha/mech_construction.dmi' - const_holder.icon_state = "executioner0" - const_holder.density = TRUE - qdel(src) - return - -/datum/construction/reversible/mecha/executioner - result = "/obj/mecha/combat/executioner" - steps = list( - //1 - list( - "key"=/obj/item/soulstone/anybody/purified, - "backkey"=null, //Cannot remove soulstone once it's in - "desc"="Soulstone puted in the locket."), - //2 - "key" = /obj/item/mecha_parts/core, - "backkey" = TOOL_SCREWDRIVER, - "desc" = "External armor is welded."), - //3 - list( - "key"=TOOL_WELDER, - "backkey"=TOOL_WRENCH, - "desc"="External armor is wrenched."), - //4 - list( - "key"=TOOL_WRENCH, - "backkey"=TOOL_CROWBAR, - "desc"="External armor is installed."), - //5 - list( - "key"=/obj/item/mecha_parts/part/executioner_armor, - "backkey"=TOOL_WELDER, - "desc"="Holy cross is welded."), - //6 - list( - "key"=TOOL_WELDER, - "backkey"=TOOL_WRENCH, - "desc"="Holy cross is wrenched."), - //7 - list("key"=TOOL_WRENCH, - "backkey"=TOOL_CROWBAR, - "desc"="Holy cross is installed."), - //8 - list( - "key"=/obj/item/stack/sheet/mineral/silver, - "backkey"=TOOL_SCREWDRIVER, - "desc"="Holy helmet is blessed."), - //9 - list( - "key"=/obj/item/storage/bible, - "backkey"=TOOL_CROWBAR, - "desc"="Holy helmet is installed."), - //10 - list( - "key"=/obj/item/clothing/head/helmet/riot/knight/templar, - "backkey"=TOOL_SCREWDRIVER, - "desc"="Holy armour is blessed."), - //11 - list( - "key"=/obj/item/storage/bible, - "backkey"=TOOL_CROWBAR, - "desc"="Holy armour is installed."), - //12 - list( - "key"=/obj/item/clothing/suit/armor/riot/knight/templar, - "backkey"=TOOL_SCREWDRIVER, - "desc"="Scanning module is blessed."), - //13 - list( - "key"=/obj/item/storage/bible, - "backkey"=TOOL_CROWBAR, - "desc"="Scanning module is installed."), - //14 - list( - "key"=/obj/item/circuitboard/mecha/executioner/targeting, - "backkey"=TOOL_SCREWDRIVER, - "desc"="Peripherals control module is blessed."), - //15 - list( - "key"=/obj/item/storage/bible, - "backkey"=TOOL_CROWBAR, - "desc"="Peripherals control module is installed."), - //16 - list( - "key"=/obj/item/circuitboard/mecha/executioner/peripherals, - "backkey"=TOOL_SCREWDRIVER, - "desc"="Central control module is blessed."), - //17 - list( - "key"=/obj/item/storage/bible, - "backkey"=TOOL_CROWBAR, - "desc"="Central control module is installed."), - //18 - list( - "key"=/obj/item/circuitboard/mecha/executioner/main, - "backkey"=TOOL_SCREWDRIVER, - "desc"="The wiring is adjusted."), - //19 - list( - "key"=/obj/item/wirecutters, - "backkey"=TOOL_SCREWDRIVER, - "desc"="The wiring is added."), - //20 - list( - "key"=/obj/item/stack/cable_coil, - "backkey"=TOOL_SCREWDRIVER, - "desc"="The hydraulic systems are active."), - //21 - list( - "key"=TOOL_SCREWDRIVER, - "backkey"=TOOL_WRENCH, - "desc"="The hydraulic systems are connected."), - //22 - list( - "key"=TOOL_WRENCH, - "desc"="The hydraulic systems are disconnected.") - ) - - -/datum/construction/reversible/mecha/executioner/action(atom/used_atom,mob/user as mob) - return check_step(used_atom,user) - -/datum/construction/reversible/mecha/executioner/custom_action(index, diff, atom/used_atom, mob/user) - if(!..()) - return 0 - - //TODO: better messages. - switch(index) - if(21) - user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.") - holder.icon_state = "executioner1" - if(20) - if(diff==FORWARD) - user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.") - holder.icon_state = "executioner2" - else - user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.") - holder.icon_state = "executioner0" - if(19) - if(diff==FORWARD) - user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].") - holder.icon_state = "executioner3" - else - user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.") - holder.icon_state = "executioner1" - if(18) - if(diff==FORWARD) - user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].") - holder.icon_state = "executioner4" - else - user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].") - var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder)) - coil.amount = 4 - holder.icon_state = "executioner2" - if(17) - 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) - holder.icon_state = "executioner5" - else - user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].") - holder.icon_state = "executioner3" - if(16) - if(diff==FORWARD) - user.visible_message("[user] blessed the mainboard.", "You bless the mainboard.") - holder.icon_state = "executioner6" - else - 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/executioner/main(get_turf(holder)) - holder.icon_state = "executioner4" - if(15) - 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) - holder.icon_state = "executioner7" - else - user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") - holder.icon_state = "executioner5" - if(14) - if(diff==FORWARD) - user.visible_message("[user] blessed the peripherals control module.", "You bless the peripherals control module.") - holder.icon_state = "executioner8" - else - 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/executioner/peripherals(get_turf(holder)) - holder.icon_state = "executioner6" - if(13) - 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) - holder.icon_state = "executioner9" - else - user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") - holder.icon_state = "executioner7" - if(12) - if(diff==FORWARD) - user.visible_message("[user] blessed the weapon control module.", "You bless the weapon control module.") - holder.icon_state = "executioner10" - else - 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/executioner/targeting(get_turf(holder)) - holder.icon_state = "executioner8" - if(11) - if(diff==FORWARD) - user.visible_message("[user] installs the holy armour to the [holder].", "You install the holy armour to the [holder].") - qdel(used_atom) - holder.icon_state = "executioner11" - else - user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.") - holder.icon_state = "executioner9" - if(10) - if(diff==FORWARD) - user.visible_message("[user] blessed the holy armour.", "You bless the holy armour.") - holder.icon_state = "executioner12" - else - user.visible_message("[user] removes the holy armour from the [holder].", "You remove the holy armour from the [holder].") - new /obj/item/clothing/suit/armor/riot/knight/templar(get_turf(holder)) - holder.icon_state = "executioner10" - if(9) - if(diff==FORWARD) - user.visible_message("[user] installs the holy helmet to the [holder].", "You install holy helmet to the [holder].") - qdel(used_atom) - holder.icon_state = "executioner13" - else - user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the phasic scanner module.") - holder.icon_state = "executioner11" - if(8) - if(diff==FORWARD) - user.visible_message("[user] blessed the holy helmet.", "You bless the holy helmet.") - holder.icon_state = "executioner14" - else - user.visible_message("[user] removes the holy helmet from the [holder].", "You remove the holy helmet from the [holder].") - new /obj/item/clothing/head/helmet/riot/knight/templar(get_turf(holder)) - holder.icon_state = "executioner12" - if(7) - if(diff==FORWARD) - user.visible_message("[user] installs the holy cross to the [holder].", "You install the holy cross to the [holder].") - holder.icon_state = "executioner15" - else - user.visible_message("[user] unfastens the holy helmet.", "You unfasten the holy helmet.") - holder.icon_state = "executioner13" - if(6) - if(diff==FORWARD) - user.visible_message("[user] secures the holy cross.", "You secure the holy cross.") - holder.icon_state = "executioner16" - else - user.visible_message("[user] pries holy cross from the [holder].", "You pry holy cross from the [holder].") - var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/mineral/silver(get_turf(holder)) - MS.amount = 5 - holder.icon_state = "executioner14" - if(5) - if(diff==FORWARD) - user.visible_message("[user] welds the holy cross to the [holder].", "You weld holy cross to the [holder].") - holder.icon_state = "executioner17" - else - user.visible_message("[user] unfastens the holy cross.", "You unfasten the holy cross.") - holder.icon_state = "executioner15" - if(4) - if(diff==FORWARD) - user.visible_message("[user] installs the Executioner Armor Plates to the [holder].", "You install Executioner Armor Plates to the [holder].") - qdel(used_atom) - holder.icon_state = "executioner18" - else - user.visible_message("[user] cuts the holy cross from the [holder].", "You cut the holy cross from the [holder].") - holder.icon_state = "executioner16" - if(3) - if(diff==FORWARD) - user.visible_message("[user] secures Executioner Armor Plates.", "You secure Executioner Armor Plates.") - holder.icon_state = "executioner19" - else - user.visible_message("[user] pries Executioner Armor Plates from the [holder].", "You pry Executioner Armor Plates from the [holder].") - new /obj/item/mecha_parts/part/durand_armor(get_turf(holder)) - holder.icon_state = "executioner17" - if(2) - if(diff==FORWARD) - user.visible_message("[user] welds Executioner Armor Plates to the [holder].", "You weld Executioner Armor Plates to the [holder].") - else - user.visible_message("[user] unfastens Executioner Armor Plates.", "You unfasten Executioner Armor Plates.") - holder.icon_state = "executioner18" - if(1) - if(diff==FORWARD) - user.visible_message("[user] put soulstone to the [holder]'s locket. Exosuit seems awaken now.", "You put soulstone to the [holder]'s locket. Exosuit seems awaken now.") - qdel(used_atom) - return 1 - //PHAZON /datum/construction/mecha/phazon_chassis diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index c34e30638c63..f078ba07412e 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -163,52 +163,6 @@ origin_tech = "materials=5;combat=4;engineering=4" -//////////// Executioner - -/obj/item/mecha_parts/chassis/executioner - name = "\improper Executioner Chassis" - -/obj/item/mecha_parts/chassis/executioner/New() - ..() - construct = new /datum/construction/mecha/executioner_chassis(src) - -/obj/item/mecha_parts/part/executioner_torso - name="\improper Executioner Torso" - icon_state = "durand_harness" - origin_tech = "programming=2;materials=3;biotech=3;engineering=3" - -/obj/item/mecha_parts/part/executioner_head - name="\improper Executioner Head" - icon_state = "durand_head" - origin_tech = "programming=2;materials=3;magnets=3;engineering=3" - -/obj/item/mecha_parts/part/executioner_left_arm - name="\improper Executioner Left Arm" - icon_state = "durand_l_arm" - origin_tech = "programming=2;materials=3;engineering=3" - -/obj/item/mecha_parts/part/executioner_right_arm - name="\improper Executioner Right Arm" - icon_state = "durand_r_arm" - origin_tech = "programming=2;materials=3;engineering=3" - -/obj/item/mecha_parts/part/executioner_left_leg - name="\improper Executioner Left Leg" - icon_state = "durand_l_leg" - origin_tech = "programming=2;materials=3;engineering=3" - -/obj/item/mecha_parts/part/executioner_right_leg - name="\improper Executioner Right Leg" - icon_state = "durand_r_leg" - origin_tech = "programming=2;materials=3;engineering=3" - -/obj/item/mecha_parts/part/executioner_armor - name="\improper Executioner Armour Plates" - icon_state = "executioner_armor" - origin_tech = "materials=5;combat=4;engineering=4" - - - ////////// Firefighter /obj/item/mecha_parts/chassis/firefighter @@ -452,22 +406,6 @@ icon_state = "mcontroller" origin_tech = "programming=4;combat=4;engineering=3" -/obj/item/circuitboard/mecha/executioner - origin_tech = "programming=5;combat=4;engineering=4" - -/obj/item/circuitboard/mecha/executioner/peripherals - name = "Circuit board (Executioner Peripherals Control module)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/executioner/targeting - name = "Circuit board (Executionerurand Weapon Control and Targeting module)" - icon_state = "mcontroller" - origin_tech = "programming=5;combat=5;engineering=4" - -/obj/item/circuitboard/mecha/executioner/main - name = "Circuit board (Executioner Central Control module)" - icon_state = "mainboard" - /obj/item/circuitboard/mecha/phazon origin_tech = "programming=5;plasmatech=4" diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 292d9ec0fc4a..72a5f8daacd0 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -208,13 +208,6 @@ icon_state = "phazon-broken" -/obj/structure/mecha_wreckage/executioner - name = "\improper Executioner wreckage" - desc = "He failed. But.. he return. He never leave humankind." - icon_state = "executioner-broken" - parts = list(/obj/item/soulstone/anybody/purified) - - /obj/structure/mecha_wreckage/odysseus name = "\improper Odysseus wreckage" icon_state = "odysseus-broken" diff --git a/modular_ss220/new_mecha_executioner/_executioner.dm b/modular_ss220/new_mecha_executioner/_executioner.dm new file mode 100644 index 000000000000..0a8cd90e8e4b --- /dev/null +++ b/modular_ss220/new_mecha_executioner/_executioner.dm @@ -0,0 +1,4 @@ +/datum/modpack/outfits + name = "Executor" + desc = "старо-новый мех." + author = "Lime-7" diff --git a/modular_ss220/new_mecha_executioner/_executioner.dme b/modular_ss220/new_mecha_executioner/_executioner.dme new file mode 100644 index 000000000000..c71e50ef5618 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/_executioner.dme @@ -0,0 +1,11 @@ +#include "_executioner.dm" + +#include "code\Executor.dm" +#include "code\mech_fabricator.dm" +#include "code\mecha_actions.dm" +#include "code\mecha_construction_paths.dm" +#include "code\mecha_designs.dm" +#include "code\mecha_parts.dm" +#include "code\mecha_wreckage.dm" +#include "code\mecha.dm" +#include "code\mechfabricator_designs.dm" diff --git a/code/game/mecha/combat/Executor.dm b/modular_ss220/new_mecha_executioner/code/Executor.dm similarity index 100% rename from code/game/mecha/combat/Executor.dm rename to modular_ss220/new_mecha_executioner/code/Executor.dm diff --git a/modular_ss220/new_mecha_executioner/code/mech_fabricator.dm b/modular_ss220/new_mecha_executioner/code/mech_fabricator.dm new file mode 100644 index 000000000000..e6c656594b2b --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mech_fabricator.dm @@ -0,0 +1,36 @@ +/obj/machinery/mecha_part_fabricator/Initialize(mapload) + . = ..() + // Set up some datums + var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE), 0, FALSE, /obj/item/stack, CALLBACK(src, PROC_REF(can_insert_materials)), CALLBACK(src, PROC_REF(on_material_insert))) + materials.precise_insertion = TRUE + local_designs = new /datum/research(src) + + // Components + component_parts = list() + component_parts += new /obj/item/circuitboard/mechfab(null) + component_parts += new /obj/item/stock_parts/matter_bin(null) + component_parts += new /obj/item/stock_parts/matter_bin(null) + component_parts += new /obj/item/stock_parts/manipulator(null) + component_parts += new /obj/item/stock_parts/micro_laser(null) + component_parts += new /obj/item/stack/sheet/glass(null) + RefreshParts() + + categories = list( + "Cyborg", + "Cyborg Repair", + "MODsuit Construction", + "MODsuit Modules", + "Ripley", + "Firefighter", + "Odysseus", + "Gygax", + "Durand", + "H.O.N.K", + "Reticence", + "Executor", + "Phazon", + "Exosuit Equipment", + "Cyborg Upgrade Modules", + "Medical", + "Misc" + ) diff --git a/modular_ss220/new_mecha_executioner/code/mecha.dm b/modular_ss220/new_mecha_executioner/code/mecha.dm new file mode 100644 index 000000000000..2e0906b1cb01 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha.dm @@ -0,0 +1,3 @@ +/obj/mecha + var/flash_ready = TRUE + var/flash_cooldown = 50 diff --git a/modular_ss220/new_mecha_executioner/code/mecha_actions.dm b/modular_ss220/new_mecha_executioner/code/mecha_actions.dm new file mode 100644 index 000000000000..7bccf610e2c4 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha_actions.dm @@ -0,0 +1,35 @@ +/obj/mecha + var/datum/action/innate/mecha/flash/flash_action = new + + +/datum/action/innate/mecha/flash + name = "Святой огонь" + desc = "Очистите оскверненных тварей с помощью святого света!" + button_icon_state = "holyflash" + +/datum/action/innate/mecha/flash/proc/flash_carbon(mob/living/carbon/M, mob/user = null, power = 5) + if(user) + add_attack_logs(user, M, "Flashed with [chassis]") + if(M.flash_eyes(1, 1)) + M.AdjustConfused(power) + M.Stun(5) + M.Weaken(10) + to_chat(user, "Вы ослепили [M] священным светом!") + to_chat(M, "[chassis] ослепил Вас с помощью священного света!") + else + to_chat(user, "Вам не удалось ослепить [M] священным светом!") + to_chat(M, "[chassis] не смог ослепить вас с помощью священного света!") + return + +/datum/action/innate/mecha/flash/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + if(chassis.flash_ready) + chassis.visible_message("[chassis] emits a blinding holy light!", "Your [chassis] emits a blinding holy light!") + for(var/mob/living/carbon/M in oview(3, chassis)) + flash_carbon(M, chassis.occupant, 3, FALSE) + chassis.flash_ready = FALSE + spawn(chassis.flash_cooldown) + chassis.flash_ready = TRUE + else + chassis.occupant_message("Святой свет ещё не готов!") diff --git a/modular_ss220/new_mecha_executioner/code/mecha_construction_paths.dm b/modular_ss220/new_mecha_executioner/code/mecha_construction_paths.dm new file mode 100644 index 000000000000..7fe42522ecda --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha_construction_paths.dm @@ -0,0 +1,307 @@ +/datum/construction/mecha/executioner_chassis + steps = list( + list("key"=/obj/item/mecha_parts/part/executioner_torso),//1 + list("key"=/obj/item/mecha_parts/part/executioner_left_arm),//2 + list("key"=/obj/item/mecha_parts/part/executioner_right_arm),//3 + list("key"=/obj/item/mecha_parts/part/executioner_left_leg),//4 + list("key"=/obj/item/mecha_parts/part/executioner_right_leg),//5 + list("key"=/obj/item/mecha_parts/part/executioner_head) + ) + +/datum/construction/mecha/executioner_chassis/custom_action(step, atom/used_atom, mob/user) + user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]") + holder.overlays += used_atom.icon_state+"+o" + qdel(used_atom) + return 1 + +/datum/construction/mecha/executioner_chassis/action(atom/used_atom,mob/user as mob) + return check_all_steps(used_atom,user) + +/datum/construction/mecha/executioner_chassis/spawn_result() + ..("mk. V \"The Executioner\"") + var/obj/item/mecha_parts/chassis/const_holder = holder + const_holder.construct = new /datum/construction/reversible/mecha/executioner(const_holder) + const_holder.icon = 'icons/mecha/mech_construction.dmi' + const_holder.icon_state = "executioner0" + const_holder.density = TRUE + qdel(src) + return + +/datum/construction/reversible/mecha/executioner + result = "/obj/mecha/combat/executioner" + steps = list( + //1 + list( + "key"=/obj/item/soulstone/anybody/purified, + "backkey"=null, //Cannot remove soulstone once it's in + "desc"="Soulstone puted in the locket."), + //2 + "key" = /obj/item/mecha_parts/core, + "backkey" = TOOL_SCREWDRIVER, + "desc" = "External armor is welded."), + //3 + list( + "key"=TOOL_WELDER, + "backkey"=TOOL_WRENCH, + "desc"="External armor is wrenched."), + //4 + list( + "key"=TOOL_WRENCH, + "backkey"=TOOL_CROWBAR, + "desc"="External armor is installed."), + //5 + list( + "key"=/obj/item/mecha_parts/part/executioner_armor, + "backkey"=TOOL_WELDER, + "desc"="Holy cross is welded."), + //6 + list( + "key"=TOOL_WELDER, + "backkey"=TOOL_WRENCH, + "desc"="Holy cross is wrenched."), + //7 + list("key"=TOOL_WRENCH, + "backkey"=TOOL_CROWBAR, + "desc"="Holy cross is installed."), + //8 + list( + "key"=/obj/item/stack/sheet/mineral/silver, + "backkey"=TOOL_SCREWDRIVER, + "desc"="Holy helmet is blessed."), + //9 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="Holy helmet is installed."), + //10 + list( + "key"=/obj/item/clothing/head/helmet/riot/knight/templar, + "backkey"=TOOL_SCREWDRIVER, + "desc"="Holy armour is blessed."), + //11 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="Holy armour is installed."), + //12 + list( + "key"=/obj/item/clothing/suit/armor/riot/knight/templar, + "backkey"=TOOL_SCREWDRIVER, + "desc"="Scanning module is blessed."), + //13 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="Scanning module is installed."), + //14 + list( + "key"=/obj/item/circuitboard/mecha/executioner/targeting, + "backkey"=TOOL_SCREWDRIVER, + "desc"="Peripherals control module is blessed."), + //15 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="Peripherals control module is installed."), + //16 + list( + "key"=/obj/item/circuitboard/mecha/executioner/peripherals, + "backkey"=TOOL_SCREWDRIVER, + "desc"="Central control module is blessed."), + //17 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="Central control module is installed."), + //18 + list( + "key"=/obj/item/circuitboard/mecha/executioner/main, + "backkey"=TOOL_SCREWDRIVER, + "desc"="The wiring is adjusted."), + //19 + list( + "key"=/obj/item/wirecutters, + "backkey"=TOOL_SCREWDRIVER, + "desc"="The wiring is added."), + //20 + list( + "key"=/obj/item/stack/cable_coil, + "backkey"=TOOL_SCREWDRIVER, + "desc"="The hydraulic systems are active."), + //21 + list( + "key"=TOOL_SCREWDRIVER, + "backkey"=TOOL_WRENCH, + "desc"="The hydraulic systems are connected."), + //22 + list( + "key"=TOOL_WRENCH, + "desc"="The hydraulic systems are disconnected.") + ) + + +/datum/construction/reversible/mecha/executioner/action(atom/used_atom,mob/user as mob) + return check_step(used_atom,user) + +/datum/construction/reversible/mecha/executioner/custom_action(index, diff, atom/used_atom, mob/user) + if(!..()) + return 0 + + //TODO: better messages. + switch(index) + if(21) + user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.") + holder.icon_state = "executioner1" + if(20) + if(diff==FORWARD) + user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.") + holder.icon_state = "executioner2" + else + user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.") + holder.icon_state = "executioner0" + if(19) + if(diff==FORWARD) + user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].") + holder.icon_state = "executioner3" + else + user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.") + holder.icon_state = "executioner1" + if(18) + if(diff==FORWARD) + user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].") + holder.icon_state = "executioner4" + else + user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].") + var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder)) + coil.amount = 4 + holder.icon_state = "executioner2" + if(17) + 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) + holder.icon_state = "executioner5" + else + user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].") + holder.icon_state = "executioner3" + if(16) + if(diff==FORWARD) + user.visible_message("[user] blessed the mainboard.", "You bless the mainboard.") + holder.icon_state = "executioner6" + else + 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/executioner/main(get_turf(holder)) + holder.icon_state = "executioner4" + if(15) + 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) + holder.icon_state = "executioner7" + else + user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + holder.icon_state = "executioner5" + if(14) + if(diff==FORWARD) + user.visible_message("[user] blessed the peripherals control module.", "You bless the peripherals control module.") + holder.icon_state = "executioner8" + else + 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/executioner/peripherals(get_turf(holder)) + holder.icon_state = "executioner6" + if(13) + 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) + holder.icon_state = "executioner9" + else + user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "executioner7" + if(12) + if(diff==FORWARD) + user.visible_message("[user] blessed the weapon control module.", "You bless the weapon control module.") + holder.icon_state = "executioner10" + else + 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/executioner/targeting(get_turf(holder)) + holder.icon_state = "executioner8" + if(11) + if(diff==FORWARD) + user.visible_message("[user] installs the holy armour to the [holder].", "You install the holy armour to the [holder].") + qdel(used_atom) + holder.icon_state = "executioner11" + else + user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.") + holder.icon_state = "executioner9" + if(10) + if(diff==FORWARD) + user.visible_message("[user] blessed the holy armour.", "You bless the holy armour.") + holder.icon_state = "executioner12" + else + user.visible_message("[user] removes the holy armour from the [holder].", "You remove the holy armour from the [holder].") + new /obj/item/clothing/suit/armor/riot/knight/templar(get_turf(holder)) + holder.icon_state = "executioner10" + if(9) + if(diff==FORWARD) + user.visible_message("[user] installs the holy helmet to the [holder].", "You install holy helmet to the [holder].") + qdel(used_atom) + holder.icon_state = "executioner13" + else + user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the phasic scanner module.") + holder.icon_state = "executioner11" + if(8) + if(diff==FORWARD) + user.visible_message("[user] blessed the holy helmet.", "You bless the holy helmet.") + holder.icon_state = "executioner14" + else + user.visible_message("[user] removes the holy helmet from the [holder].", "You remove the holy helmet from the [holder].") + new /obj/item/clothing/head/helmet/riot/knight/templar(get_turf(holder)) + holder.icon_state = "executioner12" + if(7) + if(diff==FORWARD) + user.visible_message("[user] installs the holy cross to the [holder].", "You install the holy cross to the [holder].") + holder.icon_state = "executioner15" + else + user.visible_message("[user] unfastens the holy helmet.", "You unfasten the holy helmet.") + holder.icon_state = "executioner13" + if(6) + if(diff==FORWARD) + user.visible_message("[user] secures the holy cross.", "You secure the holy cross.") + holder.icon_state = "executioner16" + else + user.visible_message("[user] pries holy cross from the [holder].", "You pry holy cross from the [holder].") + var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/mineral/silver(get_turf(holder)) + MS.amount = 5 + holder.icon_state = "executioner14" + if(5) + if(diff==FORWARD) + user.visible_message("[user] welds the holy cross to the [holder].", "You weld holy cross to the [holder].") + holder.icon_state = "executioner17" + else + user.visible_message("[user] unfastens the holy cross.", "You unfasten the holy cross.") + holder.icon_state = "executioner15" + if(4) + if(diff==FORWARD) + user.visible_message("[user] installs the Executioner Armor Plates to the [holder].", "You install Executioner Armor Plates to the [holder].") + qdel(used_atom) + holder.icon_state = "executioner18" + else + user.visible_message("[user] cuts the holy cross from the [holder].", "You cut the holy cross from the [holder].") + holder.icon_state = "executioner16" + if(3) + if(diff==FORWARD) + user.visible_message("[user] secures Executioner Armor Plates.", "You secure Executioner Armor Plates.") + holder.icon_state = "executioner19" + else + user.visible_message("[user] pries Executioner Armor Plates from the [holder].", "You pry Executioner Armor Plates from the [holder].") + new /obj/item/mecha_parts/part/durand_armor(get_turf(holder)) + holder.icon_state = "executioner17" + if(2) + if(diff==FORWARD) + user.visible_message("[user] welds Executioner Armor Plates to the [holder].", "You weld Executioner Armor Plates to the [holder].") + else + user.visible_message("[user] unfastens Executioner Armor Plates.", "You unfasten Executioner Armor Plates.") + holder.icon_state = "executioner18" + if(1) + if(diff==FORWARD) + user.visible_message("[user] put soulstone to the [holder]'s locket. Exosuit seems awaken now.", "You put soulstone to the [holder]'s locket. Exosuit seems awaken now.") + qdel(used_atom) + return 1 diff --git a/modular_ss220/new_mecha_executioner/code/mecha_designs.dm b/modular_ss220/new_mecha_executioner/code/mecha_designs.dm new file mode 100644 index 000000000000..5266c00e79c2 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha_designs.dm @@ -0,0 +1,30 @@ +// Executioner +/datum/design/executioner_main + name = "Exosuit Board (\"Executioner\" Central Control module)" + desc = "Allows for the construction of a \"Executioner\" Central Control module." + id = "executioner_main" + req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000) + build_path = /obj/item/circuitboard/mecha/executioner/main + category = list("Exosuit Modules") + +/datum/design/executioner_peri + name = "Exosuit Board (\"Executioner\" Peripherals Control module)" + desc = "Allows for the construction of a \"Executioner\" Peripheral Control module." + id = "executioner_peri" + req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000) + build_path = /obj/item/circuitboard/mecha/executioner/peripherals + category = list("Exosuit Modules") + +/datum/design/executioner_targ + name = "Exosuit Board (\"Executioner\" Weapons & Targeting Control module)" + desc = "Allows for the construction of a \"Executioner\" Weapons & Targeting Control module." + id = "executioner_targ" + req_tech = list("programming" = 5, "combat" = 4, "engineering" = 4) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000) + build_path = /obj/item/circuitboard/mecha/executioner/targeting + category = list("Exosuit Modules") diff --git a/modular_ss220/new_mecha_executioner/code/mecha_parts.dm b/modular_ss220/new_mecha_executioner/code/mecha_parts.dm new file mode 100644 index 000000000000..876220b75778 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha_parts.dm @@ -0,0 +1,59 @@ +//////////// Executioner + +/obj/item/mecha_parts/chassis/executioner + name = "\improper Executioner Chassis" + +/obj/item/mecha_parts/chassis/executioner/New() + ..() + construct = new /datum/construction/mecha/executioner_chassis(src) + +/obj/item/mecha_parts/part/executioner_torso + name="\improper Executioner Torso" + icon_state = "durand_harness" + origin_tech = "programming=2;materials=3;biotech=3;engineering=3" + +/obj/item/mecha_parts/part/executioner_head + name="\improper Executioner Head" + icon_state = "durand_head" + origin_tech = "programming=2;materials=3;magnets=3;engineering=3" + +/obj/item/mecha_parts/part/executioner_left_arm + name="\improper Executioner Left Arm" + icon_state = "durand_l_arm" + origin_tech = "programming=2;materials=3;engineering=3" + +/obj/item/mecha_parts/part/executioner_right_arm + name="\improper Executioner Right Arm" + icon_state = "durand_r_arm" + origin_tech = "programming=2;materials=3;engineering=3" + +/obj/item/mecha_parts/part/executioner_left_leg + name="\improper Executioner Left Leg" + icon_state = "durand_l_leg" + origin_tech = "programming=2;materials=3;engineering=3" + +/obj/item/mecha_parts/part/executioner_right_leg + name="\improper Executioner Right Leg" + icon_state = "durand_r_leg" + origin_tech = "programming=2;materials=3;engineering=3" + +/obj/item/mecha_parts/part/executioner_armor + name="\improper Executioner Armour Plates" + icon_state = "executioner_armor" + origin_tech = "materials=5;combat=4;engineering=4" + +/obj/item/circuitboard/mecha/executioner + origin_tech = "programming=5;combat=4;engineering=4" + +/obj/item/circuitboard/mecha/executioner/peripherals + name = "Circuit board (Executioner Peripherals Control module)" + icon_state = "mcontroller" + +/obj/item/circuitboard/mecha/executioner/targeting + name = "Circuit board (Executionerurand Weapon Control and Targeting module)" + icon_state = "mcontroller" + origin_tech = "programming=5;combat=5;engineering=4" + +/obj/item/circuitboard/mecha/executioner/main + name = "Circuit board (Executioner Central Control module)" + icon_state = "mainboard" diff --git a/modular_ss220/new_mecha_executioner/code/mecha_wreckage.dm b/modular_ss220/new_mecha_executioner/code/mecha_wreckage.dm new file mode 100644 index 000000000000..c34db2b4bc52 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha_wreckage.dm @@ -0,0 +1,6 @@ +/obj/structure/mecha_wreckage/executioner + name = "\improper Executioner wreckage" + desc = "He failed. But.. he return. He never leave humankind." + icon_state = "executioner-broken" + parts = list(/obj/item/soulstone/anybody/purified) + diff --git a/modular_ss220/new_mecha_executioner/code/mechfabricator_designs.dm b/modular_ss220/new_mecha_executioner/code/mechfabricator_designs.dm new file mode 100644 index 000000000000..03bbce6a7b8c --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mechfabricator_designs.dm @@ -0,0 +1,72 @@ +//Executioner +/datum/design/executioner_chassis + name = "Exosuit Chassis (\"Executioner\")" + id = "Executioner_chassis" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/chassis/executioner + materials = list(MAT_METAL=30000,MAT_GLASS=5000) + construction_time = 100 + category = list("Executioner") + +/datum/design/executioner_torso + name = "Exosuit Torso (\"Executioner\")" + id = "executioner_torso" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/executioner_torso + materials = list(MAT_METAL=30000,MAT_GLASS=20000,MAT_SILVER=10000) + construction_time = 300 + category = list("Executioner") + +/datum/design/executioner_head + name = "Exosuit Head (\"Executioner\")" + id = "executioner_head" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/executioner_head + materials = list(MAT_METAL=10000,MAT_SILVER=10000) + construction_time = 200 + category = list("Executioner") + +/datum/design/executioner_left_arm + name = "Exosuit Left Arm (\"Executioner\")" + id = "executioner_left_arm" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/executioner_left_arm + materials = list(MAT_METAL=10000,MAT_SILVER=10000) + construction_time = 200 + category = list("Executioner") + +/datum/design/executioner_right_arm + name = "Exosuit Right Arm (\"Executioner\")" + id = "executioner_right_arm" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/executioner_right_arm + materials = list(MAT_METAL=10000,MAT_SILVER=10000) + construction_time = 200 + category = list("Executioner") + +/datum/design/executioner_left_leg + name = "Exosuit Left Leg (\"Executioner\")" + id = "executioner_left_leg" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/executioner_left_leg + materials = list(MAT_METAL=15000,MAT_SILVER=10000) + construction_time = 200 + category = list("Executioner") + +/datum/design/executioner_right_leg + name = "Exosuit Right Leg (\"Executioner\")" + id = "executioner_right_leg" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/executioner_right_leg + materials = list(MAT_METAL=15000,MAT_SILVER=10000) + construction_time = 200 + category = list("Executioner") + +/datum/design/executioner_armor + name = "Exosuit Armor (\"executioner\")" + id = "Executioner_armor" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/executioner_armor + materials = list(MAT_METAL=30000,MAT_SILVER=20000,MAT_TITANIUM=25000,MAT_URANIUM=23000) + construction_time = 600 + category = list("Executioner") diff --git a/modular_ss220/new_mecha_executioner/icons/actions_mecha.dmi b/modular_ss220/new_mecha_executioner/icons/actions_mecha.dmi new file mode 100644 index 000000000000..10c72624f795 Binary files /dev/null and b/modular_ss220/new_mecha_executioner/icons/actions_mecha.dmi differ diff --git a/modular_ss220/new_mecha_executioner/icons/mech_construct.dmi b/modular_ss220/new_mecha_executioner/icons/mech_construct.dmi new file mode 100644 index 000000000000..def4f1b13075 Binary files /dev/null and b/modular_ss220/new_mecha_executioner/icons/mech_construct.dmi differ diff --git a/modular_ss220/new_mecha_executioner/icons/mech_construction.dmi b/modular_ss220/new_mecha_executioner/icons/mech_construction.dmi new file mode 100644 index 000000000000..ed9a4c8c0600 Binary files /dev/null and b/modular_ss220/new_mecha_executioner/icons/mech_construction.dmi differ diff --git a/modular_ss220/new_mecha_executioner/icons/mecha.dmi b/modular_ss220/new_mecha_executioner/icons/mecha.dmi new file mode 100644 index 000000000000..cae38220323c Binary files /dev/null and b/modular_ss220/new_mecha_executioner/icons/mecha.dmi differ