Skip to content

Commit

Permalink
a
Browse files Browse the repository at this point in the history
  • Loading branch information
Git-Nivrak committed Sep 24, 2024
1 parent 66bdfc7 commit d03d185
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 6 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#define COMSIG_XENO_PRE_HEAL "xeno_pre_heal"
#define COMPONENT_CANCEL_XENO_HEAL (1<<0)
#define COMPONENT_CANCEL_EXTERNAL_XENO_HEAL (1<<1)

/// From ../xeno_action/activable/xeno_spit/use_ability
#define COMSIG_XENO_POST_SPIT "xeno_spit"
Expand Down
6 changes: 6 additions & 0 deletions code/datums/components/xeno/hivemind_interference.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
if(!isxeno(parent))
return COMPONENT_INCOMPATIBLE
ADD_TRAIT(parent, TRAIT_HIVEMIND_INTERFERENCE, TRAIT_SOURCE_HIVEMIND_INTERFERENCE)
RegisterSignal(parent, COMSIG_XENO_PRE_HEAL, PROC_REF(block_external_heal))
src.interference = interference
src.max_buildup = max_buildup
src.dissipation = dissipation
Expand Down Expand Up @@ -51,6 +52,11 @@
return
L += "Hivemind Interference: [interference]/[max_buildup]"

/datum/component/status_effect/interference/proc/block_external_heal()
SIGNAL_HANDLER
return COMPONENT_CANCEL_EXTERNAL_XENO_HEAL

/datum/component/status_effect/interference/cleanse()
REMOVE_TRAIT(parent, TRAIT_HIVEMIND_INTERFERENCE, TRAIT_SOURCE_HIVEMIND_INTERFERENCE)
UnregisterSignal(parent, COMSIG_XENO_PRE_HEAL)
return ..()
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/xenomorph/Abilities.dm
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@
to_chat(X, SPAN_XENOWARNING("This caste cannot be given plasma!"))
return

if(SEND_SIGNAL(target, COMSIG_XENO_PRE_HEAL) & COMPONENT_CANCEL_XENO_HEAL)
if(SEND_SIGNAL(target, COMSIG_XENO_PRE_HEAL) & (COMPONENT_CANCEL_XENO_HEAL|COMPONENT_CANCEL_EXTERNAL_XENO_HEAL))
to_chat(X, SPAN_XENOWARNING("This xeno cannot be given plasma!"))
return

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -788,7 +788,7 @@
var/use_plasma = FALSE

if (curr_effect_type == WARDEN_HEAL_SHIELD)
if (SEND_SIGNAL(targetXeno, COMSIG_XENO_PRE_HEAL) & COMPONENT_CANCEL_XENO_HEAL)
if (SEND_SIGNAL(targetXeno, COMSIG_XENO_PRE_HEAL) & (COMPONENT_CANCEL_XENO_HEAL|COMPONENT_CANCEL_EXTERNAL_XENO_HEAL))
to_chat(X, SPAN_XENOWARNING("We cannot bolster the defenses of this xeno!"))
return

Expand Down Expand Up @@ -828,7 +828,7 @@
if (!X.Adjacent(A))
to_chat(X, SPAN_XENODANGER("We must be within touching distance of [targetXeno]!"))
return
if (SEND_SIGNAL(targetXeno, COMSIG_XENO_PRE_HEAL) & COMPONENT_CANCEL_XENO_HEAL)
if (SEND_SIGNAL(targetXeno, COMSIG_XENO_PRE_HEAL) & (COMPONENT_CANCEL_XENO_HEAL|COMPONENT_CANCEL_EXTERNAL_XENO_HEAL))
to_chat(X, SPAN_XENOWARNING("We cannot heal this xeno!"))
return

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@
if(!X.can_not_harm(Xa))
continue

if(SEND_SIGNAL(Xa, COMSIG_XENO_PRE_HEAL) & COMPONENT_CANCEL_XENO_HEAL)
if(SEND_SIGNAL(Xa, COMSIG_XENO_PRE_HEAL) & (COMPONENT_CANCEL_XENO_HEAL|COMPONENT_CANCEL_EXTERNAL_XENO_HEAL))
if(verbose)
to_chat(X, SPAN_XENOMINORWARNING("You cannot heal [Xa]!"))
continue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@
if(!check_state())
return

if(SEND_SIGNAL(target_xeno, COMSIG_XENO_PRE_HEAL) & COMPONENT_CANCEL_XENO_HEAL)
to_chat(src, SPAN_XENOWARNING("Extinguish [target_xeno] first or the flames will burn our resin salve away!"))
if(SEND_SIGNAL(target_xeno, COMSIG_XENO_PRE_HEAL) & (COMPONENT_CANCEL_XENO_HEAL|COMPONENT_CANCEL_EXTERNAL_XENO_HEAL))
to_chat(src, SPAN_XENOWARNING("We cannot heal [target_xeno]!"))
return

if(!can_not_harm(target_xeno)) //We don't wanna heal hostile hives, but we do want to heal our allies!
Expand Down

0 comments on commit d03d185

Please sign in to comment.