diff --git a/code/__DEFINES/roguetown.dm b/code/__DEFINES/roguetown.dm
index ce92bff13..cbf716488 100644
--- a/code/__DEFINES/roguetown.dm
+++ b/code/__DEFINES/roguetown.dm
@@ -148,7 +148,7 @@
#define ALL_PALADIN_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/dendor, /datum/patron/divine/necra, /datum/patron/divine/pestra, /datum/patron/divine/ravox, /datum/patron/divine/malum, /datum/patron/divine/eora, /datum/patron/old_god)
-#define ALL_ACOLYTE_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/dendor, /datum/patron/divine/pestra, /datum/patron/divine/eora, /datum/patron/divine/necra)
+#define ALL_ACOLYTE_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/dendor, /datum/patron/divine/pestra, /datum/patron/divine/eora, /datum/patron/divine/necra, /datum/patron/divine/malum)
#define ALL_DIVINE_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/dendor, /datum/patron/divine/abyssor, /datum/patron/divine/ravox, /datum/patron/divine/necra, /datum/patron/divine/xylix, /datum/patron/divine/pestra, /datum/patron/divine/malum, /datum/patron/divine/eora)
diff --git a/code/datums/gods/patrons/divine_pantheon.dm b/code/datums/gods/patrons/divine_pantheon.dm
index d40f35c1b..105552e47 100644
--- a/code/datums/gods/patrons/divine_pantheon.dm
+++ b/code/datums/gods/patrons/divine_pantheon.dm
@@ -24,7 +24,8 @@
worshippers = "Wizards and Scholars"
mob_traits = list(TRAIT_NOCSIGHT)
t1 = /obj/effect/proc_holder/spell/invoked/blindness
- t2 = /obj/effect/proc_holder/spell/invoked/invisibility
+ t2 = /obj/effect/proc_holder/spell/targeted/touch/Nocdarkvision
+ t3 = /obj/effect/proc_holder/spell/invoked/invisibility
confess_lines = list(
"NOC IS NIGHT!",
"NOC SEES ALL!",
@@ -64,7 +65,7 @@
domain = "God of Justice, Glory, Battle"
desc = "Stalwart warrior, glorious justicier; legends say he came down to the Basin to repel the vile hordes of demons with his own hands, and that he seeks warriors for his divine army among mortals."
worshippers = "Warriors, Sellswords & those who seek Justice"
- t1 = /obj/effect/proc_holder/spell/invoked/burden
+ t1 = list(/obj/effect/proc_holder/spell/invoked/burden)
confess_lines = list(
"RAVOX IS JUSTICE!",
"THROUGH STRIFE, GRACE!",
@@ -78,7 +79,7 @@
worshippers = "The Dead, Mourners, Gravekeepers"
mob_traits = list(TRAIT_SOUL_EXAMINE)
t1 = /obj/effect/proc_holder/spell/invoked/avert
- t2 = /obj/effect/proc_holder/spell/targeted/abrogation
+ t2 = /obj/effect/proc_holder/spell/targeted/churn
t3 = /obj/effect/proc_holder/spell/targeted/soulspeak
confess_lines = list(
"ALL SOULS FIND THEIR WAY TO NECRA!",
@@ -111,11 +112,11 @@
desc = "Goddess that blessed many a saint with healing hands, Pestra taught man the arts of medicine and its benefits."
worshippers = "The Sick, Phyicians, Apothecaries"
mob_traits = list(TRAIT_EMPATH, TRAIT_ROT_EATER)
- t0 = /obj/effect/proc_holder/spell/invoked/diagnose
- t1 = /obj/effect/proc_holder/spell/invoked/lesser_heal
- t2 = /obj/effect/proc_holder/spell/invoked/heal
- t3 = /obj/effect/proc_holder/spell/invoked/attach_bodypart
- t4 = /obj/effect/proc_holder/spell/invoked/cure_rot
+ t0 = list(/obj/effect/proc_holder/spell/invoked/diagnose)
+ t1 = list(/obj/effect/proc_holder/spell/invoked/lesser_heal)
+ t2 = list(/obj/effect/proc_holder/spell/invoked/heal)
+ t3 = list(/obj/effect/proc_holder/spell/invoked/attach_bodypart)
+ t4 = list(/obj/effect/proc_holder/spell/invoked/cure_rot)
confess_lines = list(
"PESTRA SOOTHES ALL ILLS!",
"DECAY IS A CONTINUATION OF LIFE!",
diff --git a/code/modules/jobs/job_types/roguetown/church/monk.dm b/code/modules/jobs/job_types/roguetown/church/monk.dm
index baf147c54..765f756b5 100644
--- a/code/modules/jobs/job_types/roguetown/church/monk.dm
+++ b/code/modules/jobs/job_types/roguetown/church/monk.dm
@@ -22,7 +22,7 @@
name = "Acolyte"
jobtype = /datum/job/roguetown/monk
- allowed_patrons = list(/datum/patron/divine/pestra, /datum/patron/divine/astrata, /datum/patron/divine/eora, /datum/patron/divine/noc, /datum/patron/divine/necra) //Eora content from Stonekeep
+ allowed_patrons = list(/datum/patron/divine/pestra, /datum/patron/divine/astrata, /datum/patron/divine/eora, /datum/patron/divine/noc, /datum/patron/divine/necra, /datum/patron/divine/malum) //Eora content from Stonekeep
/datum/outfit/job/roguetown/monk/pre_equip(mob/living/carbon/human/H)
@@ -67,6 +67,12 @@
neck = /obj/item/clothing/neck/roguetown/psicross/eora
shoes = /obj/item/clothing/shoes/roguetown/sandals
armor = /obj/item/clothing/suit/roguetown/shirt/robe/eora
+ if(/datum/patron/divine/malum)
+ head = /obj/item/clothing/head/roguetown/roguehood/black
+ armor = /obj/item/clothing/suit/roguetown/shirt/robe
+ neck = /obj/item/clothing/neck/roguetown/psicross/malum
+ pants = /obj/item/clothing/under/roguetown/tights
+ shoes = /obj/item/clothing/shoes/roguetown/boots
else
head = /obj/item/clothing/head/roguetown/roguehood/astrata
neck = /obj/item/clothing/neck/roguetown/psicross/astrata
diff --git a/code/modules/spells/roguetown/acolyte/general.dm b/code/modules/spells/roguetown/acolyte/general.dm
index 951dbe95c..7926b1a79 100644
--- a/code/modules/spells/roguetown/acolyte/general.dm
+++ b/code/modules/spells/roguetown/acolyte/general.dm
@@ -1,11 +1,11 @@
// Lesser miracle
/obj/effect/proc_holder/spell/invoked/lesser_heal
- name = "Miracle"
+ name = "Lesser Miracle"
overlay_state = "lesserheal"
releasedrain = 30
chargedrain = 0
chargetime = 0
- range = 4
+ range = 7
warnie = "sydwarning"
movement_interrupt = FALSE
sound = 'sound/magic/heal.ogg'
@@ -14,7 +14,7 @@
antimagic_allowed = TRUE
charge_max = 10 SECONDS
miracle = TRUE
- devotion_cost = 10
+ devotion_cost = 10
/obj/effect/proc_holder/spell/invoked/lesser_heal/cast(list/targets, mob/living/user)
. = ..()
@@ -22,146 +22,69 @@
var/mob/living/target = targets[1]
if(user.patron?.undead_hater && (target.mob_biotypes & MOB_UNDEAD)) //positive energy harms the undead
target.visible_message(span_danger("[target] is burned by holy light!"), span_userdanger("I'm burned by holy light!"))
- target.adjustFireLoss(10)
- target.fire_act(1,10)
+ target.adjustFireLoss(50)
+ target.Paralyze(30)
+ target.fire_act(1,5)
return TRUE
- var/conditional_buff = FALSE
- var/situational_bonus = 1
//this if chain is stupid, replace with variables on /datum/patron when possible?
switch(user.patron.type)
if(/datum/patron/old_god)
target.visible_message(span_info("A strange stirring feeling pours from [target]!"), span_notice("Sentimental thoughts drive away my pains!"))
if(/datum/patron/divine/astrata)
target.visible_message(span_info("A wreath of gentle light passes over [target]!"), span_notice("I'm bathed in holy light!"))
- // during the day, heal 1 more (basic as fuck)
- if (GLOB.tod == "day")
- conditional_buff = TRUE
if(/datum/patron/divine/noc)
target.visible_message(span_info("A shroud of soft moonlight falls upon [target]!"), span_notice("I'm shrouded in gentle moonlight!"))
- // during the night, heal 1 more (i wish this was more interesting but they're twins so whatever)
- if (GLOB.tod == "night")
- conditional_buff = TRUE
if(/datum/patron/divine/dendor)
target.visible_message(span_info("A rush of primal energy spirals about [target]!"), span_notice("I'm infused with primal energies!"))
- var/list/natural_stuff = list(/obj/structure/flora/roguegrass, /obj/structure/flora/roguetree, /obj/structure/flora/rogueshroom, /obj/structure/soil)
- situational_bonus = 0
- // the more natural stuff around US, the more we heal
- for (var/obj/O in oview(5, user))
- if (O in natural_stuff)
- situational_bonus = min(situational_bonus + 0.1, 2)
- if (situational_bonus > 0)
- conditional_buff = TRUE
if(/datum/patron/divine/abyssor)
target.visible_message(span_info("A mist of salt-scented vapour settles on [target]!"), span_notice("I'm invigorated by healing vapours!"))
- // if our target is standing in water, heal a flat amount extra
- if (istype(get_turf(target), /turf/open/water))
- conditional_buff = TRUE
- situational_bonus = 1.5
if(/datum/patron/divine/ravox)
target.visible_message(span_info("An air of righteous defiance rises near [target]!"), span_notice("I'm filled with an urge to fight on!"))
- situational_bonus = 0
- // the bloodier the area around our target is, the more we heal
- for (var/obj/effect/decal/cleanable/blood/O in oview(5, target))
- situational_bonus = min(situational_bonus + 0.1, 2)
- conditional_buff = TRUE
if(/datum/patron/divine/necra)
target.visible_message(span_info("A sense of quiet respite radiates from [target]!"), span_notice("I feel the Undermaiden's gaze turn from me for now!"))
- if (iscarbon(target))
- var/mob/living/carbon/C = target
- // if the target is "close to death" (at or below 25% health)
- if (C.health <= (C.maxHealth * 0.25))
- conditional_buff = TRUE
- situational_bonus = 2.5
if(/datum/patron/divine/xylix)
target.visible_message(span_info("A fugue seems to manifest briefly across [target]!"), span_notice("My wounds vanish as if they had never been there! "))
- // half of the time, heal a little (or a lot) more - flip the coin
- if (prob(50))
- conditional_buff = TRUE
- situational_bonus = rand(1, 2.5)
if(/datum/patron/divine/pestra)
- target.visible_message(span_info("An aura of clinical care encompasses [target]!"), span_notice("I'm sewn back together by sacred medicine!"))
- // pestra always heals a little more toxin damage and restores a bit more blood
- target.adjustToxLoss(-situational_bonus)
- target.blood_volume += BLOOD_VOLUME_SURVIVE/2
+ target.visible_message(span_info("A aura of clinical care encompasses [target]!"), span_notice("I'm sewn back together by sacred medicine!"))
if(/datum/patron/divine/malum)
target.visible_message("A tempering heat is discharged out of [target]!", "I feel the heat of a forge soothing my pains!")
- var/list/firey_stuff = list(/obj/machinery/light/rogue/torchholder, /obj/machinery/light/rogue/campfire, /obj/machinery/light/rogue/hearth, /obj/machinery/light/rogue/wallfire, /obj/machinery/light/rogue/wallfire/candle, /obj/machinery/light/rogue/forge)
- // extra healing for every source of fire/light near us
- situational_bonus = 0
- for (var/obj/O in oview(5, user))
- if (O.type in firey_stuff)
- situational_bonus = min(situational_bonus + 0.5, 2.5)
- if (situational_bonus > 0)
- conditional_buff = TRUE
if(/datum/patron/divine/eora)
- target.visible_message("An emanance of love blossoms around [target]!", "I'm filled with the restorative warmth of love!")
- // if they're wearing an eoran bud (or are a pacifist), pretty much double the healing. if we're also wearing a bud at any point or a pacifist from any other source, apply another +15 bonus
- situational_bonus = 0
- if (HAS_TRAIT(target, TRAIT_PACIFISM))
- conditional_buff = TRUE
- situational_bonus = 2.5
- if (HAS_TRAIT(user, TRAIT_PACIFISM))
- conditional_buff = TRUE
- situational_bonus += 1.5
+ target.visible_message("A heady heat flushes the flesh of [target] and potent scents hit you!", "My ills drift away in a rush of narcotic pleasure!")
if(/datum/patron/inhumen/zizo)
target.visible_message(span_info("Vital energies are sapped towards [target]!"), span_notice("The life around me pales as I am restored!"))
- // set up a ritual pile of bones (or just cast near a stack of bones whatever) around us for massive bonuses, cap at 50 for 75 healing total (wowie)
- situational_bonus = 0
- for (var/obj/item/stack/sheet/bone/O in oview(5, user))
- situational_bonus += (O.amount * 0.5)
- if (situational_bonus > 0)
- conditional_buff = TRUE
- situational_bonus = min(situational_bonus, 5)
if(/datum/patron/inhumen/graggar)
target.visible_message(span_info("Foul fumes billow outward as [target] is restored!"), span_notice("A noxious scent burns my nostrils, but I feel better!"))
- // if you've got lingering toxin damage, you get healed more, but your bonus healing doesn't affect toxin
- var/toxloss = target.getToxLoss()
- if (toxloss >= 10)
- conditional_buff = TRUE
- situational_bonus = 2.5
- target.adjustToxLoss(situational_bonus) // remember we do a global toxloss adjust down below so this is okay
if(/datum/patron/inhumen/matthios)
- target.visible_message(span_info("A wreath of... strange light passes over [target]?"), span_notice("I'm bathed in a... strange holy light?"))
- // COMRADES! WE MUST BAND TOGETHER!
- if (HAS_TRAIT(target, TRAIT_COMMIE))
- conditional_buff = TRUE
- situational_bonus = 2.5
- if(/datum/patron/inhumen/baotha)
- target.visible_message(span_info("Hedonistic impulses and emotions throb all about from [target]."), span_notice("An intoxicating rush of narcotic delight wipes away my pains!"))
- // i wanted to do something with pain here but it doesn't seem like pain is actually parameterized anywhere so... better necra it is - if they're below 50% health, they get 25 extra healing
- if (iscarbon(target))
- var/mob/living/carbon/C = target
- if (C.health <= (C.maxHealth * 0.5))
- conditional_buff = TRUE
- situational_bonus = 2.5
+ target.visible_message(span_info("A wreath of strange light passes over [target]!"), span_notice("I'm bathed in strange holy light?"))
if(/datum/patron/godless)
target.visible_message(span_info("Without any particular cause or reason, [target] is healed!"), span_notice("My wounds close without cause."))
else
target.visible_message(span_info("A choral sound comes from above and [target] is healed!"), span_notice("I am bathed in healing choral hymns!"))
-
- var/healing = 2.5
- if (conditional_buff)
- to_chat(user, "Channeling my patron's power is easier in these conditions!")
- healing += situational_bonus
-
if(iscarbon(target))
var/mob/living/carbon/C = target
- var/datum/status_effect/buff/healing/heal_effect = C.apply_status_effect(/datum/status_effect/buff/healing)
- heal_effect.healing_on_tick = healing
+ var/obj/item/bodypart/affecting = C.get_bodypart(check_zone(user.zone_selected))
+ if(affecting)
+ if(affecting.heal_damage(25, 25))
+ C.update_damage_overlays()
+ if(affecting.heal_wounds(25))
+ C.update_damage_overlays()
else
- target.adjustBruteLoss(-healing*10)
- target.adjustFireLoss(-healing*10)
+ target.adjustBruteLoss(-25)
+ target.adjustFireLoss(-25)
+ target.adjustToxLoss(-25)
+ target.adjustOxyLoss(-25)
+ target.blood_volume += BLOOD_VOLUME_SURVIVE/2
return TRUE
return FALSE
// Miracle
/obj/effect/proc_holder/spell/invoked/heal
- name = "Fortify"
+ name = "Miracle"
overlay_state = "astrata"
releasedrain = 30
chargedrain = 0
chargetime = 0
- range = 4
+ range = 7
warnie = "sydwarning"
movement_interrupt = FALSE
// chargedloop = /datum/looping_sound/invokeholy
@@ -181,15 +104,24 @@
var/mob/living/target = targets[1]
if(user.patron?.undead_hater && (target.mob_biotypes & MOB_UNDEAD)) //positive energy harms the undead
target.visible_message(span_danger("[target] is burned by holy light!"), span_userdanger("I'm burned by holy light!"))
- target.adjustFireLoss(25)
- target.fire_act(1,10)
+ target.adjustFireLoss(100)
+ target.Paralyze(50)
+ target.fire_act(1,5)
return TRUE
target.visible_message(span_info("A wreath of gentle light passes over [target]!"), span_notice("I'm bathed in holy light!"))
if(iscarbon(target))
var/mob/living/carbon/C = target
- C.apply_status_effect(/datum/status_effect/buff/fortify)
+ var/obj/item/bodypart/affecting = C.get_bodypart(check_zone(user.zone_selected))
+ if(affecting)
+ if(affecting.heal_damage(50, 50))
+ C.update_damage_overlays()
+ if(affecting.heal_wounds(50))
+ C.update_damage_overlays()
else
target.adjustBruteLoss(-50)
target.adjustFireLoss(-50)
+ target.adjustToxLoss(-50)
+ target.adjustOxyLoss(-50)
+ target.blood_volume += BLOOD_VOLUME_SURVIVE
return TRUE
return FALSE
diff --git a/code/modules/spells/roguetown/acolyte/pestra.dm b/code/modules/spells/roguetown/acolyte/pestra.dm
index e59644d72..86030b43d 100644
--- a/code/modules/spells/roguetown/acolyte/pestra.dm
+++ b/code/modules/spells/roguetown/acolyte/pestra.dm
@@ -187,8 +187,9 @@
S.AOE_flash(user, range = 8)
testing("curerot2")
if(was_zombie)
- if(was_zombie.become_rotman && prob(5)) //5% chance to NOT become a rotman
- was_zombie.become_rotman = FALSE
+ //if(was_zombie.become_rotman && prob(5)) //5% chance to NOT become a rotman
+ // was_zombie.become_rotman = FALSE
+ // CC Update: Removing chance for players to become rotmen
target.mind.remove_antag_datum(/datum/antagonist/zombie)
target.Unconscious(20 SECONDS)
target.emote("breathgasp")
diff --git a/modular_causticcove/code/modules/spells/pantheon/Divine/noc.dm b/modular_causticcove/code/modules/spells/pantheon/Divine/noc.dm
new file mode 100644
index 000000000..3cb1dd98f
--- /dev/null
+++ b/modular_causticcove/code/modules/spells/pantheon/Divine/noc.dm
@@ -0,0 +1,41 @@
+/obj/effect/proc_holder/spell/targeted/touch/Nocdarkvision
+ name = "Darkvision"
+ overlay_state = "thaumaturgy"
+ desc = "Enhance the night vision of a target you touch for 15 minutes."
+ clothes_req = FALSE
+ drawmessage = "I prepare to grant Darkvision."
+ dropmessage = "I return my mind to the now."
+ school = "transmutation"
+ charge_max = 1 MINUTES
+ chargedloop = /datum/looping_sound/invokegen
+ associated_skill = /datum/skill/magic/holy
+ hand_path = /obj/item/melee/touch_attack/Nocdarkvision
+ xp_gain = TRUE
+ devotion_cost = 20
+
+/obj/item/melee/touch_attack/Nocdarkvision
+ name = "\improper arcyne focus"
+ desc = "Touch a creature to grant them Darkvision for 15 minutes."
+ catchphrase = null
+ possible_item_intents = list(INTENT_HELP)
+ icon = 'icons/mob/roguehudgrabs.dmi'
+ icon_state = "pulling"
+ icon_state = "grabbing_greyscale"
+ color = "#3FBAFD"
+
+/obj/item/melee/touch_attack/Nocdarkvision/attack_self()
+ attached_spell.remove_hand()
+
+/obj/item/melee/touch_attack/Nocdarkvision/afterattack(atom/target, mob/living/carbon/user, proximity)
+ if(isliving(target))
+ var/mob/living/spelltarget = target
+ if(!do_after(user, 5 SECONDS, target = spelltarget))
+ return
+ spelltarget.apply_status_effect(/datum/status_effect/buff/darkvision)
+ user.rogfat_add(80)
+ if(spelltarget != user)
+ user.visible_message("[user] draws a glyph in the air and touches [spelltarget], their eyes briefly flashing with Noc's light.")
+ else
+ user.visible_message("[user] draws a glyph in the air and touches themselves, their eyes briefly flashing with Noc's light.")
+ attached_spell.remove_hand()
+ return
diff --git a/roguetown.dme b/roguetown.dme
index c97028b16..ba3900569 100644
--- a/roguetown.dme
+++ b/roguetown.dme
@@ -3631,6 +3631,7 @@
#include "modular_causticcove\code\modules\roguetown\roguecrafting\alchemy.dm"
#include "modular_causticcove\code\modules\roguetown\roguejobs\alchemist\containers.dm"
#include "modular_causticcove\code\modules\roguetown\roguejobs\alchemist\reagent.dm"
+#include "modular_causticcove\code\modules\spells\pantheon\Divine\noc.dm"
#include "modular_causticcove\code\modules\vore\persistence.dm"
#include "modular_causticcove\code\modules\vore\SSbellies.dm"
#include "modular_causticcove\code\modules\vore\eating\belly_dat_vr.dm"