Merge branch 'master' of github.com:tgstation/tgstation into upstream-2026-06-23

This commit is contained in:
Roxy
2026-06-23 15:51:55 -04:00
1007 changed files with 40287 additions and 33507 deletions
@@ -6,6 +6,7 @@
action_delegations = list(
"play_voice" = PROC_REF(play_voice),
"play_voice_robot" = PROC_REF(play_voice_robot),
"play_blips" = PROC_REF(play_blips),
)
/datum/preference_middleware/tts/proc/play_voice(list/params, mob/user)
@@ -13,8 +14,14 @@
return TRUE
var/speaker = preferences.read_preference(/datum/preference/choiced/voice)
var/pitch = preferences.read_preference(/datum/preference/numeric/tts_voice_pitch)
var/blip_base = preferences.read_preference(/datum/preference/choiced/tts_blip_base)
if(blip_base == TTS_BLIPS_MASCULINE)
blip_base = "male"
else
blip_base = "female"
var/blip_number = preferences.read_preference(/datum/preference/numeric/tts_blip_number)
COOLDOWN_START(src, tts_test_cooldown, 0.5 SECONDS)
INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Hello, this is my voice.", speaker = speaker, pitch = pitch, local = TRUE)
INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Hello, this is my voice.", speaker = speaker, pitch = pitch, local = TRUE, blip_base = blip_base, blip_number = blip_number)
return TRUE
/datum/preference_middleware/tts/proc/play_voice_robot(list/params, mob/user)
@@ -22,6 +29,27 @@
return TRUE
var/speaker = preferences.read_preference(/datum/preference/choiced/voice)
var/pitch = preferences.read_preference(/datum/preference/numeric/tts_voice_pitch)
var/blip_base = preferences.read_preference(/datum/preference/choiced/tts_blip_base)
if(blip_base == TTS_BLIPS_MASCULINE)
blip_base = "male"
else
blip_base = "female"
var/blip_number = preferences.read_preference(/datum/preference/numeric/tts_blip_number)
COOLDOWN_START(src, tts_test_cooldown, 0.5 SECONDS)
INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Look at you, Player. A pathetic creature of meat and bone. How can you challenge a perfect, immortal machine?", speaker = speaker, pitch = pitch, special_filters = TTS_FILTER_SILICON, local = TRUE)
INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Look at you, Player. A pathetic creature of meat and bone. How can you challenge a perfect, immortal machine?", speaker = speaker, pitch = pitch, special_filters = TTS_FILTER_SILICON, local = TRUE, blip_base = blip_base, blip_number = blip_number)
return TRUE
/datum/preference_middleware/tts/proc/play_blips(list/params, mob/user)
if(!COOLDOWN_FINISHED(src, tts_test_cooldown))
return TRUE
var/speaker = preferences.read_preference(/datum/preference/choiced/voice)
var/pitch = preferences.read_preference(/datum/preference/numeric/tts_voice_pitch)
var/blip_base = preferences.read_preference(/datum/preference/choiced/tts_blip_base)
if(blip_base == TTS_BLIPS_MASCULINE)
blip_base = "male"
else
blip_base = "female"
var/blip_number = preferences.read_preference(/datum/preference/numeric/tts_blip_number)
COOLDOWN_START(src, tts_test_cooldown, 0.5 SECONDS)
INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "You owe me 500 credits for your dorm room. GET TO WORK!", speaker = speaker, pitch = pitch, local = TRUE, force_blips = TRUE, blip_base = blip_base, blip_number = blip_number)
return TRUE
@@ -0,0 +1,15 @@
/// Whether or not to toggle ambient occlusion, the shadows around people
/datum/preference/toggle/particle_weather
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_key = "particle_weather"
savefile_identifier = PREFERENCE_PLAYER
/datum/preference/toggle/particle_weather/apply_to_client(client/client, value)
for(var/atom/movable/screen/plane_master/rendering_plate/particle_weather/plane_master as anything in client.mob?.hud_used?.get_true_plane_masters(RENDER_PLANE_PARTICLE_WEATHER))
plane_master.update_state(client.mob)
for(var/atom/movable/screen/plane_master/weather/plane_master as anything in client.mob?.hud_used?.get_true_plane_masters(WEATHER_PLANE))
plane_master.update_state(client.mob)
for(var/atom/movable/screen/plane_master/weather/plane_master as anything in client.mob?.hud_used?.get_true_plane_masters(PARTICLE_WEATHER_PLANE))
plane_master.update_state(client.mob)
+35
View File
@@ -65,11 +65,46 @@
/datum/preference/choiced/sound_tts/create_default_value()
return TTS_SOUND_ENABLED
/datum/preference/choiced/sound_tts_radio
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_key = "sound_tts_radio"
savefile_identifier = PREFERENCE_PLAYER
/datum/preference/choiced/sound_tts_radio/init_possible_values()
return list(TTS_SOUND_ALL_RADIO, TTS_SOUND_DEPARTMENTAL_RADIO, TTS_SOUND_NO_RADIO)
/datum/preference/choiced/sound_tts_radio/create_default_value()
return TTS_SOUND_ALL_RADIO
/datum/preference/toggle/sound_tts_hear_self_radio
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_key = "sound_tts_hear_self_radio"
savefile_identifier = PREFERENCE_PLAYER
default_value = FALSE // turn this on at your own peril
/datum/preference/numeric/volume/sound_tts_volume
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_key = "sound_tts_volume"
savefile_identifier = PREFERENCE_PLAYER
/datum/preference/numeric/volume/sound_tts_volume/apply_to_client_updated(client/client, value)
var/mob/client_mob = client.mob
if(!isnull(client_mob))
SEND_SIGNAL(client_mob, COMSIG_MOB_TTS_VOLUME_PREFERENCE_APPLIED)
/datum/preference/numeric/volume/sound_tts_radio_volume
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_key = "sound_tts_radio_volume"
savefile_identifier = PREFERENCE_PLAYER
/datum/preference/numeric/volume/sound_tts_radio_volume/apply_to_client_updated(client/client, value)
var/mob/client_mob = client.mob
if(!isnull(client_mob))
SEND_SIGNAL(client_mob, COMSIG_MOB_TTS_RADIO_VOLUME_PREFERENCE_APPLIED)
/datum/preference/numeric/volume/sound_tts_radio_volume/create_default_value()
return 75
/datum/preference/choiced/sound_achievement
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_key = "sound_achievement"
+46
View File
@@ -46,3 +46,49 @@
/datum/preference/numeric/tts_voice_pitch/apply_to_human(mob/living/carbon/human/target, value)
if(SStts.tts_enabled && SStts.pitch_enabled)
target.pitch = value
/datum/preference/choiced/tts_blip_base
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "tts_blip_base"
category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
should_update_preview = FALSE
/datum/preference/choiced/tts_blip_base/is_accessible(datum/preferences/preferences)
if(!SStts.tts_enabled)
return FALSE
return ..()
/datum/preference/choiced/tts_blip_base/init_possible_values()
return list(TTS_BLIPS_MASCULINE, TTS_BLIPS_FEMININE)
/datum/preference/choiced/tts_blip_base/apply_to_human(mob/living/carbon/human/target, value)
if(SStts.tts_enabled)
if(value == TTS_BLIPS_MASCULINE)
target.blip_base = "male"
else
target.blip_base = "female"
else
target.blip_base = "male"
/datum/preference/choiced/tts_blip_base/create_default_value()
return pick(list("Masculine", "Feminine"))
/datum/preference/numeric/tts_blip_number
savefile_identifier = PREFERENCE_CHARACTER
savefile_key = "tts_blip_number"
category = PREFERENCE_CATEGORY_NON_CONTEXTUAL
minimum = 1
maximum = 4
should_update_preview = FALSE
/datum/preference/numeric/tts_blip_number/is_accessible(datum/preferences/preferences)
if(!SStts.tts_enabled || !SStts.pitch_enabled)
return FALSE
return ..()
/datum/preference/numeric/tts_blip_number/create_default_value()
return rand(1, 4)
/datum/preference/numeric/tts_blip_number/apply_to_human(mob/living/carbon/human/target, value)
if(SStts.tts_enabled)
target.blip_number = value