mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-21 23:24:20 +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 /🆑
89 lines
3.0 KiB
Plaintext
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"
|