Files
Bubberstation/code/datums/brain_damage/magic.dm
grungussuss 58501dce77 Reorganizes the sound folder (#86726)
## 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
/🆑
2024-09-23 22:24:50 -07:00

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"