From 2b77e94f80352e85faed8315874f60b94e169fff Mon Sep 17 00:00:00 2001
From: Pivo24 <42682553+Pivo24@users.noreply.github.com>
Date: Sun, 16 Feb 2025 12:31:18 +0300
Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=89?=
=?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D1=81=D1=82=D0=B0=D1=80=D1=8B=D0=B9=20?=
=?UTF-8?q?=D0=BA=D1=83=D0=BB=D1=8C=D1=82=20=D0=B8=20=D0=B4=D0=B0=D1=91?=
=?UTF-8?q?=D1=82=20=D0=B5=D0=BC=D1=83=20=D1=80=D0=B5=D0=B2=D0=BE=D1=80?=
=?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D0=BE=20=D0=B1=D0=B0=D0=BB=D0=B0=D0=BD?=
=?UTF-8?q?=D1=81=D1=83=20(#3208)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: UEDCommander <52104104+UEDCommander@users.noreply.github.com>
---
.../AutoChangeLog-sierra-pr-3213.yml | 2 +-
mods/220_cult/README.md | 65 +++++++++++
mods/220_cult/_220_cult.dm | 4 +
mods/220_cult/_220_cult_includes.dm | 17 +++
mods/220_cult/code/airlock.dm | 6 +
mods/220_cult/code/cult_items.dm | 27 +++++
mods/220_cult/code/ritual.dm | 36 ++++++
mods/220_cult/code/runes.dm | 107 ++++++++++++++++++
mods/220_cult/code/talisman.dm | 25 ++++
mods/220_cult/code/talisman/burn.dm | 24 ++++
mods/220_cult/code/talisman/emp.dm | 14 +++
mods/220_cult/code/talisman/stun.dm | 24 ++++
mods/220_cult/code/talisman/wrath.dm | 30 +++++
mods/220_cult/icons/mob/onmob/onmob_eyes.dmi | Bin 0 -> 340 bytes
mods/220_cult/icons/obj/clothing/obj_eyes.dmi | Bin 0 -> 509 bytes
mods/220_cult/icons/obj/hellstone.dmi | Bin 0 -> 1015 bytes
mods/global_modpacks.dm | 1 +
17 files changed, 381 insertions(+), 1 deletion(-)
create mode 100644 mods/220_cult/README.md
create mode 100644 mods/220_cult/_220_cult.dm
create mode 100644 mods/220_cult/_220_cult_includes.dm
create mode 100644 mods/220_cult/code/airlock.dm
create mode 100644 mods/220_cult/code/cult_items.dm
create mode 100644 mods/220_cult/code/ritual.dm
create mode 100644 mods/220_cult/code/runes.dm
create mode 100644 mods/220_cult/code/talisman.dm
create mode 100644 mods/220_cult/code/talisman/burn.dm
create mode 100644 mods/220_cult/code/talisman/emp.dm
create mode 100644 mods/220_cult/code/talisman/stun.dm
create mode 100644 mods/220_cult/code/talisman/wrath.dm
create mode 100644 mods/220_cult/icons/mob/onmob/onmob_eyes.dmi
create mode 100644 mods/220_cult/icons/obj/clothing/obj_eyes.dmi
create mode 100644 mods/220_cult/icons/obj/hellstone.dmi
diff --git a/html/changelogs/AutoChangeLog-sierra-pr-3213.yml b/html/changelogs/AutoChangeLog-sierra-pr-3213.yml
index 8723248195062..78d09d1f97ebc 100644
--- a/html/changelogs/AutoChangeLog-sierra-pr-3213.yml
+++ b/html/changelogs/AutoChangeLog-sierra-pr-3213.yml
@@ -1,4 +1,4 @@
author: LordNest
changes:
- - {maptweak: Верне. Зачем? Почему? Узнаете в следующих сериях}
+ - {maptweak: Верне. Зачем и почему - узнаете в следующих сериях}
delete-after: true
diff --git a/mods/220_cult/README.md b/mods/220_cult/README.md
new file mode 100644
index 0000000000000..ef673534e157e
--- /dev/null
+++ b/mods/220_cult/README.md
@@ -0,0 +1,65 @@
+
+#### Список PRов:
+
+- https://github.com/SierraBay/SierraBay12/pull/#####
+
+
+
+## Мод-пример
+
+ID мода: 220_CULT
+
+
+### Описание мода
+
+Этот мод служит примером для разработчиков и существует лишь для того,
+чтобы его можно было легко скопировать и вставить в другое место.
+
+
+### Изменения *кор кода*
+
+- `Отсутствуют`
+
+
+### Оверрайды
+
+- `Отсутствуют`
+
+
+### Дефайны
+
+- `Отсутствуют`
+
+
+### Используемые файлы, не содержащиеся в модпаке
+
+- `icons/obj/cult.dmi (спрайт ножа хелл-хантера)`
+
+
+### Авторы:
+
+- `Vipo24`
+
diff --git a/mods/220_cult/_220_cult.dm b/mods/220_cult/_220_cult.dm
new file mode 100644
index 0000000000000..854a6cd4a4bb2
--- /dev/null
+++ b/mods/220_cult/_220_cult.dm
@@ -0,0 +1,4 @@
+/singleton/modpack/cultsierra
+ name = "Культ 220 Сьерры"
+ desc = "Культ, который существовал до СьерраБея, переезжает на новый билд. Более опасный, более страшный. Кровь богу крови!"
+ author = "Vipo24"
diff --git a/mods/220_cult/_220_cult_includes.dm b/mods/220_cult/_220_cult_includes.dm
new file mode 100644
index 0000000000000..0639922c350dd
--- /dev/null
+++ b/mods/220_cult/_220_cult_includes.dm
@@ -0,0 +1,17 @@
+#ifndef MODPACK_220_CULT
+#define MODPACK_220_CULT
+
+#include "_220_cult.dm"
+
+// Далее просто включай свой код
+// #include "code/something.dm"
+#include "code/cult_items.dm"
+#include "code/runes.dm"
+#include "code/airlock.dm"
+#include "code/talisman.dm"
+#include "code/ritual.dm"
+#include "code/talisman/burn.dm"
+#include "code/talisman/wrath.dm"
+#include "code/talisman/stun.dm"
+#include "code/talisman/emp.dm"
+#endif
diff --git a/mods/220_cult/code/airlock.dm b/mods/220_cult/code/airlock.dm
new file mode 100644
index 0000000000000..2644ce4a14c01
--- /dev/null
+++ b/mods/220_cult/code/airlock.dm
@@ -0,0 +1,6 @@
+/obj/machinery/door/airlock/use_tool(obj/item/C, mob/living/user, list/click_params)
+
+ if (istype(C, /obj/item/paper/talisman/emp)) //220_cult - обязательная строчка для взаимодействия талисмана со шлюзом
+ return
+
+ return ..()
diff --git a/mods/220_cult/code/cult_items.dm b/mods/220_cult/code/cult_items.dm
new file mode 100644
index 0000000000000..574c220202a25
--- /dev/null
+++ b/mods/220_cult/code/cult_items.dm
@@ -0,0 +1,27 @@
+/obj/item/reagent_containers/glass/bucket/wood/cult/New()
+ ..()
+ reagents.add_reagent(/datum/reagent/hell_water, 120)
+ update_icon()
+
+
+/obj/item/device/flashlight/flashdark/stone
+ name = "hellstone shard"
+ desc = "The stone is blacker than the night itself, it seems to dim all the light around."
+ icon = 'mods/220_cult/icons/obj/hellstone.dmi'
+ icon_state = "hellstone"
+ item_state = "electronic"
+ activation_sound = null
+
+/obj/item/clothing/glasses/tacgoggles/cult
+ name = "hell goggles"
+ desc = "Its look equally funny and frightening."
+ item_icons = list(slot_glasses_str = 'mods/220_cult/icons/mob/onmob/onmob_eyes.dmi')
+ icon = 'mods/220_cult/icons/obj/clothing/obj_eyes.dmi'
+ icon_state = "hg"
+ item_state = "hg"
+ off_state = "hg_off"
+ darkness_view = 5
+
+/obj/item/clothing/glasses/tacgoggles/cult/Initialize()
+ . = ..()
+ overlay = GLOB.global_hud.thermal
diff --git a/mods/220_cult/code/ritual.dm b/mods/220_cult/code/ritual.dm
new file mode 100644
index 0000000000000..652f298d1fa6b
--- /dev/null
+++ b/mods/220_cult/code/ritual.dm
@@ -0,0 +1,36 @@
+/datum/antagonist/cultist/Initialize()
+ . = ..()
+ global.Tier1Runes = list(
+ /mob/proc/convert_rune,
+ /mob/proc/teleport_rune,
+ /mob/proc/tome_rune,
+ /mob/proc/wall_rune,
+ /mob/proc/ajorney_rune,
+ /mob/proc/defile_rune,
+ /mob/proc/stun_imbue,
+ /mob/proc/emp_imbue,
+ /mob/proc/cult_communicate,
+ /mob/proc/obscure,
+ /mob/proc/reveal,
+ /mob/proc/burn_imbue
+ )
+
+ global.Tier2Runes = list(
+ /mob/proc/armor_rune,
+ /mob/proc/offering_rune,
+ /mob/proc/drain_rune,
+ /mob/proc/emp_rune,
+ /mob/proc/massdefile_rune,
+ /mob/proc/wrath_imbue,
+ /mob/proc/hellhunter_rune,
+ /mob/proc/hellbucket_rune,
+ /mob/proc/hellstone_rune
+ )
+
+ global.Tier3Runes = list(
+ /mob/proc/weapon_rune,
+ /mob/proc/shell_rune,
+ /mob/proc/bloodboil_rune,
+ /mob/proc/confuse_rune,
+ /mob/proc/revive_rune
+ )
diff --git a/mods/220_cult/code/runes.dm b/mods/220_cult/code/runes.dm
new file mode 100644
index 0000000000000..8e6b6716bb616
--- /dev/null
+++ b/mods/220_cult/code/runes.dm
@@ -0,0 +1,107 @@
+/mob/proc/wrath_imbue()
+ set category = "Cult Magic"
+ set name = "Imbue: Wrath Burning"
+
+ make_rune(/obj/rune/imbue/wrath, cost = 15)
+
+/obj/rune/imbue/wrath
+ cultname = "wrath burning imbue"
+ papertype = /obj/item/paper/talisman/wrath
+
+/mob/proc/burn_imbue()
+ set category = "Cult Magic"
+ set name = "Imbue: Burning"
+
+ make_rune(/obj/rune/imbue/burn)
+
+/obj/rune/imbue/burn
+ cultname = "burning imbue"
+ papertype = /obj/item/paper/talisman/burn
+
+/mob/proc/hellbucket_rune()
+ set category = "Cult Magic"
+ set name = "Rune: Summon HellWater"
+
+ make_rune(/obj/rune/hellbucket, cost = 15)
+
+/obj/rune/hellbucket
+ cultname = "summon hellwater"
+
+/obj/rune/hellbucket/cast(mob/living/user)
+ new /obj/item/reagent_containers/glass/bucket/wood/cult(get_turf(src))
+ speak_incantation(user, "N[pick("'","`")]ath chsz'rchesh tza'jink'tumakes!")
+ visible_message("\The [src] disappears with a flash of red light.", "You hear a pop.")
+ qdel(src)
+
+/mob/proc/hellhunter_rune()
+ set category = "Cult Magic"
+ set name = "Rune: Summon HellHunter equip"
+
+ make_rune(/obj/rune/hellhunter, cost = 15, tome_required = 1)
+
+/obj/rune/hellhunter
+ cultname = "summon hellhunter equip"
+
+/obj/rune/hellhunter/cast(mob/living/user)
+ new /obj/item/device/flashlight/flashdark/stone(get_turf(src))
+ new /obj/item/clothing/glasses/tacgoggles/cult(get_turf(src))
+ new /obj/item/material/knife/ritual(get_turf(src))
+ speak_incantation(user, "N[pick("'","`")]ath chip'ayiayan auyana!")
+ visible_message("\The [src] disappears with a flash of red light.", "You hear a pop.")
+ qdel(src)
+
+/mob/proc/hellstone_rune()
+ set category = "Cult Magic"
+ set name = "Rune: HellStone"
+
+ make_rune(/obj/rune/hellstone, cost = 15, tome_required = 1)
+
+/obj/rune/hellstone
+ cultname = "summon hellstone"
+
+/obj/rune/hellstone/cast(mob/living/user)
+ new /obj/item/device/flashlight/flashdark/stone(get_turf(src))
+ speak_incantation(user, "N[pick("'","`")]akkakkaya'iyakaiya!")
+ visible_message("\The [src] disappears with a flash of red light.", "You hear a pop.")
+ qdel(src)
+
+/obj/rune/blood_boil
+ cultname = "blood boil"
+ strokes = 4
+ var/spamcheck = 0
+
+/obj/rune/blood_boil/cast(mob/living/user)
+ var/list/mob/living/cultists = get_cultists()
+ if(length(cultists) < 3)
+ return fizzle()
+
+ if(spamcheck)
+ return
+
+ for(var/mob/living/M in cultists)
+ M.say("Dedo ol[pick("'","`")]btoh!")
+// твик старой руны - больше не позволено спамить кликами для инста-килла, но куковать у руны долго всё ещё опасно
+ spamcheck = 1
+ sleep(40)
+ spamcheck = 0
+
+ var/list/mob/living/previous = list()
+ var/list/mob/living/current = list()
+ while(length(cultists) >= 3)
+ cultists = get_cultists()
+ for(var/mob/living/carbon/M in viewers(src))
+ if(iscultist(M))
+ continue
+ current |= M
+ var/obj/item/nullrod/N = locate() in M
+ if(N)
+ continue
+ M.take_overall_damage(5, 5)
+ if(!(M in previous))
+ if(M.should_have_organ(BP_HEART))
+ to_chat(M, SPAN_DANGER("Your blood boils!"))
+ else
+ to_chat(M, SPAN_DANGER("You feel searing heat inside!"))
+ previous = current.Copy()
+ current.Cut()
+ sleep(10)
diff --git a/mods/220_cult/code/talisman.dm b/mods/220_cult/code/talisman.dm
new file mode 100644
index 0000000000000..876b96fef124e
--- /dev/null
+++ b/mods/220_cult/code/talisman.dm
@@ -0,0 +1,25 @@
+/obj/item/paper/talisman/use_after(atom/target, mob/living/user, click_parameters)
+ if (!can_invoke(target, user))
+ return TRUE
+
+ // Null rods block the talisman's effect but still consume it
+ var/obj/item/nullrod/nullrod = locate() in target
+ if (nullrod)
+ user.visible_message(
+ SPAN_DANGER("\The [user] invokes \the [src] at \the [target]!"),
+ SPAN_DANGER("You invoke \the [talisman_name] talisman at \the [target], but it fails and falls to dust!"),
+ )
+ else
+ user.visible_message(
+ SPAN_DANGER("\The [user] invokes \the [src] at \the [target]!"),
+ SPAN_DANGER("You invoke \the [talisman_name] talisman at \the [target]!")
+ )
+ admin_attack_log(user, target, "Used a talisman ([type]).", "Was victim of a talisman ([type]).", "used a talisman ([type]) on")
+ invoke(target, user)
+ //user.say("Talisman [talisman_name]!", all_languages[LANGUAGE_CULT]) // нет мы не будем кричать одновременно разные кричалки на культистском
+ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
+ user.do_attack_animation(target)
+ if (talisman_sound)
+ playsound(src, talisman_sound, 100, 1)
+ qdel(src)
+ return TRUE
diff --git a/mods/220_cult/code/talisman/burn.dm b/mods/220_cult/code/talisman/burn.dm
new file mode 100644
index 0000000000000..e1685df466256
--- /dev/null
+++ b/mods/220_cult/code/talisman/burn.dm
@@ -0,0 +1,24 @@
+/obj/item/paper/talisman/burn
+ talisman_name = "burning"
+ talisman_desc = "ignites a mob, which is useful for disposing of bodies, or heavily damages a silicon mob"
+ valid_target_type = list(
+ /mob/living/carbon,
+ /mob/living/silicon,
+ /mob/living/simple_animal
+ )
+
+/obj/item/paper/talisman/burn/invoke(mob/living/target, mob/user)
+ if(!iscultist(user))
+ return
+ var/obj/item/nullrod/nrod = locate() in target
+ if(nrod)
+ return
+ else
+ if(issilicon(target))
+ target.apply_damage(50, DAMAGE_BURN)
+ else if(iscarbon(target))
+ var/mob/living/carbon/C = target
+ C.adjust_fire_stacks(rand(1,3))
+ C.IgniteMob()
+ user.unEquip(src)
+ qdel(src)
diff --git a/mods/220_cult/code/talisman/emp.dm b/mods/220_cult/code/talisman/emp.dm
new file mode 100644
index 0000000000000..003e7aedcadef
--- /dev/null
+++ b/mods/220_cult/code/talisman/emp.dm
@@ -0,0 +1,14 @@
+/obj/item/paper/talisman/emp
+
+ talisman_name = "emp"
+ talisman_desc = "invokes a localized EMP effect on the target. Can be used on machinery or mobs"
+ talisman_sound = 'sound/effects/EMPulse.ogg'
+ valid_target_type = list(
+ /mob,
+ /obj/machinery,
+ /obj/machinery/door
+ )
+/obj/item/paper/talisman/emp/invoke(atom/target, mob/user)
+ user.say("Ta'gh fara[pick("'","`")]qha fel d'amar det!", all_languages[LANGUAGE_CULT])
+ user.visible_message("\The [user] invokes \the [src] at [target].", "You invoke \the [src] at [target].")
+ target.emp_act(1)
diff --git a/mods/220_cult/code/talisman/stun.dm b/mods/220_cult/code/talisman/stun.dm
new file mode 100644
index 0000000000000..ac3593a930c1c
--- /dev/null
+++ b/mods/220_cult/code/talisman/stun.dm
@@ -0,0 +1,24 @@
+/obj/item/paper/talisman/stun // понерфленная, но не сломленная (раньше было 30 секунд стана типо чтооо)
+ talisman_name = "stun"
+ talisman_desc = "temporarily stuns a targeted mob with a blinding and disorienting flash of light"
+ talisman_sound = 'sound/weapons/flash.ogg'
+ valid_target_type = list(
+ /mob/living/carbon,
+ /mob/living/silicon,
+ /mob/living/simple_animal
+ )
+/obj/item/paper/talisman/stun/invoke(mob/living/target, mob/living/user)
+ user.say("Dream Sign: Evil Sealing Talisman!", all_languages[LANGUAGE_CULT]) //TODO: never change this shit
+ if(issilicon(target))
+ target.Weaken(2) // 4 секунды - хорошо комбинировать с ЭМИ!
+ target.silent += 5 // 10 секунд молчания
+ else if(iscarbon(target))
+ var/mob/living/carbon/C = target
+ C.silent += 5 // 10 секунд молчания
+ C.Weaken(4) // 8 секунд
+ C.Stun(3) // 6 секунд
+ else
+ var/obj/item/device/flash/flash = new(src)
+ flash.do_flash(target)
+ qdel(flash)
+ admin_attack_log(user, target, "Used a stun talisman.", "Was victim of a stun talisman.", "used a stun talisman on")
diff --git a/mods/220_cult/code/talisman/wrath.dm b/mods/220_cult/code/talisman/wrath.dm
new file mode 100644
index 0000000000000..d183ed37549a8
--- /dev/null
+++ b/mods/220_cult/code/talisman/wrath.dm
@@ -0,0 +1,30 @@
+/obj/item/paper/talisman/wrath
+ talisman_name = "wrath burning"
+ talisman_desc = "deals heavy damage and shocks mob, while you invoke the talisman magic"
+ valid_target_type = list(
+ /mob/living/carbon,
+ /mob/living/silicon,
+ /mob/living/simple_animal
+ )
+
+/obj/item/paper/talisman/wrath/invoke(mob/living/target, mob/user)
+ if(!iscultist(user))
+ return
+ user.say("Ощути гнев моего Бога!")
+ var/obj/item/nullrod/nrod = locate() in target
+ if(nrod)
+ user.visible_message("\The [user] invokes \the [src] at [target], but they are unaffected.", "You invoke \the [src] at [target], but they are unaffected.")
+ return
+ else
+ user.visible_message("\The [user] invokes \the [src] at [target].", "You invoke \the [src] at [target].")
+
+ if(issilicon(target))
+ target.apply_damage(30, DAMAGE_BRUTE)
+ target.apply_damage(30, DAMAGE_BURN)
+ else if(iscarbon(target))
+ var/mob/living/carbon/C = target
+ C.apply_damage(25, DAMAGE_BRUTE)
+ C.apply_damage(25, DAMAGE_SHOCK)
+ admin_attack_log(user, target, "Used a wrathburning talisman.", "Was victim of a wrathburning talisman.", "used a wrathburning talisman on")
+ user.unEquip(src)
+ qdel(src)
diff --git a/mods/220_cult/icons/mob/onmob/onmob_eyes.dmi b/mods/220_cult/icons/mob/onmob/onmob_eyes.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..21705a1b6530a395629ca798b65f6329fbf91b4f
GIT binary patch
literal 340
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeE3?v1%WpM*3(Ey(iS0F7fFR!JgHIsqi3>knv?>FNHaeCLNg+q7ba99NXD#
zth#xH#FFN2iOI^vKUt1Q+_UzS1%5%v`9+2od9{{h
z@}<6W4e3*Qe3sWvf|;S=cD0G1xn*h`u-V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+
z(=$pSoZ^zil2jm5DI;Bpi!&v&s2IpGgNKs8UU)<
zBjNgL$@KsL0ZK_kK~#90?UONX!!Qg*6(CFDwVt)BhwzvKbniiOfbP9Q_8y>z@L2Df
zoz-&+I-yG|lqE%hj0AiO4e9%TQnHm21VIo4;T|+ib27%9pgvW8$Qbvv*0cKX`4~z~
zX){>4Kv>JYiBp8cuYCan043KjJYv-$_|E)w5CG)r3;xG)k*%N)=C%;oN
zpFM!8s#IOq<1_aec3rn|*Ek&va?3C!^RJ8m_;jEN%I`~eerT0?GiKHV4R>|WfVGy*
z@xkREi0{WjzN-u6dpBqk<52D7JA&p2XgS@x*2xFp<{uc}FD9SUeFpN`UjTuCv5EHI
zkeXjXbY4vYCGr<<25tfBx3x1HcD^78f*=TjAUq*|=r~L>>cFm|00000NkvXXu0mjfGim75
literal 0
HcmV?d00001
diff --git a/mods/220_cult/icons/obj/hellstone.dmi b/mods/220_cult/icons/obj/hellstone.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..327046055cfc1d4fd137b5245f31eb6ca5093c30
GIT binary patch
literal 1015
zcmVV=-0C=2j%CQQ+Yu6L0X$32*p&$4t?mI=1cS!OK4#H19Cn_byfDwQbeiXhD*wl9)|nTK
zB7iXloO1|*;Ep^DL-2hcFhLC!4XXSY4Q=1j7ClUrPWn$zh*E
zGHf%(?w;8KhQDooqb}h4{x^l?b{K{xpB|lGs}c-?0K@`BG)Tq}g^>>b+4FV)-DR?}
z0C5~wO~a4vY%c?=zb5{V*=#4@SFH-QhQTO`DhxGLeQ4(qm;+>fm7%T;+LIwM+{SXg
ziNCM&0EUwxD#&AcU*`cHOn@Qq^eaM60BQrM;RK*IfErE!Y6Ga@1fVv68cqOe1E}Ey
zpf-RS54$_OU7S+9{&V@AHow^pQSz)gs*-&sE&uqw-By}ZJZ(V)t&B7$-b!2Ykh
zKW`&1i2dJ$zb!8edOiUE4cn2R%ik6W?tFmCOJexry|K;*$l-6B-<=Q8AvW2ce|vw?
zp%|UNQvk90)7hU#;yxpQT>Y8wAO5$SMggT^P|N{!`}1`w+bW6W9H7eI