From c3250081dd55a556c0698466a3c74371523cbe61 Mon Sep 17 00:00:00 2001 From: Avitch Date: Mon, 27 May 2024 17:49:35 +0300 Subject: [PATCH] scp012_fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исправляем меметический эффект 012 --- mod_celadon/mod_celadon.dme | 1 + mod_celadon/scp012_fix/README.md | 34 +++++++++++++++++++++++ mod_celadon/scp012_fix/_scp012_fix.dm | 10 +++++++ mod_celadon/scp012_fix/_scp012_fix.dme | 8 ++++++ mod_celadon/scp012_fix/code/scp012_fix.dm | 30 ++++++++++++++++++++ 5 files changed, 83 insertions(+) create mode 100644 mod_celadon/scp012_fix/README.md create mode 100644 mod_celadon/scp012_fix/_scp012_fix.dm create mode 100644 mod_celadon/scp012_fix/_scp012_fix.dme create mode 100644 mod_celadon/scp012_fix/code/scp012_fix.dm diff --git a/mod_celadon/mod_celadon.dme b/mod_celadon/mod_celadon.dme index 48d3387d09..d19fc37f97 100644 --- a/mod_celadon/mod_celadon.dme +++ b/mod_celadon/mod_celadon.dme @@ -15,6 +15,7 @@ #include "sci_job_names/_sci_job_names.dme" #include "contraband_fix/_contraband_fix.dme" #include "utf_8/_utf_8.dme" +#include "scp012_fix/_scp012_fix.dme" // --- OBJECTS --- // diff --git a/mod_celadon/scp012_fix/README.md b/mod_celadon/scp012_fix/README.md new file mode 100644 index 0000000000..cc528e70cd --- /dev/null +++ b/mod_celadon/scp012_fix/README.md @@ -0,0 +1,34 @@ + + +#### Список PRов: + +- https://github.com/CeladonSS13/Foundation-19/tree/beta-dev/##### + +## Мод-пример + +ID мода: SCP012_FIX + +### Описание мода + +Модпак для исправления меметического эффекта 012. Теперь объект не влияет, если стоять к нему спиной или закрыть +глаза повязкой. + +### Изменения *кор кода* + +- `code/modules/SCP/SCP-012.dm`: `/obj/item/paper/scp012/proc/memetic_effect(mob/living/carbon/human/H)` + +### Оверрайды + +Отсуствуют + +### Дефайны + +Отсуствуют + +### Используемые файлы, не содержащиеся в модпаке + +Отсуствуют + +### Авторы: + +OlegDark diff --git a/mod_celadon/scp012_fix/_scp012_fix.dm b/mod_celadon/scp012_fix/_scp012_fix.dm new file mode 100644 index 0000000000..2d749ff311 --- /dev/null +++ b/mod_celadon/scp012_fix/_scp012_fix.dm @@ -0,0 +1,10 @@ +/datum/modpack/scp012_fix + /// Строковое имя модпака. Используется для поиска других модпаков в init. + name = "scp012_fix" + /// Строковое описание для модпака. Может использоваться для списка глаголов модпака в качестве описания. + desc = "Помогаем 012 правильно определять тех, кто его видит" + /// Строка с авторами этого модпака. + author = "OlegDark" + +///**********************************************************************/// + diff --git a/mod_celadon/scp012_fix/_scp012_fix.dme b/mod_celadon/scp012_fix/_scp012_fix.dme new file mode 100644 index 0000000000..709e6ea9ae --- /dev/null +++ b/mod_celadon/scp012_fix/_scp012_fix.dme @@ -0,0 +1,8 @@ +#ifndef MODPACK_CELADON_SCP012_FIX +#define MODPACK_CELADON_SCP012_FIX + +#include "_scp012_fix.dm" + +#include "code/scp012_fix.dm" + +#endif diff --git a/mod_celadon/scp012_fix/code/scp012_fix.dm b/mod_celadon/scp012_fix/code/scp012_fix.dm new file mode 100644 index 0000000000..eafd9bcc9b --- /dev/null +++ b/mod_celadon/scp012_fix/code/scp012_fix.dm @@ -0,0 +1,30 @@ +// Перегрузка базового метода scp012 +// Возможно изменение параметров стана в дальнейшем. +/obj/item/paper/scp012/memetic_effect(mob/living/carbon/human/H) + + var/obj/item/paper/scp012/A = locate(/obj/item/paper/scp012/) in GLOB.SCP_list // Находим объект + if (!A) // Уходим, если объекта нет O.O + return + if(!H || H.stat == UNCONSCIOUS || H.blinded || !H.can_see(A)) //Unconscious individuals cant keep hurting themselves + return + + if(get_dist(H, src) > 1) + step_to(H, src) + H.Stun(2) + else if(((world.time - effect_cooldown_counter) > effect_cooldown) || abs((world.time - effect_cooldown_counter) - effect_cooldown) < 0.1 SECONDS) //Last part is so that this can run for all affected humans without worrying about cooldown + H.Stun(60) + if(prob(60) && H.getBruteLoss()) + H.visible_message(SPAN_WARNING("[H] smears [H.p_their()] blood on \"[name]\", writing musical notes...")) + else if(prob(50)) + H.visible_message(SPAN_DANGER("[H] rips into [H.p_their()] own flesh and covers [H.p_their()] hands in blood!")) + H.emote("scream") + H.apply_damage(25, BRUTE, prob(50) ? BP_L_ARM : BP_R_ARM) + H.drip(50) + else if(prob(30)) + if(prob(50)) + H.visible_message(SPAN_NOTICE("[H] looks at the \"[name]\" and sighs dejectedly.")) + playsound(H, "sounds/voice/emotes/sigh_[gender2text(H.gender)].ogg", 100) + else + H.visible_message(SPAN_NOTICE("[H] looks at the \"[name]\" and cries.")) + playsound(H, "sounds/voice/emotes/[gender2text(H.gender)]_cry[pick(list("1","2"))].ogg", 100) + effect_cooldown_counter = world.time