Skip to content

Commit

Permalink
Shrike & Hivemind Heals no longer cancels on target movement (#16122)
Browse files Browse the repository at this point in the history
  • Loading branch information
Runian authored Jul 3, 2024
1 parent 454f54c commit 960b672
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@
SEND_SIGNAL(owner, COMSIG_ESCORTING_ATOM_BEHAVIOUR_CHANGED, minions_agressive)
update_button_icon()

/datum/action/ability/activable/xeno/psychic_cure/queen_give_heal/hivemind
hivemind_heal = TRUE

/datum/action/ability/activable/xeno/psychic_cure/queen_give_heal/hivemind/can_use_action(silent = FALSE, override_flags, selecting = FALSE)
if (owner.status_flags & INCORPOREAL)
return FALSE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -354,13 +354,25 @@
)
heal_range = HIVELORD_HEAL_RANGE
target_flags = ABILITY_MOB_TARGET
/// Should this ability be usable on moving targets and use an alternative flavortext?
var/hivemind_heal = FALSE

/datum/action/ability/activable/xeno/psychic_cure/queen_give_heal/use_ability(atom/target)
if(owner.do_actions)
return FALSE
if(!do_after(owner, 1 SECONDS, NONE, target, BUSY_ICON_FRIENDLY, BUSY_ICON_MEDICAL))
if(!do_after(owner, 1 SECONDS, hivemind_heal ? IGNORE_TARGET_LOC_CHANGE : NONE, target, BUSY_ICON_FRIENDLY, BUSY_ICON_MEDICAL))
return FALSE
target.visible_message(span_xenowarning("\the [owner] vomits acid over [target], mending their wounds!"))
if(!can_use_ability(target, TRUE))
return FALSE

if(!hivemind_heal)
target.visible_message(span_xenowarning("\the [owner] vomits acid over [target], mending their wounds!"))
else
owner.visible_message(span_xenowarning("A faint psychic aura is suddenly emitted from \the [owner]!"), \
span_xenowarning("We cure [target] with the power of our mind!"))
target.visible_message(span_xenowarning("[target] lightly shimmers in a chill light."), \
span_xenowarning("We feel a soothing chill."))

playsound(target, SFX_ALIEN_DROOL, 25)
new /obj/effect/temp_visual/telekinesis(get_turf(target))
var/mob/living/carbon/xenomorph/patient = target
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -264,19 +264,22 @@
/datum/action/ability/activable/xeno/psychic_cure/proc/check_distance(atom/target, silent)
var/dist = get_dist(owner, target)
if(dist > heal_range)
to_chat(owner, span_warning("Too far for our reach... We need to be [dist - heal_range] steps closer!"))
if(!silent)
to_chat(owner, span_warning("Too far for our reach... We need to be [dist - heal_range] steps closer!"))
return FALSE
else if(!line_of_sight(owner, target))
to_chat(owner, span_warning("We can't focus properly without a clear line of sight!"))
if(!silent)
to_chat(owner, span_warning("We can't focus properly without a clear line of sight!"))
return FALSE
return TRUE


/datum/action/ability/activable/xeno/psychic_cure/use_ability(atom/target)
if(owner.do_actions)
return FALSE

if(!do_after(owner, 1 SECONDS, NONE, target, BUSY_ICON_FRIENDLY, BUSY_ICON_MEDICAL))
if(!do_after(owner, 1 SECONDS, IGNORE_TARGET_LOC_CHANGE, target, BUSY_ICON_FRIENDLY, BUSY_ICON_MEDICAL))
return FALSE
if(!can_use_ability(target, TRUE))
return FALSE

if(owner.client)
Expand Down

0 comments on commit 960b672

Please sign in to comment.