Skip to content

Commit

Permalink
Возвращает старый культ и даёт ему реворки по балансу (#3208)
Browse files Browse the repository at this point in the history
Co-authored-by: UEDCommander <[email protected]>
  • Loading branch information
Pivo24 and UEDCommander authored Feb 16, 2025
1 parent 3c5ab11 commit 2b77e94
Show file tree
Hide file tree
Showing 17 changed files with 381 additions and 1 deletion.
2 changes: 1 addition & 1 deletion html/changelogs/AutoChangeLog-sierra-pr-3213.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
author: LordNest
changes:
- {maptweak: Верне. Зачем? Почему? Узнаете в следующих сериях}
- {maptweak: Верне. Зачем и почему - узнаете в следующих сериях}
delete-after: true
65 changes: 65 additions & 0 deletions mods/220_cult/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@

#### Список PRов:

- https://github.com/SierraBay/SierraBay12/pull/#####
<!--
Ссылки на PRы, связанные с модом:
- Создание
- Большие изменения
-->

<!-- Старый культ Сьерры 220. -->
## Мод-пример

ID мода: 220_CULT
<!--
220_CULT
-->

### Описание мода

Этот мод служит примером для разработчиков и существует лишь для того,
чтобы его можно было легко скопировать и вставить в другое место.
<!--
Реверт старого культа + добавление новых фич и фишек. Старые руны и талисманы, а также новые способы играться за культистов!
-->

### Изменения *кор кода*

- `Отсутствуют`
<!--
Отсутствуют
-->

### Оверрайды

- `Отсутствуют`
<!--
Отсутствуют
-->

### Дефайны

- `Отсутствуют`
<!--
Отсутствуют
-->

### Используемые файлы, не содержащиеся в модпаке

- `icons/obj/cult.dmi (спрайт ножа хелл-хантера)`
<!--
Будь то немодульный файл или модульный файл, который не содержится в папке,
принадлежащей этому конкретному моду, он должен быть упомянут здесь.
Хорошими примерами являются иконки или звуки, которые используются одновременно
несколькими модулями, или что-либо подобное.
-->

### Авторы:

- `Vipo24`
<!--
Здесь находится твой никнейм
Если работал совместно - никнеймы тех, кто помогал.
В случае порта чего-либо должна быть ссылка на источник.
-->
4 changes: 4 additions & 0 deletions mods/220_cult/_220_cult.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/singleton/modpack/cultsierra
name = "Культ 220 Сьерры"
desc = "Культ, который существовал до СьерраБея, переезжает на новый билд. Более опасный, более страшный. Кровь богу крови!"
author = "Vipo24"
17 changes: 17 additions & 0 deletions mods/220_cult/_220_cult_includes.dm
Original file line number Diff line number Diff line change
@@ -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
6 changes: 6 additions & 0 deletions mods/220_cult/code/airlock.dm
Original file line number Diff line number Diff line change
@@ -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 ..()
27 changes: 27 additions & 0 deletions mods/220_cult/code/cult_items.dm
Original file line number Diff line number Diff line change
@@ -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
36 changes: 36 additions & 0 deletions mods/220_cult/code/ritual.dm
Original file line number Diff line number Diff line change
@@ -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
)
107 changes: 107 additions & 0 deletions mods/220_cult/code/runes.dm
Original file line number Diff line number Diff line change
@@ -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("<span class='notice'>\The [src] disappears with a flash of red light.</span>", "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("<span class='notice'>\The [src] disappears with a flash of red light.</span>", "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("<span class='notice'>\The [src] disappears with a flash of red light.</span>", "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)
25 changes: 25 additions & 0 deletions mods/220_cult/code/talisman.dm
Original file line number Diff line number Diff line change
@@ -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
24 changes: 24 additions & 0 deletions mods/220_cult/code/talisman/burn.dm
Original file line number Diff line number Diff line change
@@ -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)
14 changes: 14 additions & 0 deletions mods/220_cult/code/talisman/emp.dm
Original file line number Diff line number Diff line change
@@ -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("<span class='danger'>\The [user] invokes \the [src] at [target].</span>", "<span class='danger'>You invoke \the [src] at [target].</span>")
target.emp_act(1)
24 changes: 24 additions & 0 deletions mods/220_cult/code/talisman/stun.dm
Original file line number Diff line number Diff line change
@@ -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")
30 changes: 30 additions & 0 deletions mods/220_cult/code/talisman/wrath.dm
Original file line number Diff line number Diff line change
@@ -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("<span class='danger'>\The [user] invokes \the [src] at [target], but they are unaffected.</span>", "<span class='danger'>You invoke \the [src] at [target], but they are unaffected.</span>")
return
else
user.visible_message("<span class='danger'>\The [user] invokes \the [src] at [target].</span>", "<span class='danger'>You invoke \the [src] at [target].</span>")

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)
Binary file added mods/220_cult/icons/mob/onmob/onmob_eyes.dmi
Binary file not shown.
Binary file added mods/220_cult/icons/obj/clothing/obj_eyes.dmi
Binary file not shown.
Binary file added mods/220_cult/icons/obj/hellstone.dmi
Binary file not shown.
Loading

0 comments on commit 2b77e94

Please sign in to comment.