Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,228 changes: 0 additions & 1,228 deletions code/modules/antagonists/eldritch_cult/eldritch_magic.dm

This file was deleted.

17 changes: 17 additions & 0 deletions code/modules/antagonists/eldritch_cult/magic/amygdala_assault.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/datum/action/cooldown/spell/pointed/projectile/assault
name = "Amygdala Assault"
desc = "Blast a single ray of concentrated mental energy at a target, dealing high brute damage if they are caught in it"
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/obj/hand_of_god_structures.dmi'
button_icon_state = "ward-red"

sound = 'sound/weapons/resonator_blast.ogg'
cast_range = 7
cooldown_time = 25 SECONDS
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

invocation = "D'O'DGE TH'IS!"
invocation_type = INVOCATION_SHOUT

projectile_type = /obj/projectile/heretic_assault
65 changes: 65 additions & 0 deletions code/modules/antagonists/eldritch_cult/magic/ash_beams.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/datum/action/cooldown/spell/pointed/ash_beams
name = "Nightwatcher's Rite"
desc = "A powerful spell that releases five streams of eldritch fire towards the target."
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "flames"
ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi'

school = SCHOOL_FORBIDDEN
invocation = "F'RE"
invocation_type = INVOCATION_WHISPER

cooldown_time = 30 SECONDS
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

/// The length of the flame line spit out.
var/flame_line_length = 15

/datum/action/cooldown/spell/pointed/ash_beams/is_valid_target(atom/cast_on)
return TRUE

/datum/action/cooldown/spell/pointed/ash_beams/cast(atom/target)
. = ..()
var/static/list/offsets = list(-25, -10, 0, 10, 25)
for(var/offset in offsets)
INVOKE_ASYNC(src, PROC_REF(fire_line), owner, line_target(offset, flame_line_length, target, owner))

/datum/action/cooldown/spell/pointed/ash_beams/proc/line_target(offset, range, atom/at, atom/user)
if(!at)
return
var/angle = ATAN2(at.x - user.x, at.y - user.y) + offset
var/turf/T = get_turf(user)
for(var/i in 1 to range)
var/turf/check = locate(user.x + cos(angle) * i, user.y + sin(angle) * i, user.z)
if(!check)
break
T = check
return (getline(user, T) - get_turf(user))

/datum/action/cooldown/spell/pointed/ash_beams/proc/fire_line(atom/source, list/turfs)
var/list/hit_list = list()
for(var/turf/T in turfs)
if(istype(T, /turf/closed))
break

for(var/mob/living/L in T.contents)
if(L.can_block_magic())
L.visible_message(span_danger("The fire parts in front of [L]!"),span_danger("As the fire approaches it splits off to avoid contact with you!"))
continue
if(L in hit_list || L == source)
continue
hit_list += L
L.adjustFireLoss(20)
to_chat(L, span_userdanger("You're hit by [source]'s fire blast!"))

new /obj/effect/hotspot(T)
T.hotspot_expose(700,50,1)
// deals damage to mechs
for(var/obj/mecha/M in T.contents)
if(M in hit_list)
continue
hit_list += M
M.take_damage(45, BURN, MELEE, 1)
sleep(0.15 SECONDS)
38 changes: 38 additions & 0 deletions code/modules/antagonists/eldritch_cult/magic/ash_jaunt.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash
name = "Ashen Passage"
desc = "A short range spell that allows you to pass unimpeded through walls."
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "ash_shift"
sound = null

school = SCHOOL_FORBIDDEN
cooldown_time = 15 SECONDS

spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

exit_jaunt_sound = null
jaunt_duration = 1.1 SECONDS
jaunt_in_time = 1.3 SECONDS
jaunt_out_time = 0.6 SECONDS
jaunt_in_type = /obj/effect/temp_visual/dir_setting/ash_shift
jaunt_out_type = /obj/effect/temp_visual/dir_setting/ash_shift/out


/datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash/do_steam_effects()
return

/datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash/long
name = "Ashen Walk"
desc = "A long range spell that allows you pass unimpeded through multiple walls."
jaunt_duration = 5 SECONDS

/obj/effect/temp_visual/dir_setting/ash_shift
name = "ash_shift"
icon = 'icons/mob/mob.dmi'
icon_state = "ash_shift2"
duration = 1.3 SECONDS

/obj/effect/temp_visual/dir_setting/ash_shift/out
icon_state = "ash_shift"
68 changes: 68 additions & 0 deletions code/modules/antagonists/eldritch_cult/magic/blood_siphon.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/datum/action/cooldown/spell/pointed/blood_siphon
name = "Blood Siphon"
desc = "A touch spell that heals your wounds while damaging the enemy. \
It has a chance to transfer wounds between you and your enemy."
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "blood_siphon"
ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi'

school = SCHOOL_FORBIDDEN
cooldown_time = 15 SECONDS

invocation = "FL'MS O'ET'RN'ITY"
invocation_type = INVOCATION_WHISPER
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

cast_range = 6

/datum/action/cooldown/spell/pointed/blood_siphon/can_cast_spell(feedback = TRUE)
return ..() && isliving(owner)

/datum/action/cooldown/spell/pointed/blood_siphon/is_valid_target(atom/cast_on)
return ..() && isliving(cast_on)

/datum/action/cooldown/spell/pointed/blood_siphon/cast(mob/living/cast_on)
. = ..()
playsound(owner, 'sound/magic/demon_attack1.ogg', 75, TRUE)
if(cast_on.can_block_magic())
owner.balloon_alert(owner, "spell blocked!")
cast_on.visible_message(
span_danger("The spell bounces off of [cast_on]!"),
span_danger("The spell bounces off of you!"),
)
return FALSE

cast_on.visible_message(
span_danger("[cast_on] turns pale as a red glow envelops [cast_on.p_them()]!"),
span_danger("You pale as a red glow enevelops you!"),
)

var/mob/living/living_owner = owner
cast_on.adjustBruteLoss(20)
living_owner.adjustBruteLoss(-20)

if(!cast_on.blood_volume || !living_owner.blood_volume)
return TRUE

cast_on.blood_volume -= 20
if(living_owner.blood_volume < BLOOD_VOLUME_MAXIMUM(living_owner)) // we dont want to explode from casting
living_owner.blood_volume += 20

if(!iscarbon(cast_on) || !iscarbon(owner))
return TRUE

var/mob/living/carbon/carbon_target = cast_on
var/mob/living/carbon/carbon_user = owner
for(var/obj/item/bodypart/bodypart as anything in carbon_user.bodyparts)
for(var/datum/wound/iter_wound as anything in bodypart.wounds)
if(prob(50))
continue
var/obj/item/bodypart/target_bodypart = locate(bodypart.type) in carbon_target.bodyparts
if(!target_bodypart)
continue
iter_wound.remove_wound()
iter_wound.apply_wound(target_bodypart)

return TRUE
59 changes: 59 additions & 0 deletions code/modules/antagonists/eldritch_cult/magic/cleave.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/datum/action/cooldown/spell/pointed/cleave
name = "Cleave"
desc = "Causes severe bleeding on a target and people around them"
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "cleave"
ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi'

school = SCHOOL_FORBIDDEN
cooldown_time = 35 SECONDS

invocation = "CL'VE"
invocation_type = INVOCATION_WHISPER

spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

cast_range = 4

/// The radius of the cleave effect
var/cleave_radius = 1
/// What type of wound we apply
var/wound_type = /datum/wound/slash/critical/cleave

/datum/action/cooldown/spell/pointed/cleave/is_valid_target(atom/cast_on)
return ..() && ishuman(cast_on)

/datum/action/cooldown/spell/pointed/cleave/cast(mob/living/carbon/human/cast_on)
. = ..()
for(var/mob/living/carbon/human/victim in range(cleave_radius, cast_on))
if(victim == owner || IS_HERETIC(victim) || IS_HERETIC_MONSTER(victim))
continue
if(victim.can_block_magic(antimagic_flags))
victim.visible_message(
span_danger("[victim]'s flashes in a firey glow, but repels the blaze!"),
span_danger("Your body begins to flash a firey glow, but you are protected!!")
)
continue

if(!victim.blood_volume)
continue

victim.visible_message(
span_danger("[victim]'s veins are shredded from within as an unholy blaze erupts from [victim.p_their()] blood!"),
span_danger("Your veins burst from within and unholy flame erupts from your blood!")
)

var/obj/item/bodypart/bodypart = pick(victim.bodyparts)
var/datum/wound/slash/crit_wound = new wound_type()
crit_wound.apply_wound(bodypart)
victim.apply_damage(20, BURN, wound_bonus = CANT_WOUND)

new /obj/effect/temp_visual/cleave(get_turf(victim))

return TRUE

/datum/action/cooldown/spell/pointed/cleave/long
name = "Deeper Cleave"
cooldown_time = 65 SECONDS
17 changes: 17 additions & 0 deletions code/modules/antagonists/eldritch_cult/magic/diamond_dust.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/datum/action/cooldown/spell/aoe/slip/void
name = "Diamond Dust"
desc = "Causes the floor within 2 tiles to become frozen."
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/humble/actions_humble.dmi'
button_icon_state = "blind"

invocation = "OBL'VION!"
invocation_type = INVOCATION_SHOUT

cooldown_time = 50 SECONDS
aoe_radius = 2
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

/datum/action/cooldown/spell/aoe/slip/void/cast_on_thing_in_aoe(turf/open/target)
target.MakeSlippery(TURF_WET_PERMAFROST, 15 SECONDS, 15 SECONDS)
41 changes: 41 additions & 0 deletions code/modules/antagonists/eldritch_cult/magic/eldritch_blind.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/datum/action/cooldown/spell/pointed/blind/eldritch
name = "Eldritch Blind"
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"

school = SCHOOL_FORBIDDEN
invocation = "E'E'S"
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

cast_range = 10

/obj/effect/temp_visual/dir_setting/entropic
icon = 'icons/effects/160x160.dmi'
icon_state = "entropic_plume"
duration = 3 SECONDS

/obj/effect/temp_visual/dir_setting/entropic/setDir(dir)
. = ..()
switch(dir)
if(NORTH)
pixel_x = -64
if(SOUTH)
pixel_x = -64
pixel_y = -128
if(EAST)
pixel_y = -64
if(WEST)
pixel_y = -64
pixel_x = -128

/obj/effect/glowing_rune
icon = 'icons/effects/eldritch.dmi'
icon_state = "small_rune_1"
layer = LOW_SIGIL_LAYER

/obj/effect/glowing_rune/Initialize(mapload)
. = ..()
pixel_y = rand(-6,6)
pixel_x = rand(-6,6)
icon_state = "small_rune_[rand(12)]"
update_appearance(UPDATE_ICON)
15 changes: 15 additions & 0 deletions code/modules/antagonists/eldritch_cult/magic/eldritch_emp.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/datum/action/cooldown/spell/emp/eldritch
name = "Entropic Pulse"
desc = "A spell that causes a large EMP around you, disabling electronics."
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"

school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS

invocation = "E'P"
invocation_type = INVOCATION_WHISPER
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

emp_heavy = 6
emp_light = 10
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/datum/action/cooldown/spell/shapeshift/eldritch
name = "Shapechange"
desc = "A spell that allows you to take on the form of another creature, gaining their abilities. \
After making your choice, you will be unable to change to another."
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"

school = SCHOOL_FORBIDDEN
invocation = "SH'PE"
invocation_type = INVOCATION_WHISPER
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

possible_shapes = list(
/mob/living/simple_animal/mouse,\
/mob/living/simple_animal/pet/dog/corgi,\
/mob/living/simple_animal/hostile/carp/megacarp,\
/mob/living/simple_animal/pet/fox,\
/mob/living/simple_animal/hostile/netherworld/migo,\
/mob/living/simple_animal/bot/medbot,\
/mob/living/simple_animal/pet/cat
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/datum/action/cooldown/spell/list_target/telepathy/eldritch
name = "Eldritch Telepathy"
school = SCHOOL_FORBIDDEN
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION
antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND
24 changes: 24 additions & 0 deletions code/modules/antagonists/eldritch_cult/magic/eldritchbolt.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/datum/action/cooldown/spell/pointed/projectile/lightningbolt/eldritchbolt
name = "Eldritch Bolt"
desc = "Fire a bolt of Eldritch energy that will strike the target, dealing moderate burn damage."
background_icon_state = "bg_heretic"
overlay_icon_state = "bg_heretic_border"
button_icon_state = "lightning"
active_overlay_icon_state = "bg_spell_border_active_yellow"
ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi'

sound = 'sound/magic/lightningbolt.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS

invocation = "EL'RICH BL'AS'T"
invocation_type = INVOCATION_SHOUT
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION

base_icon_state = "lightning"
active_msg = "You energize your hands with raw power!"
deactive_msg = "You let the energy flow out of your hands back into yourself..."
projectile_type = /obj/projectile/magic/aoe/lightning/eldritch

bolt_range = 7
bolt_power = 1000
Loading