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