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