mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-28 15:39:57 +01:00
Bugfix batch (Pesticide Edition) (#21556)
Fixes https://github.com/Aurorastation/Aurora.3/issues/18504 Fixes https://github.com/Aurorastation/Aurora.3/issues/21064 Fixes https://github.com/Aurorastation/Aurora.3/issues/21267 Fixes https://github.com/Aurorastation/Aurora.3/issues/21455 Fixes https://github.com/Aurorastation/Aurora.3/issues/21535 Miscellaneous bugfixes, code cleanup, etc. Smaller batches this time. changes: - spellcheck: "Renames 'gibber' to 'autobutcher'." - code_imp: "Cleans up a lot of old autobutcher code." - code_imp: "Simplifies and unifies a lot of circuit board naming code." - code_imp: "Updates various code comments to DMDocs format." - balance: "Slightly increased damage of beating someone with a ladder." - bugfix: "Fixes foreign speech displaying the translated versions in langchat for non-fluent listeners." - bugfix: "Fixes whispered speech langchat; whispers are now correctly italicized." - bugfix: "Fixes shouted speech langchat; shouts are now correctly biggified." - bugfix: "Adds missing Omni Gas Mixer, Gas Meter options from RFD-P." - bugfix: "Adds missing circuit boards for bioballistic delivery system, lysis-isolation centrifuge, and autobutcher to allow for construction and deconstruction." - bugfix: "Fixes empty algae chips bag having description set for its name." - bugfix: "Adds fallback_specific_heat values to several reagents that were missing them." - bugfix: "Fixes antimateriel projectiles being erroneously damage-capped when hitting walls." - bugfix: "Fixes laser beam effects not using the base colors of their beam VFX." - qol: "Added helpful feedback hint to move closer when someone speaks aloud within 4 tiles while you're in vacuum (as features go, this one felt more like a bug to experience)." - qol: "Updated various examine hints." --------- Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
This commit is contained in:
@@ -1,33 +1,46 @@
|
||||
// At minimum every mob has a hear_say proc.
|
||||
|
||||
/**
|
||||
* hear_say's return value determines whether or not the mob in question also receives a langchat image.
|
||||
*/
|
||||
/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol, var/font_size = null)
|
||||
if(!istype(src, /mob/living/test) && cant_hear())
|
||||
return
|
||||
return FALSE
|
||||
|
||||
if(speaker && !istype(speaker, /mob/living/test) && (!speaker.client && istype(src,/mob/abstract/ghost/observer) && client.prefs.toggles & CHAT_GHOSTEARS && !(speaker in view(src))))
|
||||
//Does the speaker have a client? It's either random stuff that observers won't care about (Experiment 97B says, 'EHEHEHEHEHEHEHE')
|
||||
//Or someone snoring. So we make it where they won't hear it.
|
||||
return
|
||||
|
||||
if((language && (language.flags & KNOWONLYHEAR)) && !say_understands(speaker, language))
|
||||
return
|
||||
return FALSE
|
||||
|
||||
//make sure the air can transmit speech - hearer's side
|
||||
var/turf/T = get_turf(src)
|
||||
var/vacuum_proof = ((language && (language.flags & PRESSUREPROOF)) || isghost(src))
|
||||
var/speaker_name
|
||||
|
||||
if(ishuman(speaker))
|
||||
var/mob/living/carbon/human/H = speaker
|
||||
speaker_name = H.GetVoice()
|
||||
|
||||
if(T && !vacuum_proof) //Ghosts can hear even in vacuum.
|
||||
var/datum/gas_mixture/environment = T.return_air()
|
||||
var/pressure = (environment)? environment.return_pressure() : 0
|
||||
if(pressure < SOUND_MINIMUM_PRESSURE && get_dist(speaker, src) > 1)
|
||||
return
|
||||
var/distance_to_speaker = get_dist(speaker, src)
|
||||
if(pressure < SOUND_MINIMUM_PRESSURE && distance_to_speaker > 1)
|
||||
// Yeah, this isn't quite realistic to be able to see if someone is talking through, say, an opaque mask, but for gameplay purposes it should help indicate that you're not bugged.
|
||||
if(distance_to_speaker <= 4 && !italics)
|
||||
to_chat(src, SPAN_NOTICE("[speaker_name] talks, but you're in a vacuum. Maybe if you were close enough for the sound to transmit through touch..."))
|
||||
return FALSE
|
||||
|
||||
if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet
|
||||
italics = 1
|
||||
sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact
|
||||
|
||||
if((language && (language.flags & KNOWONLYHEAR)) && !say_understands(speaker, language))
|
||||
return TRUE
|
||||
|
||||
if(!vr_mob && (sleeping || stat == UNCONSCIOUS))
|
||||
hear_sleep(message)
|
||||
return
|
||||
return FALSE
|
||||
|
||||
//non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet.
|
||||
if (language && (language.flags & NONVERBAL))
|
||||
@@ -38,10 +51,6 @@
|
||||
message = language ? language.scramble(message, languages) : stars(message)
|
||||
|
||||
var/accent_icon = speaker.get_accent_icon(language, src)
|
||||
var/speaker_name = speaker.name
|
||||
if(ishuman(speaker))
|
||||
var/mob/living/carbon/human/H = speaker
|
||||
speaker_name = H.GetVoice()
|
||||
|
||||
if(italics)
|
||||
message = "<i>[message]</i>"
|
||||
@@ -58,8 +67,10 @@
|
||||
if(!language || !(language.flags & INNATE)) // INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set
|
||||
if(speaker == src)
|
||||
to_chat(src, SPAN_WARNING("You cannot hear yourself speak!"))
|
||||
return FALSE
|
||||
else
|
||||
to_chat(src, "<span class='name'>[speaker_name]</span>[alt_name] talks but you cannot hear them.")
|
||||
return FALSE
|
||||
else
|
||||
if(language)
|
||||
if(font_size)
|
||||
|
||||
@@ -106,10 +106,6 @@
|
||||
qdel(extracted_slime)
|
||||
update_icon()
|
||||
|
||||
#ifndef T_BOARD
|
||||
#error T_BOARD macro is not defined but we need it!
|
||||
#endif
|
||||
|
||||
/obj/item/circuitboard/slime_extractor
|
||||
name = T_BOARD("slime extractor")
|
||||
build_path = "/obj/machinery/slime_extractor"
|
||||
|
||||
@@ -248,6 +248,13 @@ var/list/channel_to_radio_key = new
|
||||
if(!verb)
|
||||
verb = say_quote(message, speaking, is_singing, whisper)
|
||||
|
||||
var/is_shouting = FALSE
|
||||
if(speaking)
|
||||
for(var/verb_to_check in speaking.shout_verb)
|
||||
if(verb_to_check == verb)
|
||||
is_shouting = TRUE
|
||||
continue
|
||||
|
||||
if(is_muzzled())
|
||||
to_chat(src, SPAN_DANGER("You're muzzled and cannot speak!"))
|
||||
return
|
||||
@@ -357,8 +364,10 @@ var/list/channel_to_radio_key = new
|
||||
var/list/langchat_styles = list()
|
||||
if(istype(speaking, /datum/language/noise))
|
||||
langchat_styles = list("emote", "langchat_small")
|
||||
if(istype(speaking, /datum/language/noise))
|
||||
langchat_styles = list("emote", "langchat_small")
|
||||
if(whisper)
|
||||
langchat_styles = list("langchat_italic")
|
||||
if(is_shouting)
|
||||
langchat_styles = list("langchat_yell")
|
||||
|
||||
langchat_speech(message, get_hearers_in_view(message_range, src), speaking, additional_styles = langchat_styles)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user