From b19b7e0bdc4eee023ddae11c6f8b1636771e5441 Mon Sep 17 00:00:00 2001 From: PhantornRU <41479614+PhantornRU@users.noreply.github.com> Date: Sat, 21 Oct 2023 20:46:21 +1000 Subject: [PATCH] [FEAT] Silicon barriers (#499) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Что этот PR делает Частично портируем голобарьеры со старопары, но с небольшими изменениями. Юниты теперь устанавливают надувные стены, а голобарьер уходит в пользование дронам. Вот такой "порт" (даже беем повеяло). Надувные барьеры потребляют заряд борга. 400/600 ## Почему это хорошо для игры Юниты могут заниматься действительно большими дырами, например последствиями взрыва СМ. А дрончикам многого и не надо, они маленькие и барьер у них компактный + не используют в личных корыстных целях. ## Изображения изменений **Картинка борга с надувными стенами** ## Тестирование Да ## Changelog :cl: add: Киборги получают надувные стены, потребляющие заряд 400/600 add: Дроны получили голобарьер /:cl: --- modular_ss220/modular_ss220.dme | 1 + modular_ss220/silicons/_silicons.dm | 4 ++ modular_ss220/silicons/_silicons.dme | 3 ++ modular_ss220/silicons/code/robot_modules.dm | 57 ++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 modular_ss220/silicons/_silicons.dm create mode 100644 modular_ss220/silicons/_silicons.dme create mode 100644 modular_ss220/silicons/code/robot_modules.dm diff --git a/modular_ss220/modular_ss220.dme b/modular_ss220/modular_ss220.dme index 0171b65824e8..1dd6f4ce49d5 100644 --- a/modular_ss220/modular_ss220.dme +++ b/modular_ss220/modular_ss220.dme @@ -31,6 +31,7 @@ #include "unique_objects/_unique_objects.dme" #include "vending/vending.dme" #include "wire_splicing/wiresplicing.dme" +#include "silicons/_silicons.dme" // --- MISC --- // #include "administration/_administration.dme" diff --git a/modular_ss220/silicons/_silicons.dm b/modular_ss220/silicons/_silicons.dm new file mode 100644 index 000000000000..1a7edaf2bfb5 --- /dev/null +++ b/modular_ss220/silicons/_silicons.dm @@ -0,0 +1,4 @@ +/datum/modpack/silicons + name = "Silicons Modpack" + desc = "Изменения для синтетиков." + author = "PhantomRU" diff --git a/modular_ss220/silicons/_silicons.dme b/modular_ss220/silicons/_silicons.dme new file mode 100644 index 000000000000..ed0d8dfee58c --- /dev/null +++ b/modular_ss220/silicons/_silicons.dme @@ -0,0 +1,3 @@ +#include "_silicons.dm" + +#include "code/robot_modules.dm" diff --git a/modular_ss220/silicons/code/robot_modules.dm b/modular_ss220/silicons/code/robot_modules.dm new file mode 100644 index 000000000000..8f89068a5c98 --- /dev/null +++ b/modular_ss220/silicons/code/robot_modules.dm @@ -0,0 +1,57 @@ +/obj/item/robot_module/drone/Initialize(mapload) + . = ..() + basic_modules |= list( + /obj/item/holosign_creator/atmos, + ) + +/obj/item/robot_module/engineering/Initialize(mapload) + . = ..() + basic_modules |= list( + /obj/item/inflatable/cyborg, + /obj/item/inflatable/cyborg/door, + ) + + +// надувные стены +/obj/item/inflatable/cyborg + name = "надувная стена" + desc = "Сложенная надувная стена, которая при активации быстро расширяется до большой кубической мембраны." + var/power_use = 400 + var/structure_type = /obj/structure/inflatable + +/obj/item/inflatable/cyborg/door + name = "надувной шлюз" + desc = "Сложенный надувной шлюз, который при активации быстро расширяется в простую дверь." + icon_state = "folded_door" + power_use = 600 + structure_type = /obj/structure/inflatable/door + +/obj/item/inflatable/cyborg/examine(mob/user) + . = ..() + . += span_notice("Как синтетик, вы можете восстановить их в cyborg recharger") + +/obj/item/inflatable/cyborg/attack_self(mob/user) + if(locate(/obj/structure/inflatable) in get_turf(user)) + to_chat(user, span_warning("Здесь уже есть надувная стена!")) + return FALSE + + playsound(loc, 'sound/items/zip.ogg', 75, 1) + to_chat(user, span_notice("Вы надули [name]")) + var/obj/structure/inflatable/R = new structure_type(user.loc) + transfer_fingerprints_to(R) + R.add_fingerprint(user) + useResource(user) + +/obj/item/inflatable/cyborg/proc/useResource(mob/user) + if(!isrobot(user)) + return FALSE + var/mob/living/silicon/robot/R = user + if(R.cell.charge < power_use) + to_chat(user, span_warning("Недостаточно заряда!")) + return FALSE + return R.cell.use(power_use) + +//Небольшой багфикс "непрозрачного открытого шлюза" +/obj/structure/inflatable/door/operate() + . = ..() + opacity = FALSE