mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-18 13:43:27 +00:00
## About The Pull Request <details> - renamed ai folder to announcer -- announcer -- - moved vox_fem to announcer - moved approachingTG to announcer - separated the ambience folder into ambience and instrumental -- ambience -- - created holy folder moved all related sounds there - created engineering folder and moved all related sounds there - created security folder and moved ambidet there - created general folder and moved ambigen there - created icemoon folder and moved all icebox-related ambience there - created medical folder and moved all medbay-related ambi there - created ruin folder and moves all ruins ambi there - created beach folder and moved seag and shore there - created lavaland folder and moved related ambi there - created aurora_caelus folder and placed its ambi there - created misc folder and moved the rest of the files that don't have a specific category into it -- instrumental -- - moved traitor folder here - created lobby_music folder and placed our songs there (title0 not used anywhere? - server-side modification?) -- items -- - moved secdeath to hailer - moved surgery to handling -- effects -- - moved chemistry into effects - moved hallucinations into effects - moved health into effects - moved magic into effects -- vehicles -- - moved mecha into vehicles created mobs folder -- mobs -- - moved creatures folder into mobs - moved voice into mobs renamed creatures to non-humanoids renamed voice to humanoids -- non-humanoids-- created cyborg folder created hiss folder moved harmalarm.ogg to cyborg -- humanoids -- -- misc -- moved ghostwhisper to misc moved insane_low_laugh to misc I give up trying to document this. </details> - [X] ambience - [x] announcer - [x] effects - [X] instrumental - [x] items - [x] machines - [x] misc - [X] mobs - [X] runtime - [X] vehicles - [ ] attributions ## Why It's Good For The Game This folder is so disorganized that it's vomit inducing, will make it easier to find and add new sounds, providng a minor structure to the sound folder. ## Changelog 🆑 grungussuss refactor: the sound folder in the source code has been reorganized, please report any oddities with sounds playing or not playing server: lobby music has been repathed to sound/music/lobby_music /🆑
128 lines
4.4 KiB
Plaintext
128 lines
4.4 KiB
Plaintext
//Magical traumas, caused by spells and curses.
|
|
//Blurs the line between the victim's imagination and reality
|
|
//Unlike regular traumas this can affect the victim's body and surroundings
|
|
|
|
/datum/brain_trauma/magic
|
|
abstract_type = /datum/brain_trauma/magic
|
|
resilience = TRAUMA_RESILIENCE_LOBOTOMY
|
|
|
|
/datum/brain_trauma/magic/lumiphobia
|
|
name = "Lumiphobia"
|
|
desc = "Patient has an inexplicable adverse reaction to light."
|
|
scan_desc = "light hypersensitivity"
|
|
gain_text = span_warning("You feel a craving for darkness.")
|
|
lose_text = span_notice("Light no longer bothers you.")
|
|
/// Cooldown to prevent warning spam
|
|
COOLDOWN_DECLARE(damage_warning_cooldown)
|
|
var/next_damage_warning = 0
|
|
|
|
/datum/brain_trauma/magic/lumiphobia/on_life(seconds_per_tick, times_fired)
|
|
..()
|
|
var/turf/T = owner.loc
|
|
if(!istype(T))
|
|
return
|
|
|
|
if(T.get_lumcount() <= SHADOW_SPECIES_LIGHT_THRESHOLD) //if there's enough light, start dying
|
|
return
|
|
|
|
if(COOLDOWN_FINISHED(src, damage_warning_cooldown))
|
|
to_chat(owner, span_warning("<b>The light burns you!</b>"))
|
|
COOLDOWN_START(src, damage_warning_cooldown, 10 SECONDS)
|
|
owner.take_overall_damage(burn = 1.5 * seconds_per_tick)
|
|
|
|
/datum/brain_trauma/magic/poltergeist
|
|
name = "Poltergeist"
|
|
desc = "Patient appears to be targeted by a violent invisible entity."
|
|
scan_desc = "paranormal activity"
|
|
gain_text = span_warning("You feel a hateful presence close to you.")
|
|
lose_text = span_notice("You feel the hateful presence fade away.")
|
|
|
|
/datum/brain_trauma/magic/poltergeist/on_life(seconds_per_tick, times_fired)
|
|
..()
|
|
if(!SPT_PROB(2, seconds_per_tick))
|
|
return
|
|
|
|
var/most_violent = -1 //So it can pick up items with 0 throwforce if there's nothing else
|
|
var/obj/item/throwing
|
|
for(var/obj/item/I in view(5, get_turf(owner)))
|
|
if(I.anchored)
|
|
continue
|
|
if(I.throwforce > most_violent)
|
|
most_violent = I.throwforce
|
|
throwing = I
|
|
if(throwing)
|
|
throwing.throw_at(owner, 8, 2)
|
|
|
|
/datum/brain_trauma/magic/antimagic
|
|
name = "Athaumasia"
|
|
desc = "Patient is completely inert to magical forces."
|
|
scan_desc = "thaumic blank"
|
|
gain_text = span_notice("You realize that magic cannot be real.")
|
|
lose_text = span_notice("You realize that magic might be real.")
|
|
|
|
/datum/brain_trauma/magic/antimagic/on_gain()
|
|
ADD_TRAIT(owner, TRAIT_ANTIMAGIC, TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/datum/brain_trauma/magic/antimagic/on_lose()
|
|
REMOVE_TRAIT(owner, TRAIT_ANTIMAGIC, TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/datum/brain_trauma/magic/stalker
|
|
name = "Stalking Phantom"
|
|
desc = "Patient is stalked by a phantom only they can see."
|
|
scan_desc = "extra-sensory paranoia"
|
|
gain_text = span_warning("You feel like something wants to kill you...")
|
|
lose_text = span_notice("You no longer feel eyes on your back.")
|
|
var/obj/effect/client_image_holder/stalker_phantom/stalker
|
|
var/close_stalker = FALSE //For heartbeat
|
|
|
|
/datum/brain_trauma/magic/stalker/Destroy()
|
|
QDEL_NULL(stalker)
|
|
return ..()
|
|
|
|
/datum/brain_trauma/magic/stalker/on_gain()
|
|
create_stalker()
|
|
return ..()
|
|
|
|
/datum/brain_trauma/magic/stalker/proc/create_stalker()
|
|
var/turf/stalker_source = locate(owner.x + pick(-12, 12), owner.y + pick(-12, 12), owner.z) //random corner
|
|
stalker = new(stalker_source, owner)
|
|
|
|
/datum/brain_trauma/magic/stalker/on_lose()
|
|
QDEL_NULL(stalker)
|
|
return ..()
|
|
|
|
/datum/brain_trauma/magic/stalker/on_life(seconds_per_tick, times_fired)
|
|
// Dead and unconscious people are not interesting to the psychic stalker.
|
|
if(owner.stat != CONSCIOUS)
|
|
return
|
|
|
|
// Not even nullspace will keep it at bay.
|
|
if(!stalker || !stalker.loc || stalker.z != owner.z)
|
|
qdel(stalker)
|
|
create_stalker()
|
|
|
|
if(get_dist(owner, stalker) <= 1)
|
|
playsound(owner, 'sound/effects/magic/demon_attack1.ogg', 50)
|
|
owner.visible_message(span_warning("[owner] is torn apart by invisible claws!"), span_userdanger("Ghostly claws tear your body apart!"))
|
|
owner.take_bodypart_damage(rand(20, 45), wound_bonus=CANT_WOUND)
|
|
else if(SPT_PROB(30, seconds_per_tick))
|
|
stalker.forceMove(get_step_towards(stalker, owner))
|
|
if(get_dist(owner, stalker) <= 8)
|
|
if(!close_stalker)
|
|
var/sound/slowbeat = sound('sound/effects/health/slowbeat.ogg', repeat = TRUE)
|
|
owner.playsound_local(owner, slowbeat, 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
|
|
close_stalker = TRUE
|
|
else
|
|
if(close_stalker)
|
|
owner.stop_sound_channel(CHANNEL_HEARTBEAT)
|
|
close_stalker = FALSE
|
|
..()
|
|
|
|
/obj/effect/client_image_holder/stalker_phantom
|
|
name = "???"
|
|
desc = "It's coming closer..."
|
|
image_icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi'
|
|
image_state = "curseblob"
|