From 1613525b8081c58458845bf967cc53912382d482 Mon Sep 17 00:00:00 2001 From: Lime-7 <142225267+Lime-7@users.noreply.github.com> Date: Fri, 10 Nov 2023 17:26:06 +0700 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=20=D0=BC=D0=B5=D1=85=20=D1=81=D0=BE=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=80=D0=BE-=D0=BF=D0=B0=D1=80=D1=8B=20Executioner?= =?UTF-8?q?=20(#645)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Что этот PR делает портирует меха со старо-пары ## Почему это хорошо для игры Добавляет новый контент для роботехов и священника ## Тестирование были тесты до переноса в модульность ## Changelog :cl: add: мех Executioner imageadd: добавлены спрайты меха Executioner и его способности /:cl: --------- Co-authored-by: Volodymir Ohorodnytskyi <102746941+Legendaxe@users.noreply.github.com> --- modular_ss220/modular_ss220.dme | 1 + .../_new_mecha_executioner.dm | 4 + .../_new_mecha_executioner.dme | 11 + .../new_mecha_executioner/code/Executor.dm | 23 ++ .../code/mech_fabricator.dm | 36 ++ .../new_mecha_executioner/code/mecha.dm | 3 + .../code/mecha_actions.dm | 34 ++ .../code/mecha_construction_paths.dm | 308 ++++++++++++++++++ .../code/mecha_designs.dm | 30 ++ .../new_mecha_executioner/code/mecha_parts.dm | 66 ++++ .../code/mecha_wreckage.dm | 7 + .../code/mechfabricator_designs.dm | 72 ++++ .../icons/actions_mecha.dmi | Bin 0 -> 2372 bytes .../icons/mech_construct.dmi | Bin 0 -> 5148 bytes .../icons/mech_construction.dmi | Bin 0 -> 9317 bytes .../new_mecha_executioner/icons/mecha.dmi | Bin 0 -> 7927 bytes 16 files changed, 595 insertions(+) create mode 100644 modular_ss220/new_mecha_executioner/_new_mecha_executioner.dm create mode 100644 modular_ss220/new_mecha_executioner/_new_mecha_executioner.dme create mode 100644 modular_ss220/new_mecha_executioner/code/Executor.dm create mode 100644 modular_ss220/new_mecha_executioner/code/mech_fabricator.dm create mode 100644 modular_ss220/new_mecha_executioner/code/mecha.dm create mode 100644 modular_ss220/new_mecha_executioner/code/mecha_actions.dm create mode 100644 modular_ss220/new_mecha_executioner/code/mecha_construction_paths.dm create mode 100644 modular_ss220/new_mecha_executioner/code/mecha_designs.dm create mode 100644 modular_ss220/new_mecha_executioner/code/mecha_parts.dm create mode 100644 modular_ss220/new_mecha_executioner/code/mecha_wreckage.dm create mode 100644 modular_ss220/new_mecha_executioner/code/mechfabricator_designs.dm create mode 100644 modular_ss220/new_mecha_executioner/icons/actions_mecha.dmi create mode 100644 modular_ss220/new_mecha_executioner/icons/mech_construct.dmi create mode 100644 modular_ss220/new_mecha_executioner/icons/mech_construction.dmi create mode 100644 modular_ss220/new_mecha_executioner/icons/mecha.dmi diff --git a/modular_ss220/modular_ss220.dme b/modular_ss220/modular_ss220.dme index 4073d4dc2b87..0e0e55b00cb5 100644 --- a/modular_ss220/modular_ss220.dme +++ b/modular_ss220/modular_ss220.dme @@ -70,6 +70,7 @@ #include "outfits/_outfits.dme" #include "world_view_bigger/_world_view_bigger.dme" #include "mecha_skins/mecha_skins.dme" +#include "new_mecha_executioner/_new_mecha_executioner.dme" #include "queue/_queue.dme" // --- PRIME --- // diff --git a/modular_ss220/new_mecha_executioner/_new_mecha_executioner.dm b/modular_ss220/new_mecha_executioner/_new_mecha_executioner.dm new file mode 100644 index 000000000000..c4546525061b --- /dev/null +++ b/modular_ss220/new_mecha_executioner/_new_mecha_executioner.dm @@ -0,0 +1,4 @@ +/datum/modpack/new_mecha_executioner + name = "Executor" + desc = "старо-новый мех. порт со старо пары" + author = "Lime-7" diff --git a/modular_ss220/new_mecha_executioner/_new_mecha_executioner.dme b/modular_ss220/new_mecha_executioner/_new_mecha_executioner.dme new file mode 100644 index 000000000000..68d8958cbe82 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/_new_mecha_executioner.dme @@ -0,0 +1,11 @@ +#include "_new_mecha_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/modular_ss220/new_mecha_executioner/code/Executor.dm b/modular_ss220/new_mecha_executioner/code/Executor.dm new file mode 100644 index 000000000000..d36adfcedda1 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/Executor.dm @@ -0,0 +1,23 @@ +/obj/mecha/combat/executioner + name = "mk. V \"The Executioner\"" + desc = "Дредноут Ордена Палача, тяжелая конфигурация огневой поддержки, созданная для уничтожения зла и еретиков. Чрезвычайно хорош в ближнем бою." + icon = 'modular_ss220/new_mecha_executioner/icons/mecha.dmi' + icon_state = "executioner" + initial_icon = "executioner" + max_temperature = 65000 + step_in = 4 + max_integrity = 350 + deflect_chance = 15 + force = 40 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF + armor = list("melee" = 70, "bullet" = 15, "laser" = 5, "energy" = 30, "bomb" = 20, "bio" = 0, "rad" = 100, "fire" = 100, "acid" = 100) + max_equip = 3 + wreckage = /obj/structure/mecha_wreckage/executioner + +/obj/mecha/combat/executioner/GrantActions(mob/living/user, human_occupant = 0) + . = ..() + flash_action.Grant(user, src) + +/obj/mecha/combat/executioner/RemoveActions(mob/living/user, human_occupant = 0) + . = ..() + flash_action.Remove(user) 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..2aa5fb092ecd --- /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", + "Executioner", + "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..b8b3db07c62a --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha_actions.dm @@ -0,0 +1,34 @@ +/obj/mecha + var/datum/action/innate/mecha/flash/flash_action = new +/datum/action/innate/mecha/flash + name = "Святой огонь" + desc = "Очистите оскверненных тварей с помощью святого света!" + icon_icon = 'modular_ss220/new_mecha_executioner/icons/actions_mecha.dmi' + 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] испускает ослепляющий святой свет!", "Твой [chassis] испускает ослепляющий святой свет!") + 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..5b0c2343227b --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha_construction_paths.dm @@ -0,0 +1,308 @@ +/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] прикрепил [used_atom] к [holder].", "вы прикрепили [used_atom] к [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 = 'modular_ss220/new_mecha_executioner/icons/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"="камень души помещен в хранилище."), + //2 + list( + "key" = /obj/item/mecha_parts/core, + "backkey" = TOOL_SCREWDRIVER, + "desc" = "Внешняя броня заварена."), + //3 + list( + "key"=TOOL_WELDER, + "backkey"=TOOL_WRENCH, + "desc"="Внешняя броня закручена."), + //4 + list( + "key"=TOOL_WRENCH, + "backkey"=TOOL_CROWBAR, + "desc"="Внешняя броня установлена."), + //5 + list( + "key"=/obj/item/mecha_parts/part/executioner_armor, + "backkey"=TOOL_WELDER, + "desc"="святой крест заварен."), + //6 + list( + "key"=TOOL_WELDER, + "backkey"=TOOL_WRENCH, + "desc"="святой крест зкручен."), + //7 + list("key"=TOOL_WRENCH, + "backkey"=TOOL_CROWBAR, + "desc"="святой крест устоновлен."), + //8 + list( + "key"=/obj/item/stack/sheet/mineral/silver, + "backkey"=TOOL_SCREWDRIVER, + "desc"="святой шлем благословлен."), + //9 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="святой шлем устоновлен."), + //10 + list( + "key"=/obj/item/clothing/head/helmet/riot/knight/templar, + "backkey"=TOOL_SCREWDRIVER, + "desc"="святая броня благословлена."), + //11 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="святая броня устоновлена."), + //12 + list( + "key"=/obj/item/clothing/suit/armor/riot/knight/templar, + "backkey"=TOOL_SCREWDRIVER, + "desc"="сканирующей модуль благословлен."), + //13 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="сканирующей модуль устоновлен."), + //14 + list( + "key"=/obj/item/circuitboard/mecha/executioner/targeting, + "backkey"=TOOL_SCREWDRIVER, + "desc"="периферийный контрольный модуль благословлен."), + //15 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="периферийный контрольный модуль устоновлен."), + //16 + list( + "key"=/obj/item/circuitboard/mecha/executioner/peripherals, + "backkey"=TOOL_SCREWDRIVER, + "desc"="центральный контрольный модуль благословлен."), + //17 + list( + "key"=/obj/item/storage/bible, + "backkey"=TOOL_CROWBAR, + "desc"="центральный контрольный модуль устоновлен."), + //18 + list( + "key"=/obj/item/circuitboard/mecha/executioner/main, + "backkey"=TOOL_SCREWDRIVER, + "desc"="проводка устоновлена."), + //19 + list( + "key"=/obj/item/wirecutters, + "backkey"=TOOL_SCREWDRIVER, + "desc"="проводка добавлена."), + //20 + list( + "key"=/obj/item/stack/cable_coil, + "backkey"=TOOL_SCREWDRIVER, + "desc"="гидравлические системы активны."), + //21 + list( + "key"=TOOL_SCREWDRIVER, + "backkey"=TOOL_WRENCH, + "desc"="гидравлические системы устоновлены."), + //22 + list( + "key"=TOOL_WRENCH, + "desc"="Гидравлические системы отключены.") + ) + + +/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..c2253dfd1c37 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha_parts.dm @@ -0,0 +1,66 @@ +//////////// 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 = 'modular_ss220/new_mecha_executioner/icons/mech_construct.dmi' + 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 = 'modular_ss220/new_mecha_executioner/icons/mech_construct.dmi' + 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 = 'modular_ss220/new_mecha_executioner/icons/mech_construct.dmi' + 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 = 'modular_ss220/new_mecha_executioner/icons/mech_construct.dmi' + 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 = 'modular_ss220/new_mecha_executioner/icons/mech_construct.dmi' + 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 = 'modular_ss220/new_mecha_executioner/icons/mech_construct.dmi' + 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 = 'modular_ss220/new_mecha_executioner/icons/mech_construct.dmi' + 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..706f67aacce1 --- /dev/null +++ b/modular_ss220/new_mecha_executioner/code/mecha_wreckage.dm @@ -0,0 +1,7 @@ +/obj/structure/mecha_wreckage/executioner + name = "\improper Executioner wreckage" + desc = "Он потерпел неудачу. Но.. он вернулся. он некогда не оставит человечество." + icon = 'modular_ss220/new_mecha_executioner/icons/mecha.dmi' + 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 0000000000000000000000000000000000000000..10c72624f795fbf4546129fe0fff4c23f7edba09 GIT binary patch literal 2372 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..cae38220323c89d7814e2b5657b52a64c9bc3a3c GIT binary patch literal 7927 zcmXw8cQ~8x_qL-oqSY#jQ2L=YD~cLHm1^x;t*weuMX8#xS8J-Hd`?@KS;fH^HM=jszv53Cn; zz!j;_5vumvrj}tOvB`kv75#mU9Y@LkWko@OQp#l9=m@oOEE08wF!?gFXRq&|9-vV zhr3#}!7hK~98 zyo$w#&oO^TcxSL8-%a;>E>aQO>j>u9X*_w7jKP%R93X*98EG&>^b3uwV|P6F@?F&K z<^ui~7EK16Zb5)&|Hct&)X6&y`vB(kCcr^R`PA8%-ny}$J0YA}4 zgA(M}{$@8{D(&s6Wa|)~?QrvH(2VzAyWf2R_!>`Ihl9i} z5<9W#)l5a3>7rYMcY%Ae^J7cp?*nhn(ksQx=JkW~D@XI5RaENkJy7S03xAxGld~%b z@mN;1DNeyjl4i19PWBfU%cHSm*T8Ckr7MZ*Q=yVTCuebV8Fgq)2%x-__x%{vBGuILGSo(piSIq8J<3q4XHbdvq$=0Q%D~pSU zkAwppdYu&8zmH0;qC&pr?!|bSkKCMoEXyB1J=#l6(%Z3r=f{9+a9`rP8+Y&ShI54X zd@xP2ey+k7x1Z>~P#+=xt?@6A=eFqDEeDdFqaisMvHyLnuKNwAA}hDyWkAx=;^b(> zh0ot4>J7ebZd7dV?D?ynSoNHh2{$=%eQ}sCocdsY!NwFXH*Ulbei&^TMahz3BP#TMw zxr8llRDrHp^%@n)WK4;wt@=tGd3Rm$FX(kZe&(4sFh*j`Ew>LRI@Kx%n-UN5kM{%k z&Q$%1t5kVtS8t_K!m$*)`W9+fw6UtHAWhzZkFcJ8NO{V`?{pw&hBi zA&JYLMGoOX7Gs(s*I^^Do4^>%CR$&UWyO1uF$K3%PnNE|Z*9BNL!SGQczNE(qe%fz zQt&1o@+#cHU469d!x$?c6DyOH9!t9b2?AqWxB4PaB$r%>aeDB&i?$V6Qmyh@-Eb65 z9AXf127-I5`=iHzs{+$$94z5djIjkkEPDODH=0=i$Od?m%rKrp3=svUfc!N7P^aE> z-YRlC)#tC_+=2No%VLe?1Qz^aOC;fG&Hh-ImEQ;#!J!sb*qhhnU01o`xVgqRgmgU0Dto?4fw3bidG00OM zbJfeMtk8yl-0pZHpX$QdLtSniOmVi`c;BqgL5z#abV7F%uH>2y?H3~^!JkKaP5bLF z*d(E+)vWBjF_oRHr{#L1N z%h)TGCqp;$n(Po0_qZ?_jfd?kme&U#hldV-K7DbGuzlCUVMi;9eb5B|ZS zQGHt;>BFA+hWRPzEQn?DBgR#JiE&kPEq3Rj!0>ErloDD2^WkS9GlbNMaVvtrR6ASz zDO@-t}8L_6{a^&$nMSaRaEQ?uLPyF|^=pJfR@{tu>%| zxpafJo%C@&$4V-s1vLxsc^gNa0k=9xen}W@5sQblT+$DO8`tNhSydA1!+cp#2eeJf zseQnN+QHO$yPVk@;#p1#q#mhO*vM>Ga-xTwZyvk724isX?^OeQOyr z1dj<`sr=OGB}XQ~i%UvJQFC@PRR z-ErWw3<+Oq^Z#hQGj9LxM2p=K<}2{VR0bR+<(nLHHM}Ygz|TDXU~ZY}ntT(pQ7Vix zs-1BYlMnA?YP)tO*)?Od9;p-ik^g7E%J5hvh01Et9ItdXxi^Zz7K-4oo_h-`k%$mw zv83O6;XE!^FZv5e7#IfmJ@_gT97?;Q(4P6$_QnnUAzOgzA<&C0)D{Ilq+Q^kUAC~J z>Ba(|~JQ8W#uVf_gOriQRcs$nU&;og-N`{!STkP zma=qcdV;hUTnl!P8wd(wD9E8?tu zQnBsBZB({>VYifvhef0=cQV1=uq+Aaj2$?iBiFK!^m_nSC>rXEUQ8_G28GmiQcHM* zUH4P99=`O=Q)-alBdbbfrN99i^So28CKrbgsTz9t3tYIV7@_vGr_-s(u;)%?_7eT5 z7Bw@JipTRvb2D_%nykGFpfuaK>u2hKO4<1yv+;%bZ&lT(Isi#_M`Jf7-oNeUXI*U` z*9jj9CZ~6AueAJ?#t4e7UfIy6h2GeDsp3!6AAAhCniA_*byjO9_4riyI3(h2)mHw0 zi`3F_ybU5!lS+qOyv^E6^^Ov0AUigWH=BZKEHl!qiS3Cr5*5|y>8{4FgOPT0@@dj` zJa@;-e=pu-tbG@etS3@YaG8@~baQgI*Ox)4yF~3UyT)yiYj&jgGnD8{1+cqA$G<Od%S1r;wjYV z0j{t3%r%ns->~c@KBpEo(w}UzZT09FOy7ijLD*S)8gylXAHRZ9!Z$wamnpF&5*3Ek zYH)sJ=zoFMLD&49XmqpI)eQ5zyF;}n&7PImx@OLv%u38GsPf4!XwXNmytCDG4tAn_ z@flUQSf)Q)Kabf?#yqY~e!kyzV$28L`|>Mv{+CJ5gu$w}d~Vh^wF-L_7LbaeGpIQX9y%SBYbT zx9*HRKvi?uscRc%~pRO+cunG3Z zQh!AN#PidCA-%pD8CFIT0;TnSAw_Lqm3mN3n5@1vw9g?3Do@*zr4umu)$+~uG*Vk{ z0N6~`y-qDsfhft*N89!HUY^<>@Ht|F)j1Z1#39ScGNdiHJ>8S3Rok>dSvxoyE%}k) zahSW-B1)@C7}i96;(fT?J>Ua_fJEQSRt9=5uLzi#%d$n!-PYhP_>OQA6bHtH|E#$r z#M0@EO{{tQ+rOKyVG`Lb5^|IE=fShbS^Q#@fnoVPP_J9XwNp=(r&nhG+m(j|RYLf0 zU%G(NfI^mdL!{1gx$X{ayFrL+yChW!u`h$7n+hr=0Y{baT=EBigU zE31zzguY0zQmt(paWVallLLSZIbE-=H0K6=LQklwusKv?SR{7ejLRRiR9O#X(m_6soWXD+6*K;TbCLK7s*DCrDXG)Zq{t zFDyQUvh)ljwTZcF^lzaFd%jR}gg-pYcul@f2vLI};=hz4%p%%#POnV^m@_CZ_)_JmDDiMH5XY!9RfLIuXOh;HQ_8})7N7ul2z%p-rM99lbY#M5xab@&VN3|xCPp-wQ!zQm z$nyCSg@C1V6dQTDgQ3p3^au*!f=naX?YL(2YD5~nZea1aRiJhv&2q|uw7!OqkB}=A zawIbON4q>YYD_u(rHJ2laO$!C)OjAtGKMh8_;#1mfb*PTY9F!qKw@E4yV<{T*uW5Q zm5b+Vq4|gz$~GVsgSs=OE!xYJ1o8r99>MO^QBzVzPat2VKA6Hb=zOap<)DpGrmo~yj>nD!D>_tfnA~bXX1OCsgmmb>o3VQ;9LcWffr9oiYeB!#Wu>|laA?{B%BPDte6mo6+i0gG+4WzK< z9|nqkC?zXIAiG5NP`UKlbQD};=eQ{AhiW;L1OlOL%~&pWVF5zY$~D$H-{D7PKvyEp zXYIp^*oB!Uo0$8n7^#aU1m_1|n94^bfxEsd(#WR&I ziicIvpm>#x8x|PYND>q;8hCx%;|C8UC>6vVAgm|R_mNvhq=|v?{|EMM3?2u?Qi@r^ z+DU;wO9=Gd0Xxnyu@V9qbSIJJ7O*=LLJ{vNp#N@RroJOG{Wyl>D0hxqm<_e7$A|?g z3MIifN z`udi$6Y!6k>D*EkP~(U%M|9n*V5=BqpA-3Az%1s_3z|X(4x!Z3juCh1*pK`;I2w(A zNVn-3Q_R8^_d|XJ`}3!i_N6Bv)O{FDYAScPx62Cpw*tSuB$&Cq+xvT>9GD&Z+;Q*l zJ!+WiLhR|&gy+PF)Tp5$n;zZU6QoFPO2c0zKx`HXagp5omniPg23e94=_Y+0WTXnb zh3~o6(W;kJcrf{px^&)hTACS~dBG#}WA#f3XxlduXxvG^@B8g*u9V^X#{&xxg1$(+ zsl!UH9h@I|dk@wGNPSNs%HK_lgNDg5;>_6cpPFo}Q(u#H)T`ntJ?Ei#l*k0BiJRZ4 zNR{GQ%+h{Ub?ebC2e%-pCK-=^Ml4l89zw4&|#xB#D>e&puAMxj-g@qrEdOyTN`AsHv zwrm$R1gOR0U2Q_>qx1Nz9fq~!e6aY^F()z&5Yv%{w*#tqsAYb7SB<8Y@<;*pMLvtr z;IUNa)?#vY#MA2zAdm@TA+wp)2b5V#Du^!#M8PWY&j9pclE8D|PWMv`{$5dGN;w3V z1-iN=QTnOW^v^yq6qh_Ov!j&TgHrnnh>eM}LtU^7?YT!%6sbOStp7S>?Hj_W7N6Se zbTYj;w<52TMF^au;}!IltpjI6V7yK_So}D}SXzgqcxWs+0Z@nwX2r{d5I9<0vWc1H zbfOrKrX9J5LFDR%pjj+lZ`J{kj}Ts?Xy4|trUPYxVw3)a!0(ixyxOqJx(7%26sg;% z0nmMiO4p5|W`3V2%D?Y&XhJ9d^rR2YHc_te4}uO1M>tQzG?nS*Mzzoy14J_&fJ!6R83A8i~GM0{`mVgAuA{wJm9}Y{XxANT# z;g6Ea88&vnruJkVmLx>@VFaUUD+dl#YH2wG6lJ0)A&W{%yXV^l)aGm7Fgj;L{6$pG zqv!H{bJwkTKB04&wQqr01ybyv23ce~JPiVsA^?1ocec5`6Pim{nL>8Hk)>gXig8j_ z)N(!o`Byl-8e+p?>`b0y=${7tFR!SwJ($J6o@>J-B?s$+|56@Enl}jgDG-}!#YC{; zV3fdXvzv1S-^&sdF>c-aYw?yTSdRyE|^EibO(+owoEE}KIA z|1{;-SWe;7c`s&^plwQ}U8E*H9pL#1ha3vOy=$ZOFYH5DC1Y^bv7``!gMz3KVMgaL z*KY8SM`K9QFzG#;O`rQ=l=J$3ibZmio>Of6-xjd1)YS*6x55$l-KNd1slNfW#9Et_ zVJ6PqvpNgxt@(EW*2>jE2C&5Z$2585j=A6HA<;=9F|K(d&D)h< zJ3VtHS~PICGqzqeFcui1$A`!5UYJK3yRxT39g9yyvm883oyo@kAX~sBSxn|tjLuK# zPvwXVdXu?eTj2+P?xqUHf^QVTQ<6A@QB_r2Cqa{0rz@!1-B;g5NpJaGv$T0bgJpMWc*D0~n;2_HpWk5h;9cC_rw3~zx}2wi^_vB*7r z(eGFv1gy2JA{(!XdBa+k2}J1a7ZX_jQz&R*FJX+0YfsB%=MrU=o!kC zTs8-ZfGm515t%>>8nQg5@ant6moo(?-7YH4mVP%ltqyCDvR`MP!oGm~j_?Ygv)1Qw zi82=spU1mRjinQQ5+d42)dT~p#=1f|_$A~X-29@?&XOgXrEcZ78Z=M*AW@hcp%2m@ z)UQJ8wmC@)zydnNfOA4NZQgp(Kd#$-g5;g$J`uK$d_qVcM^2iD7)}bWiW+LsjPw2$z9|5k-$-1Yy?!%M>;c`X0+_gd|-VZY&=n&B7}st z`;#ts^*DJijlZ9?^fMzO95`7!FY|dZ`vGf~4?%)CK1 zdr{63BoB-a2=)utf42$M?Gajj9q zVXf3*Cr+#UY$1VFcBbz0grcIt@rC%?c)KegpNSzv-mf%3D|;AY4qkQXDI$bNJX87U z_>1ln<^7Ar@jj$=sXA2>>0rypU9H zc;s1_*dUSj!o#;$TSD_mqhSzSF`VE_OmODcJ$qr%LwS92=ybV1_;hSzyP*ME?w-=U z$dM;C+NHmz`ZI|mkb54n!eV+enA>NH=$!$QsiuzSvPg#V>cso*l2?+t{!i`szq zywuZm=~aS3z`~DB4$80Wm*ICLRB$%?*4l&WN*4yo65-JixDaNuAv~J_MO*7MRp`C0 zDk3iUqsz`z01V=lMpXSI`}X4yFsP#>S=q1wva|rq-2i<8(f9GjJeDFMXCdT|RWKis zkD!A$X6H@Q1>)?!CGQP}=g}v|LinUbgQ*21$$7`o+kizw+9Akk{&NrOt+ReH!mtBo z2kDSF>NFkYW{yAc-V5Fh$uev?T%H7cvjFKs-bVuLs}IO~?Sa~`j;YAt=80?85cqwS z$rBIbEaJhBLl3#{M8?D{Deinx;3!}Mt^opGz0*>Y_8!zBptW40m~j#bup}WxaIv0p zUx@4agX*89yX3dl99H0$1O`j&M3RYAM19s9E;P-aR+$FGktwClkx zC>sqslVzJ5#P{1zDI0X2Z0g;p1FozA8h`NNGC0T`LJ>^kO79S`;uQ8v6^9tNWG51% z!g5Z(ftz?NFsy5hcT_B|?eUru9}RhYO@Ehq=NHnxvx$+=vo5UgTaTGIvOy01m}7_F VqQ@6e{>i3#q@nkq;=XOz{{aC_JJkRH literal 0 HcmV?d00001