From 512a8c783cd137cba0d6c7233780aa75a0b00079 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Thu, 9 Jun 2022 23:37:49 -0400 Subject: [PATCH] basic code cleanup and limits --- code/__DEFINES/say.dm | 16 ++++++++++++++++ code/datums/bark.dm | 12 ++++++------ code/game/say.dm | 6 ++++-- code/modules/admin/create_mob.dm | 4 ++-- code/modules/client/preferences_savefile.dm | 4 ++-- .../mob/dead/new_player/preferences_setup.dm | 4 ++-- code/modules/mob/living/say.dm | 6 ++++-- 7 files changed, 36 insertions(+), 16 deletions(-) diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 73c5841ab9..2dabf79e8c 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -97,6 +97,22 @@ #define MAX_BROADCAST_LEN 512 #define MAX_CHARTER_LEN 80 +//Bark defines +#define BARK_DEFAULT_MINPITCH 0.6 +#define BARK_DEFAULT_MAXPITCH 1.4 +#define BARK_DEFAULT_MINVARY 0.1 +#define BARK_DEFAULT_MAXVARY 0.4 +#define BARK_DEFAULT_MINSPEED 2 +#define BARK_DEFAULT_MAXSPEED 8 + +#define BARK_SPEED_BASELINE 4 //Used to calculate delay between barks, any bark speeds below this feature higher bark density, any speeds above feature lower bark density. Keeps barking length consistent + +#define BARK_MAX_BARKS 128 +#define BARK_MAX_TIME (10 SECONDS) // More or less the amount of time the above takes to process through with a bark speed of 2. + +#define BARK_PITCH_RAND(gend) ((gend == MALE ? rand(60, 120) : (gend == FEMALE ? rand(80, 140) : rand(60,140))) / 100) //Macro for determining random pitch based off gender +#define BARK_VARIANCE_RAND (rand(BARK_DEFAULT_MINVARY * 100, BARK_DEFAULT_MAXVARY * 100) / 100) //Macro for randomizing bark variance to reduce the amount of copy-pasta necessary for that + // Is something in the IC chat filter? This is config dependent. #define CHAT_FILTER_CHECK(T) (config.ic_filter_regex && findtext(T, config.ic_filter_regex)) diff --git a/code/datums/bark.dm b/code/datums/bark.dm index e07b1251cf..a7119273c3 100644 --- a/code/datums/bark.dm +++ b/code/datums/bark.dm @@ -7,14 +7,14 @@ // Pitch vars. The actual range for a bark is [(pitch - (maxvariance*0.5)) to (pitch + (maxvariance*0.5))] // Make absolutely sure to take variance into account when curating a sound for bark purposes. - var/minpitch = 0.6 - var/maxpitch = 1.4 - var/minvariance = 0.1 - var/maxvariance = 0.4 + var/minpitch = BARK_DEFAULT_MINPITCH + var/maxpitch = BARK_DEFAULT_MAXPITCH + var/minvariance = BARK_DEFAULT_MINVARY + var/maxvariance = BARK_DEFAULT_MAXVARY // Speed vars. Speed determines the number of characters required for each bark, with lower speeds being faster with higher bark density - var/minspeed = 2 - var/maxspeed = 8 + var/minspeed = BARK_DEFAULT_MINSPEED + var/maxspeed = BARK_DEFAULT_MAXSPEED // Visibility vars. Regardless of what's set below, these can still be obtained via adminbus and genetics. Rule of fun. var/list/ckeys_allowed diff --git a/code/game/say.dm b/code/game/say.dm index 0de96fa3db..d0ef26dcb8 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -55,11 +55,13 @@ GLOBAL_LIST_INIT(freqtospan, list( continue if(!(M.client.prefs.toggles & SOUND_BARK)) hearers -= M - var/barks = round((LAZYLEN(message) / vocal_speed)) + 1 + var/barks = min(round((LAZYLEN(message) / vocal_speed)) + 1, BARK_MAX_BARKS) var/total_delay for(var/i in 1 to barks) + if(total_delay > BARK_MAX_TIME) + break addtimer(CALLBACK(src, .proc/bark, hearers, range, vocal_volume, rand((vocal_pitch * 100), (vocal_pitch*100) + (vocal_pitch_range*100)) / 100), total_delay) - total_delay += rand(DS2TICKS(vocal_speed/4), DS2TICKS(vocal_speed/4) + DS2TICKS(vocal_speed/4)) TICKS + total_delay += rand(DS2TICKS(vocal_speed / BARK_SPEED_BASELINE), DS2TICKS(vocal_speed / BARK_SPEED_BASELINE) + DS2TICKS(vocal_speed / BARK_SPEED_BASELINE)) TICKS /atom/movable/proc/compose_message(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode, face_name = FALSE, atom/movable/source) if(!source) diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 9441dbf90a..19201299c2 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -51,8 +51,8 @@ H.dna.features["body_model"] = H.gender H.set_bark(pick(GLOB.bark_random_list)) - H.vocal_pitch = ((H.gender == MALE ? rand(60, 120) : (H.gender == FEMALE ? rand(80, 140) : rand(60,140))) / 100) - H.vocal_pitch_range = rand(10, 40) / 100 + H.vocal_pitch = BARK_PITCH_RAND(H.gender) + H.vocal_pitch_range = BARK_VARIANCE_RAND SEND_SIGNAL(H, COMSIG_HUMAN_ON_RANDOMIZE) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 66f16fc153..249dbba45f 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -1033,8 +1033,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car bark_id = sanitize_inlist(bark_id, GLOB.bark_list, pick(GLOB.bark_random_list)) var/datum/bark/bark_path = GLOB.bark_list[bark_id] bark_speed = sanitize_num_clamp(bark_speed, initial(bark_path.minspeed), initial(bark_path.maxspeed), initial(bark_speed)) - bark_pitch = sanitize_num_clamp(bark_pitch, initial(bark_path.minpitch), initial(bark_path.maxpitch), ((gender == MALE ? rand(60, 120) : (gender == FEMALE ? rand(80, 140) : rand(60,140))) / 100)) - bark_variance = sanitize_num_clamp(bark_variance, initial(bark_path.minvariance), initial(bark_path.maxvariance), (rand(10, 40) / 100)) + bark_pitch = sanitize_num_clamp(bark_pitch, initial(bark_path.minpitch), initial(bark_path.maxpitch), BARK_PITCH_RAND(gender)) + bark_variance = sanitize_num_clamp(bark_variance, initial(bark_path.minvariance), initial(bark_path.maxvariance), BARK_VARIANCE_RAND) joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) //Validate job prefs diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index bb31b0e3ab..378313311e 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -25,8 +25,8 @@ pref_species = new rando_race() features = random_features(pref_species?.id, gender) bark_id = pick(GLOB.bark_random_list) - bark_pitch = ((gender == MALE ? rand(60, 120) : (gender == FEMALE ? rand(80, 140) : rand(60,140))) / 100) - bark_variance = rand(10, 40) / 100 + bark_pitch = BARK_PITCH_RAND(gender) + bark_variance = BARK_VARIANCE_RAND age = rand(AGE_MIN,AGE_MAX) /datum/preferences/proc/update_preview_icon(current_tab) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 6922489fdb..52693d1d88 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -317,11 +317,13 @@ GLOBAL_LIST_INIT(department_radio_keys, list( continue if(!(M.client.prefs.toggles & SOUND_BARK)) listening -= M - var/barks = round((LAZYLEN(message) / vocal_speed)) + 1 + var/barks = min(round((LAZYLEN(message) / vocal_speed)) + 1, BARK_MAX_BARKS) var/total_delay for(var/i in 1 to barks) + if(total_delay > BARK_MAX_TIME) + break addtimer(CALLBACK(src, /atom/movable/proc/bark, listening, (message_range * (is_yell ? 4 : 1)), (vocal_volume * (is_yell ? 1.5 : 1)), rand(vocal_pitch * 100, ((vocal_pitch*100) + (vocal_pitch_range*100))) / 100), total_delay) - total_delay += rand(DS2TICKS((vocal_speed/4) * (is_yell ? 0.5 : 1)), DS2TICKS(vocal_speed/4) + DS2TICKS((vocal_speed/4) * (is_yell ? 0.5 : 1))) TICKS + total_delay += rand(DS2TICKS((vocal_speed / BARK_SPEED_BASELINE) * (is_yell ? 0.5 : 1)), DS2TICKS(vocal_speed / BARK_SPEED_BASELINE) + DS2TICKS((vocal_speed / BARK_SPEED_BASELINE) * (is_yell ? 0.5 : 1))) TICKS /atom/movable/proc/process_yelling(list/already_heard, rendered, atom/movable/speaker, datum/language/message_language, message, list/spans, message_mode, obj/source)