diff --git a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm index 04ab94719cc0..426b01edb17a 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm @@ -98,68 +98,11 @@ . = span_notice("[user] effortlessly snaps [user.p_their()] fingers near [A], igniting it with eldritch energies. Fucking badass!") remove_hand_with_no_refund(user) -/datum/action/cooldown/spell/pointed/mansus_ranged - name = "Knowing Mansus Grasp" - desc = "A powerful combat initiation spell that knocks down it's target and blurs their vision. It may have other effects if you continue your research..." - background_icon_state = "bg_heretic" - overlay_icon_state = "bg_heretic_border" - button_icon = 'icons/mob/actions/actions_ecult.dmi' - button_icon_state = "mansus_grasp" - ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi' - - sound = 'sound/items/welder.ogg' - school = SCHOOL_EVOCATION - cooldown_time = 20 SECONDS - - invocation = "R'CH T'H TR'TH!" - invocation_type = INVOCATION_SHOUT - spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION - cast_range = 3 - - active_msg = "You prepare to grasp at someone with your mind..." - - /// How long you want to keep them down - var/knockdown_duration = 2 SECONDS - /// How long their eyes should be blurry for - var/eye_blur_duration = 1 SECONDS - /// How long their eyes should be blind for - var/eye_blind_duration = 0 - -/datum/action/cooldown/spell/pointed/mansus_ranged/is_valid_target(atom/cast_on) - . = ..() - if(!.) - return FALSE - if(!ishuman(cast_on)) - return FALSE - - var/mob/living/carbon/human/human_target = cast_on - return !is_blind(human_target) - -/datum/action/cooldown/spell/pointed/mansus_ranged/cast(mob/living/carbon/human/cast_on) - . = ..() - if(cast_on.can_block_magic(antimagic_flags)) - to_chat(cast_on, span_notice("You feel a light tap on your shoulder.")) - to_chat(owner, span_warning("The spell had no effect!")) - return FALSE - - to_chat(cast_on, span_warning("Your mind cries out in pain!")) - cast_on.Knockdown(knockdown_duration) - cast_on.blur_eyes(eye_blur_duration) - cast_on.blind_eyes(eye_blind_duration) - return TRUE - -/datum/action/cooldown/spell/pointed/mansus_ranged/upgraded - name = "All Knowing Mansus Grasp" - desc = "A powerful combat initiation spell that knocks down targets, blurs their vision, and temporarily blinds them. You have perfected this technique." - button_icon_state = "mad_touch" - - cooldown_time = 25 SECONDS - - cast_range = 4 - - eye_blur_duration = 2 SECONDS - eye_blind_duration = 1 SECONDS +/obj/item/melee/touch_attack/mansus_fist/mind //ranged + weapon_stats = list(SWING_SPEED = 1, ENCUMBRANCE = 0, ENCUMBRANCE_TIME = 0, REACH = 3, DAMAGE_LOW = 0, DAMAGE_HIGH = 0) +/obj/item/melee/touch_attack/mansus_fist/mind/upgraded //more ranged + weapon_stats = list(SWING_SPEED = 1, ENCUMBRANCE = 0, ENCUMBRANCE_TIME = 0, REACH = 4, DAMAGE_LOW = 0, DAMAGE_HIGH = 0) /datum/action/cooldown/spell/aoe/rust_conversion name = "Aggressive Spread" diff --git a/code/modules/antagonists/eldritch_cult/knowledge/ash_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/ash_lore.dm index ba91f5e3273f..11a388d455c1 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/ash_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/ash_lore.dm @@ -37,10 +37,10 @@ UnregisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK) /datum/eldritch_knowledge/base_ash/proc/on_mansus_grasp(mob/living/source, mob/living/target) -// SIGNAL_HANDLER + SIGNAL_HANDLER if(!iscarbon(target)) - return + return COMPONENT_BLOCK_HAND_USE var/mob/living/carbon/C = target var/atom/throw_target = get_edge_target_turf(C, source.dir) if(!C.anchored) diff --git a/code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm index ccac19927fbe..acdcba9c7a3d 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm @@ -36,32 +36,32 @@ UnregisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK) /datum/eldritch_knowledge/base_flesh/proc/on_mansus_grasp(mob/living/source, mob/living/target) -// SIGNAL_HANDLER godammit +// SIGNAL_HANDLER so this one just sorta explodes if i uncomment it, no clue why if(!ishuman(target) || target == source) - return + return COMPONENT_BLOCK_HAND_USE var/mob/living/carbon/human/human_target = target if(QDELETED(human_target) || human_target.stat != DEAD) - return + return COMPONENT_BLOCK_HAND_USE human_target.grab_ghost() if(!human_target.mind || !human_target.client) to_chat(source, span_warning("There is no soul connected to this body...")) - return + return COMPONENT_BLOCK_HAND_USE if(HAS_TRAIT(human_target, TRAIT_HUSK)) to_chat(source, span_warning("The body is too damaged to be revived this way!")) - return + return COMPONENT_BLOCK_HAND_USE if(HAS_TRAIT(human_target, TRAIT_MINDSHIELD)) to_chat(source, span_warning("Their will cannot be malformed to obey your own!")) - return + return COMPONENT_BLOCK_HAND_USE if(LAZYLEN(spooky_scaries) >= ghoul_amt) to_chat(source, span_warning("Your Oath cannot support more ghouls on this plane!")) - return + return COMPONENT_BLOCK_HAND_USE LAZYADD(spooky_scaries, human_target) log_game("[key_name_admin(human_target)] has become a ghoul, their master is [source.real_name]") diff --git a/code/modules/antagonists/eldritch_cult/knowledge/mind_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/mind_lore.dm index a9906948b6c2..75055a4f4dc3 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/mind_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/mind_lore.dm @@ -28,12 +28,23 @@ . = ..() var/obj/realknife = new /obj/item/gun/magic/hook/sickly_blade/mind user.put_in_hands(realknife) - var/datum/action/cooldown/spell/mansus_touch = locate(/datum/action/cooldown/spell/touch/mansus_grasp) in user.actions + var/datum/action/cooldown/spell/touch/mansus_touch = locate(/datum/action/cooldown/spell/touch/mansus_grasp) in user.actions if(mansus_touch) - mansus_touch.Remove(user) - var/datum/action/cooldown/spell/pointed/mansus_ranged/ranged_touch = new(user) - ranged_touch.Grant(user) - + mansus_touch.hand_path = /obj/item/melee/touch_attack/mansus_fist/mind //longer range version + RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp)) + +/datum/eldritch_knowledge/base_mind/on_lose(mob/user) + UnregisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK) + +/datum/eldritch_knowledge/base_mind/proc/on_mansus_grasp(mob/living/source, mob/living/target) + SIGNAL_HANDLER + + if(!ishuman(target)) + return COMPONENT_BLOCK_HAND_USE + var/mob/living/carbon/human/human_target = target + human_target.blur_eyes(1 SECONDS) + human_target.Knockdown(2 SECONDS) + /datum/eldritch_knowledge/spell/mental_obfuscation name = "T1 - Mental Obfuscation" gain_text = "A mind is such an easy thing to trick, nothing more than a lump of meat ready to be moulded by your hands." @@ -70,11 +81,22 @@ /datum/eldritch_knowledge/mind_mark/on_gain(mob/user) . = ..() - var/datum/action/cooldown/spell/ranged_touch = locate(/datum/action/cooldown/spell/pointed/mansus_ranged) in user.actions - if(ranged_touch) - ranged_touch.Remove(user) - var/datum/action/cooldown/spell/pointed/mansus_ranged/upgraded/ranged_touch_upgraded = new(user) - ranged_touch_upgraded.Grant(user) + var/datum/action/cooldown/spell/touch/mansus_touch = locate(/datum/action/cooldown/spell/touch/mansus_grasp) in user.actions + if(mansus_touch) + mansus_touch.hand_path = /obj/item/melee/touch_attack/mansus_fist/mind/upgraded //even longer range version + RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp)) + +/datum/eldritch_knowledge/mind_mark/on_lose(mob/user) + UnregisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK) + +/datum/eldritch_knowledge/mind_mark/proc/on_mansus_grasp(mob/living/source, mob/living/target) + SIGNAL_HANDLER + + if(!ishuman(target)) + return COMPONENT_BLOCK_HAND_USE + var/mob/living/carbon/human/human_target = target + human_target.blur_eyes(2 SECONDS) + human_target.blind_eyes(1 SECONDS) /datum/eldritch_knowledge/spell/assault name = "T2 - Amygdala Assault" diff --git a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm index 05dd3facee11..6f809025ecc9 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm @@ -36,7 +36,15 @@ /datum/eldritch_knowledge/base_rust/proc/on_mansus_grasp(mob/living/source, atom/target) SIGNAL_HANDLER - if(source.a_intent == INTENT_HARM) + if(isitem(target))//items have no rust_heretic_act() + return COMPONENT_BLOCK_HAND_USE + + if(isopenturf(target))//prevent use on tiles unless you use harm intent + if(source.a_intent == INTENT_HARM) + target.rust_heretic_act() + else + return COMPONENT_BLOCK_HAND_USE + else target.rust_heretic_act() /datum/eldritch_knowledge/base_rust/on_eldritch_blade(atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/modules/antagonists/eldritch_cult/knowledge/void_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/void_lore.dm index 341396014af0..bf4992e8b9bc 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/void_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/void_lore.dm @@ -34,10 +34,10 @@ UnregisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK) /datum/eldritch_knowledge/base_void/proc/on_mansus_grasp(mob/living/source, mob/living/target) -// SIGNAL_HANDLER + SIGNAL_HANDLER if(!iscarbon(target)) - return + return COMPONENT_BLOCK_HAND_USE var/mob/living/carbon/carbon_target = target carbon_target.adjust_silence(10 SECONDS) carbon_target.apply_status_effect(/datum/status_effect/void_chill)