[MIRROR] Eye of God Update: Loads of QoL, and makes it somewhat more useful to have permanently grafted to your face. (#27120)

* Eye of God Update: Loads of QoL, and makes it somewhat more useful to have permanently grafted to your face. (#82053)

## About The Pull Request

The eye of god now protects from the madness inducing effects of
supermatter crystals and singularities. This trait is shared by the
meson night vision goggles (which this is a better version of)

The Scan ability has been refactored into a pointed spell.

The Scan ability has a lower cooldown of 35 seconds.

Scan now gives an advanced health scan readout of the target.

Scanning someone alerts the target as to who is responsible, rather than
being completely silent as to the culprit (much to the annoyance of
anyone who is victimized by someone using this on them)

The status effect that was called Stagger (not Staggered, which is
separate) is now called Rebuked.

Rebuked applies a x2 action delay cooldown, rather than x1.5.

## Why It's Good For The Game

The eye of god is generally viewed as not particularly useful. Sure, it
is a night vision meson without the flash vulnerability, which is nice.
But it wasn't seen as a terribly exciting tendril drop. The scan power
is so underwhelming, most people do not actually know what the effects
of it are. It largely is only useful for fighting megafauna, since the
stagger effect typically matters more for their cooldowns than other
monster cooldowns. And even then, not by much. The action cooldown
effect on anything else isn't often understood or felt by both victim or
user.

So, the vast majority of the time, miners use it to troll people by, and
I am quoting one player who was witness to me doing so to a particularly
annoying Head of Security, 'pissing on them' by making them glow yellow.
Someone else described it as a 'miner's jarate'. You get the idea.

I changed the highlight color to red to avoid this crude comparison. And
also, I've made it more obviously an attack when someone uses it on you
AND you now know who used it to begin with. And on top of all this, I've
given the eye of god both useful utility and a bit of a power boost to
encourage miners to actually stick the fucking thing into their skull. I
think miners will appreciate health scanning bosses in particular,
something you normally can't do in the middle of a fight with one.

## Changelog
🆑
qol: The eye of god now protects from the madness inducing effects of
supermatter crystals and singularities. This trait is shared by the
meson night vision goggles (which this is a better version of)
refactor: The Scan ability has been refactored into a pointed spell.
balance: The Scan ability has a lower cooldown of 35 seconds.
balance: The Scan ability now gives an advanced health scan readout of
the target.
balance: Scanning someone alerts the target as to who is responsible,
rather than being completely silent as to the culprit (much to the
annoyance of anyone who is victimized by someone using this on them)
code: The status effect that was called Stagger (not Staggered, which is
separate) is now called Rebuked.
balance: Rebuked applies a x2 action delay cooldown, rather than x1.5.
/🆑

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>

* Eye of God Update: Loads of QoL, and makes it somewhat more useful to have permanently grafted to your face.

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
This commit is contained in:
SkyratBot
2024-04-04 14:51:24 -04:00
committed by GitHub
co-authored by Zephyr necromanceranne
parent 570c5873ba
commit 85e359cc68
4 changed files with 45 additions and 33 deletions
+35 -23
View File
@@ -801,11 +801,12 @@
icon_state = "godeye"
inhand_icon_state = null
vision_flags = SEE_TURFS
clothing_traits = list(TRAIT_MADNESS_IMMUNE)
// Blue, light blue
color_cutoffs = list(15, 30, 40)
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
custom_materials = null
var/datum/action/cooldown/scan/scan_ability
var/datum/action/cooldown/spell/pointed/scan/scan_ability
/obj/item/clothing/glasses/godeye/Initialize(mapload)
. = ..()
@@ -836,49 +837,60 @@
victim.emote("scream")
victim.flash_act()
/datum/action/cooldown/scan
/datum/action/cooldown/spell/pointed/scan
name = "Scan"
desc = "Scan an enemy, to get their location and stagger them, increasing their time between attacks."
desc = "Scan an enemy, to get their location and rebuke them, increasing their time between attacks."
background_icon_state = "bg_clock"
overlay_icon_state = "bg_clock_border"
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "scan"
school = SCHOOL_HOLY
cooldown_time = 35 SECONDS
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
antimagic_flags = MAGIC_RESISTANCE_MIND //Even god cannot penetrate the tin foil hat
click_to_activate = TRUE
cooldown_time = 45 SECONDS
ranged_mousepointer = 'icons/effects/mouse_pointers/scan_target.dmi'
/datum/action/cooldown/scan/IsAvailable(feedback = FALSE)
return ..() && isliving(owner)
/datum/action/cooldown/scan/Activate(atom/scanned)
StartCooldown(15 SECONDS)
if(owner.stat != CONSCIOUS)
/datum/action/cooldown/spell/pointed/scan/is_valid_target(atom/cast_on)
if(!isliving(cast_on))
owner.balloon_alert(owner, "not a valid target!")
return FALSE
if(!isliving(scanned) || scanned == owner)
owner.balloon_alert(owner, "invalid scanned!")
var/mob/living/living_cast_on = cast_on
if(living_cast_on.stat == DEAD)
owner.balloon_alert(owner, "target is dead!")
return FALSE
return TRUE
/datum/action/cooldown/spell/pointed/scan/cast(mob/living/cast_on)
. = ..()
if(cast_on.can_block_magic(MAGIC_RESISTANCE_MIND, charge_cost = 0))
to_chat(owner, span_warning("As we apply our dissecting vision, we are abruptly cut short. \
They have some kind of enigmatic mental defense. It seems we've been foiled."))
return
if(cast_on == owner)
to_chat(owner, span_warning("The last time a god stared too closely into their own reflection, they became transfixed for all of time. Do not let us become like them."))
return
var/mob/living/living_owner = owner
var/mob/living/living_scanned = scanned
living_scanned.apply_status_effect(/datum/status_effect/stagger)
var/mob/living/living_scanned = cast_on
living_scanned.apply_status_effect(/datum/status_effect/rebuked)
var/datum/status_effect/agent_pinpointer/scan_pinpointer = living_owner.apply_status_effect(/datum/status_effect/agent_pinpointer/scan)
scan_pinpointer.scan_target = living_scanned
living_scanned.set_jitter_if_lower(100 SECONDS)
to_chat(living_scanned, span_warning("You've been staggered!"))
living_scanned.add_filter("scan", 2, list("type" = "outline", "color" = COLOR_YELLOW, "size" = 1))
to_chat(living_scanned, span_warning("You briefly see a flash of [living_owner]'s face before being knocked off-balance by an unseen force!"))
living_scanned.add_filter("scan", 2, list("type" = "outline", "color" = COLOR_RED, "size" = 1))
addtimer(CALLBACK(living_scanned, TYPE_PROC_REF(/datum, remove_filter), "scan"), 30 SECONDS)
healthscan(living_owner, living_scanned, 1, TRUE)
owner.playsound_local(get_turf(owner), 'sound/magic/smoke.ogg', 50, TRUE)
owner.balloon_alert(owner, "[living_scanned] scanned")
addtimer(CALLBACK(src, PROC_REF(send_cooldown_end_message), cooldown_time))
StartCooldown()
return TRUE
/datum/action/cooldown/scan/proc/send_cooldown_end_message()
/datum/action/cooldown/spell/pointed/scan/proc/send_cooldown_end_message()
owner?.balloon_alert(owner, "scan recharged")
/datum/status_effect/agent_pinpointer/scan