mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 04:30:44 +01:00
## About The Pull Request Changes the color of hallucination cores from red (?) to hot pink. Adds the Perceptomatrix Helm, a hallucination anomaly core item.  This helmet shields the user's brain from all external stimuli while creating a 1:1 replica of it, beamed straight into their mind. What this means in practice is that the user's perception is hypercharged and their brain shielded from psychic phenomena. The sprite is a resprited marine helmet. It's mid and I don't like it but I'm not a spriter. List of effects: Perception: - Flash/Weld Immunity - True Night Vision - Blindness and blurriness immunity - Expanded FOV Brain Shielding: - Perceptual Trauma Immunity - Hallucination Immunity Psyshield: - Conversion and Mindswap Immunity - Magical Mind Resistance (Much more limited than normal resistance) - Technically counts as casting clothes Additionally, you can an ability to invoke hallucinations on others on a 25-second cooldown.  ## Why It's Good For The Game I'm kinda tired of half the anomaly cores in the game having jack and shit going for them. I also think there's a moderate lack of psychic content in the game, so here we go. ### Yeah this is cool but like isn't it kinda fucking nuts? Holy shit dude Let's dissect this. > Perception: > - Flash/Weld Immunity > - True Night Vision > - Blindness and blurriness immunity > - Expanded FOV This part effectively amounts to nothing but night vision sunglasses. > Brain Shielding: > - Perceptual Trauma Immunity > - Hallucination Immunity This isn't all that impactful, either. Hallucination immunity is immensely irrelevant. Perceptual trauma immunity, which means you ignore effects like blindness or imaginary friends, is very, very niche. > Psyshield: > - Conversion and Mindswap Immunity > - Magical Mind Resistance (Much more limited than normal resistance) > - Technically counts as casting clothes Basically just having a mindshield, and that only if you don't get it taken off anyways. Mindswap immunity could be nice, that's really not something you can even get otherwise. Magical mind resistance isn't very good. It blocks mind reading, nullblade sneak attacks, eye of god, many forms of telepathy, psyker magic, the curse of madness, the curse of babel, and that's about it. It's nice, but it won't stop a fireball. A lot of this can in the end be duplicated with sunglasses & oculine/mesons and welding protection, and a tinfoil hat, which is partly why I added the ability. It staggers for a small duration and causes hallucinations, and it's pretty fun to use, despite its effects being rather understated.
57 lines
2.2 KiB
Plaintext
57 lines
2.2 KiB
Plaintext
/// This number is multiplied by the duration remaining (IN SECONDS, NOT DECISECONDS)
|
|
/// of the eye blur status effect to determine the intensity of the blur on the user
|
|
#define BLUR_DURATION_TO_INTENSITY 0.05
|
|
|
|
/// Applies a blur to the user's screen, increasing in strength depending on duration remaining.
|
|
/datum/status_effect/eye_blur
|
|
id = "eye_blur"
|
|
tick_interval = 1 SECONDS
|
|
alert_type = null
|
|
remove_on_fullheal = TRUE
|
|
|
|
/datum/status_effect/eye_blur/on_creation(mob/living/new_owner, duration = 10 SECONDS)
|
|
src.duration = duration
|
|
return ..()
|
|
|
|
/datum/status_effect/eye_blur/on_apply()
|
|
if(owner.mob_biotypes & (MOB_ROBOTIC|MOB_SPIRIT|MOB_SPECIAL))
|
|
return FALSE
|
|
|
|
// Refresh the blur when a client jumps into the mob, in case we get put on a clientless mob with no hud
|
|
RegisterSignals(owner, list(COMSIG_MOB_LOGIN, SIGNAL_ADDTRAIT(TRAIT_SIGHT_BYPASS), SIGNAL_REMOVETRAIT(TRAIT_SIGHT_BYPASS)), PROC_REF(update_blur))
|
|
|
|
// Apply initial blur
|
|
update_blur()
|
|
return TRUE
|
|
|
|
/datum/status_effect/eye_blur/on_remove()
|
|
UnregisterSignal(owner, COMSIG_MOB_LOGIN)
|
|
if(!owner.hud_used)
|
|
return
|
|
|
|
var/atom/movable/plane_master_controller/game_plane_master_controller = owner.hud_used.plane_master_controllers[PLANE_MASTERS_GAME]
|
|
game_plane_master_controller.remove_filter("eye_blur")
|
|
|
|
/datum/status_effect/eye_blur/tick(seconds_between_ticks)
|
|
// Blur lessens the closer we are to expiring, so we update per tick.
|
|
update_blur()
|
|
|
|
/// Updates the blur of the owner of the status effect.
|
|
/// Also a signal proc for [COMSIG_MOB_LOGIN], to trigger then when the mob gets a client.
|
|
/datum/status_effect/eye_blur/proc/update_blur(datum/source)
|
|
SIGNAL_HANDLER
|
|
|
|
if(!owner.hud_used)
|
|
return
|
|
|
|
var/atom/movable/plane_master_controller/game_plane_master_controller = owner.hud_used.plane_master_controllers[PLANE_MASTERS_GAME]
|
|
if(HAS_TRAIT(owner, TRAIT_SIGHT_BYPASS))
|
|
game_plane_master_controller.remove_filter("eye_blur")
|
|
return
|
|
|
|
var/time_left_in_seconds = (duration - world.time) / (1 SECONDS)
|
|
var/amount_of_blur = clamp(time_left_in_seconds * BLUR_DURATION_TO_INTENSITY, 0.6, 3)
|
|
game_plane_master_controller.add_filter("eye_blur", 1, gauss_blur_filter(amount_of_blur))
|
|
|
|
#undef BLUR_DURATION_TO_INTENSITY
|