diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index d04716a59c7..535dd5c08aa 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -60,6 +60,8 @@ //#define MAX_MANIA_SEVERITY 100 //how high the mania severity can go //#define MANIA_DAMAGE_TO_CONVERT 90 //how much damage is required before it'll convert affected targets +#define STATUS_EFFECT_CULT_STUN /datum/status_effect/cult_stun_mark + #define STATUS_EFFECT_HISWRATH /datum/status_effect/his_wrath //His Wrath. #define STATUS_EFFECT_SUMMONEDGHOST /datum/status_effect/cultghost //is a cult ghost: can see dead people, can't manifest more ghosts diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index f293e948f4a..b8ccdef55e2 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -178,6 +178,29 @@ /datum/status_effect/pacifism/on_remove() REMOVE_TRAIT(owner, TRAIT_PACIFISM, id) +// used to track if hitting someone with a cult dagger/sword should stamina crit. +/datum/status_effect/cult_stun_mark + id = "cult_stun" + duration = 10 SECONDS // when the knockdown ends, the mark disappears. + alert_type = null + var/mutable_appearance/overlay + +/datum/status_effect/cult_stun_mark/on_apply() + . = ..() + if(!ishuman(owner)) + return + overlay = mutable_appearance('icons/effects/cult_effects.dmi', "cult-mark", ABOVE_MOB_LAYER) + var/mob/living/carbon/human/H = owner + H.add_overlay(overlay) + +/datum/status_effect/cult_stun_mark/on_remove() + owner.cut_overlay(overlay) + +/datum/status_effect/cult_stun_mark/proc/trigger() + owner.adjustStaminaLoss(60) + owner.Silence(6 SECONDS) // refresh the silence + qdel(src) + /datum/status_effect/bluespace_slowdown id = "bluespace_slowdown" alert_type = null diff --git a/code/game/gamemodes/cult/blood_magic.dm b/code/game/gamemodes/cult/blood_magic.dm index 7fa0f9fdaa2..9dabcb732ae 100644 --- a/code/game/gamemodes/cult/blood_magic.dm +++ b/code/game/gamemodes/cult/blood_magic.dm @@ -447,8 +447,10 @@ "Your holy weapon absorbs the blinding light!") else to_chat(user, "In a brilliant flash of red, [L] falls to the ground!") - // These are in life cycles, so double the time that's stated. - L.Weaken(10 SECONDS) + + L.KnockDown(10 SECONDS) + L.adjustStaminaLoss(60) + L.apply_status_effect(STATUS_EFFECT_CULT_STUN) L.flash_eyes(1, TRUE) if(issilicon(target)) var/mob/living/silicon/S = L @@ -459,6 +461,8 @@ C.Stuttering(16 SECONDS) C.CultSlur(20 SECONDS) C.Jitter(16 SECONDS) + to_chat(user, "Stun mark applied! Stab them with a dagger, sword or blood spear to stun them fully!") + user.do_attack_animation(target) uses-- ..() diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 40bed68e6b5..9d6f9919f05 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -32,7 +32,7 @@ ..() /obj/item/melee/cultblade/detailed_examine() - return "This blade is a powerful weapon, capable of severing limbs easily, if they are targeted. Nonbelievers are unable to use this weapon." + return "This blade is a powerful weapon, capable of severing limbs easily, if they are targeted. Nonbelievers are unable to use this weapon. Striking a nonbeliever after downing them with your cult magic, will stun them completely." /obj/item/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user) if(!iscultist(user)) @@ -46,6 +46,10 @@ else user.adjustBruteLoss(rand(force/2, force)) return + if(!iscultist(target)) + var/datum/status_effect/cult_stun_mark/S = target.has_status_effect(STATUS_EFFECT_CULT_STUN) + if(S) + S.trigger() ..() /obj/item/melee/cultblade/pickup(mob/living/user) @@ -544,7 +548,7 @@ /obj/item/twohanded/cult_spear name = "blood halberd" - desc = "A sickening spear composed entirely of crystallized blood." + desc = "A sickening spear composed entirely of crystallized blood. Will stun people who have been recently marked if the spear is wielded." icon = 'icons/obj/cult.dmi' icon_state = "bloodspear0" slot_flags = 0 @@ -611,6 +615,12 @@ return TRUE return FALSE +/obj/item/twohanded/cult_spear/attack(mob/living/M, mob/living/user, def_zone) + . = ..() + var/datum/status_effect/cult_stun_mark/S = M.has_status_effect(STATUS_EFFECT_CULT_STUN) + if(S && wielded) + S.trigger() + /datum/action/innate/cult/spear name = "Bloody Bond" desc = "Call the blood spear back to your hand!" diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 19d248c394d..adf79c09fa5 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -31,7 +31,7 @@ if(iscultist(user) || user.stat == DEAD) . += "A dagger gifted by [SSticker.cultdat.entity_title3]. Allows the scribing of runes and access to the knowledge archives of the cult of [SSticker.cultdat.entity_name]." . += "Striking another cultist with it will purge holy water from them." - . += "Striking a noncultist will tear their flesh." + . += "Striking a noncultist will tear their flesh, additionally, if you recently downed them with cult magic it will stun them completely." /obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user) if(iscultist(M)) @@ -46,6 +46,10 @@ M.reagents.add_reagent("unholywater", amount) add_attack_logs(user, M, "Hit with [src], removing the holy water from them") return FALSE + else + var/datum/status_effect/cult_stun_mark/S = M.has_status_effect(STATUS_EFFECT_CULT_STUN) + if(S) + S.trigger() . = ..() /obj/item/melee/cultblade/dagger/attack_self(mob/user) diff --git a/icons/effects/cult_effects.dmi b/icons/effects/cult_effects.dmi index cbab2398b3c..c083384fd9e 100644 Binary files a/icons/effects/cult_effects.dmi and b/icons/effects/cult_effects.dmi differ