Files
Bubberstation/code/datums/elements/bugkiller_reagent.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

89 lines
3.0 KiB
Plaintext

/// Simple element to be applied to reagents
/// When those reagents are exposed to mobs with the bug biotype, causes toxins damage
/// If this delivers the killing blow on a non-humanoid mob, it applies a special status effect that does a funny animation
/datum/element/bugkiller_reagent
/datum/element/bugkiller_reagent/Attach(datum/target)
. = ..()
if(!istype(target, /datum/reagent))
return
RegisterSignal(target, COMSIG_REAGENT_EXPOSE_MOB, PROC_REF(on_expose))
/datum/element/bugkiller_reagent/Detach(datum/source, ...)
. = ..()
UnregisterSignal(source, COMSIG_REAGENT_EXPOSE_MOB)
/datum/element/bugkiller_reagent/proc/on_expose(
datum/reagent/source,
mob/living/exposed_mob,
methods = TOUCH,
reac_volume,
show_message = TRUE,
touch_protection = 0,
)
SIGNAL_HANDLER
if(exposed_mob.stat == DEAD)
return
if(!(exposed_mob.mob_biotypes & MOB_BUG))
return
// capping damage so splashing a beaker on a moth is not an instant crit
var/damage = min(round(0.4 * reac_volume * (1 - touch_protection), 0.1), 12)
if(damage < 1)
return
if(!(exposed_mob.mob_biotypes & MOB_HUMANOID) && exposed_mob.health <= damage)
// no-ops if they are already in the process of dying
exposed_mob.apply_status_effect(/datum/status_effect/bugkiller_death)
return
if(exposed_mob.apply_damage(damage, TOX) && damage >= 6)
// yes i know it's not burn damage. the burning is on the inside.
to_chat(exposed_mob, span_danger("You feel a burning sensation."))
/// If bugkiller delivers a lethal dosage, applies this effect which does a funny animation THEN kills 'em
/// Also makes it so simplemobs / basicmobs no longer delete when they die (if they do)
/datum/status_effect/bugkiller_death
id = "bugkiller_death"
alert_type = /atom/movable/screen/alert/status_effect/bugkiller_death
/// How many times the spasm loops
var/spasm_loops = 0
/datum/status_effect/bugkiller_death/on_creation(mob/living/new_other, duration = 4 SECONDS)
src.duration = duration
src.spasm_loops = ROUND_UP(duration / 0.8) // one spasm ~= 0.8 deciseconds (yes deciseconds)
return ..()
/datum/status_effect/bugkiller_death/on_apply()
if(owner.stat == DEAD)
return FALSE
playsound(owner, 'sound/mobs/humanoids/human/scream/malescream_1.ogg', 25, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = 5)
to_chat(owner, span_userdanger("The world begins to go dark..."))
owner.spasm_animation(spasm_loops)
owner.adjust_eye_blur(duration)
return TRUE
/datum/status_effect/bugkiller_death/on_remove()
if(owner.stat == DEAD || QDELETED(owner))
return
if(isbasicmob(owner))
var/mob/living/basic/basic_owner = owner
basic_owner.basic_mob_flags &= ~DEL_ON_DEATH
basic_owner.basic_mob_flags |= FLIP_ON_DEATH
if(isanimal(owner))
var/mob/living/simple_animal/simple_owner = owner
simple_owner.del_on_death = FALSE
simple_owner.flip_on_death = TRUE
owner.investigate_log("died to being sprayed with bugkiller.", INVESTIGATE_DEATHS)
owner.death()
/atom/movable/screen/alert/status_effect/bugkiller_death
name = "Overwhelming Toxicity"
desc = "Don't go into the light!"
icon_state = "paralysis"