Skip to content

Commit

Permalink
Heretic improvements & QoL
Browse files Browse the repository at this point in the history
  • Loading branch information
Absolucy committed Feb 25, 2024
1 parent 7619b98 commit e76a076
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 6 deletions.
16 changes: 12 additions & 4 deletions code/modules/antagonists/heretic/influences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,9 @@

/obj/effect/visible_heretic_influence/Initialize(mapload)
. = ..()
addtimer(CALLBACK(src, PROC_REF(show_presence)), 15 SECONDS)
// monke edit: make influences only show up after a minute or so, and disappear after about 10 minutes
addtimer(CALLBACK(src, PROC_REF(show_presence)), 1 MINUTES)
QDEL_IN(src, 10 MINUTES)

var/image/silicon_image = image('icons/effects/eldritch.dmi', src, null, OBJ_LAYER)
silicon_image.override = TRUE
Expand All @@ -147,9 +149,15 @@
var/mob/living/carbon/human/human_user = user
var/obj/item/bodypart/their_poor_arm = human_user.get_active_hand()
if(prob(25))
to_chat(human_user, span_userdanger("An otherwordly presence tears and atomizes your [their_poor_arm.name] as you try to touch the hole in the very fabric of reality!"))
their_poor_arm.dismember()
qdel(their_poor_arm)
// monke edit: TRAIT_NODISMEMBER means you just get your arm fucked the hell up instead
// while in theory it should atomize your arm anyways, a dismemberment fail and then qdeling the still-attached limb causes Weird Things to happen.
if(HAS_TRAIT(human_user, TRAIT_NODISMEMBER))
to_chat(human_user, span_userdanger("An otherwordly presence lashes out and violently mangles your [their_poor_arm.name] as you try to touch the hole in the very fabric of reality!"))
their_poor_arm.receive_damage(brute = 50, wound_bonus = 100) // guaranteed to wound
else
to_chat(human_user, span_userdanger("An otherwordly presence tears and atomizes your [their_poor_arm.name] as you try to touch the hole in the very fabric of reality!"))
their_poor_arm.dismember()
qdel(their_poor_arm)
else
to_chat(human_user,span_danger("You pull your hand away from the hole as the eldritch energy flails, trying to latch onto existance itself!"))
return TRUE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@
// Let's remove any humans in our atoms list that aren't a sac target
for(var/mob/living/carbon/human/sacrifice in atoms)
// If the mob's not in soft crit or worse, or isn't one of the sacrifices, remove it from the list
if(sacrifice.stat < SOFT_CRIT || !(sacrifice in heretic_datum.sac_targets))
// monke edit: allow stamcrit targets to be sacrificed (bc they're incapable of putting up resistance)
if(!(sacrifice in heretic_datum.sac_targets) || (sacrifice.stat < SOFT_CRIT && !HAS_TRAIT_FROM(sacrifice, TRAIT_INCAPACITATED, STAMINA)))
atoms -= sacrifice

// Finally, return TRUE if we have a target in the list
Expand Down Expand Up @@ -245,6 +246,7 @@
// If our target is dead, try to revive them
// and if we fail to revive them, don't proceede the chain
sac_target.adjustOxyLoss(-100, FALSE)
sac_target.grab_ghost() // monke edit: try to grab their ghost
if(!sac_target.heal_and_revive(50, span_danger("[sac_target]'s heart begins to beat with an unholy force as they return from death!")))
return

Expand Down Expand Up @@ -274,6 +276,8 @@
if(QDELETED(sac_target))
return

sac_target.grab_ghost() // monke edit: try to grab their ghost

// The target disconnected or something, we shouldn't bother sending them along.
if(!sac_target.client || !sac_target.mind)
disembowel_target(sac_target)
Expand All @@ -288,6 +292,7 @@
// and we fail to revive them (using a lower number than before),
// just disembowel them and stop the chain
sac_target.adjustOxyLoss(-100, FALSE)
sac_target.grab_ghost() // monke edit: try to grab their ghost again before revival
if(!sac_target.heal_and_revive(60, span_danger("[sac_target]'s heart begins to beat with an unholy force as they return from death!")))
disembowel_target(sac_target)
return
Expand Down Expand Up @@ -377,7 +382,7 @@
var/datum/antagonist/heretic/victim_heretic = sac_target.mind?.has_antag_datum(/datum/antagonist/heretic)
victim_heretic.knowledge_points -= 3
else
sac_target.gain_trauma(/datum/brain_trauma/mild/phobia/heresy, TRAUMA_RESILIENCE_MAGIC)
sac_target.gain_trauma(/datum/brain_trauma/mild/phobia/heresy, TRAUMA_RESILIENCE_LOBOTOMY) // monke edit: allow lobotomy to cure the phobia
// Wherever we end up, we sure as hell won't be able to explain
sac_target.adjust_timed_status_effect(40 SECONDS, /datum/status_effect/speech/slurring/heretic)
sac_target.adjust_stutter(40 SECONDS)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/obj/item/codex_cicatrix
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/datum/heretic_knowledge/limited_amount/starting/base_ash/on_gain(mob/user, datum/antagonist/heretic/our_heretic)
. = ..()
RegisterSignal(user, COMSIG_CARBON_GAIN_WOUND, PROC_REF(on_wound_gain))

/datum/heretic_knowledge/limited_amount/starting/base_ash/on_lose(mob/user, datum/antagonist/heretic/our_heretic)
. = ..()
UnregisterSignal(user, COMSIG_CARBON_GAIN_WOUND)

/datum/heretic_knowledge/limited_amount/starting/base_ash/proc/on_wound_gain(mob/living/carbon/source, datum/wound/burn/flesh/flesh_wound, obj/item/bodypart/bodypart)
SIGNAL_HANDLER
if(!istype(flesh_wound))
return
// Ensure ash heretics never succumb to infections from burn wounds.
// The wound itself still remains an issue, it just won't get infected.
flesh_wound.infestation_rate = 0
flesh_wound.infestation = 0
flesh_wound.sanitization = INFINITY
flesh_wound.strikes_to_lose_limb = INFINITY
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/datum/status_effect/unholy_determination/on_apply()
. = ..()
owner.add_traits(list(TRAIT_SLEEPIMMUNE, TRAIT_FEARLESS, TRAIT_STABLEHEART, TRAIT_STABLELIVER, TRAIT_ANTICONVULSANT, TRAIT_TUMOR_SUPPRESSED), type)
owner.setStaminaLoss(0)
owner.SetSleeping(0)
owner.SetUnconscious(0)
owner.SetAllImmobility(0)
owner.set_resting(FALSE, silent = TRUE, instant = TRUE)

/datum/status_effect/unholy_determination/on_remove()
. = ..()
REMOVE_TRAITS_IN(owner, type)
3 changes: 3 additions & 0 deletions tgstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -5867,6 +5867,9 @@
#include "monkestation\code\modules\antagonists\florida_man\florida_events.dm"
#include "monkestation\code\modules\antagonists\florida_man\florida_spells.dm"
#include "monkestation\code\modules\antagonists\florida_man\supplypods.dm"
#include "monkestation\code\modules\antagonists\heretic\items\forbidden_book.dm"
#include "monkestation\code\modules\antagonists\heretic\knowledge\ash_lore.dm"
#include "monkestation\code\modules\antagonists\heretic\knowledge\sacrifice_knowledge\sacrifice_buff.dm"
#include "monkestation\code\modules\antagonists\slasher\__base_slasher_additions.dm"
#include "monkestation\code\modules\antagonists\slasher\ghost_role.dm"
#include "monkestation\code\modules\antagonists\slasher\slasher_datum.dm"
Expand Down

0 comments on commit e76a076

Please sign in to comment.