diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm index 48d1117241f..b930c3711de 100644 --- a/code/__DEFINES/surgery.dm +++ b/code/__DEFINES/surgery.dm @@ -36,11 +36,6 @@ /// Scarring on the left eye #define LEFT_EYE_SCAR (1<<1) -/// Scarring on the right eye -#define RIGHT_EYE_SCAR (1<<0) -/// Scarring on the left eye -#define LEFT_EYE_SCAR (1<<1) - /// Helper to figure out if a limb is organic #define IS_ORGANIC_LIMB(limb) (limb.bodytype & BODYTYPE_ORGANIC) /// Helper to figure out if a limb is robotic diff --git a/code/__DEFINES/~~bubber_defines/chat.dm b/code/__DEFINES/~~bubber_defines/chat.dm index dbfa4540563..aed899b5bd4 100644 --- a/code/__DEFINES/~~bubber_defines/chat.dm +++ b/code/__DEFINES/~~bubber_defines/chat.dm @@ -1,3 +1,4 @@ // Additional message types for TGUI chat panel filtering #define MESSAGE_TYPE_LOOC "looc" #define MESSAGE_TYPE_REMOTE_LOOC "rlooc" +#define MESSAGE_TYPE_SUBTLE "subtle" diff --git a/code/__DEFINES/~~bubber_defines/span.dm b/code/__DEFINES/~~bubber_defines/span.dm index 1970f8254ea..ae88cc47010 100644 --- a/code/__DEFINES/~~bubber_defines/span.dm +++ b/code/__DEFINES/~~bubber_defines/span.dm @@ -1,4 +1,6 @@ +#define span_subtle(str) ("" + str + "") #define span_subtlepda(str) ("" + str + "") +#define span_subtler(str) ("" + str + "") #define span_velvet(str) ("" + str + "") #define vote_font(str) ("" + str + "") diff --git a/code/_globalvars/lists/ambience.dm b/code/_globalvars/lists/ambience.dm index 6cc984adf1c..ed3409da940 100644 --- a/code/_globalvars/lists/ambience.dm +++ b/code/_globalvars/lists/ambience.dm @@ -89,6 +89,7 @@ GLOBAL_LIST_INIT(icemoon_ambience,list( 'sound/ambience/icemoon/ambiicesting3.ogg', 'sound/ambience/icemoon/ambiicesting4.ogg', 'sound/ambience/icemoon/ambiicesting5.ogg', + 'modular_zubbers/sound/ambiance/bangle-freezer.ogg', // Bubber Edit - Credit: Bangle )) GLOBAL_LIST_INIT(medical_ambience,list( diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index e3d47a5c0cd..c5754115a6e 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -52,18 +52,18 @@ SUBSYSTEM_DEF(pai) return FALSE switch(action) if("submit") - candidate.comments = trim(params["comments"], MAX_BROADCAST_LEN) - candidate.description = trim(params["description"], MAX_BROADCAST_LEN) - candidate.name = trim(params["name"], MAX_NAME_LEN) + candidate.comments = reject_bad_name(params["comments"], allow_numbers = TRUE, max_length = MAX_BROADCAST_LEN, strict = TRUE, cap_after_symbols = FALSE) || "Unknown" + candidate.description = reject_bad_name(params["description"], allow_numbers = TRUE, max_length = MAX_BROADCAST_LEN, strict = TRUE, cap_after_symbols = FALSE) || "Unknown" + candidate.name = reject_bad_name(params["name"], allow_numbers = TRUE, max_length = MAX_NAME_LEN, strict = TRUE, cap_after_symbols = FALSE) || "Unknown" candidate.ckey = user.ckey candidate.ready = TRUE ui.close() submit_alert(user) return TRUE if("save") - candidate.comments = params["comments"] - candidate.description = params["description"] - candidate.name = params["name"] + candidate.comments = reject_bad_name(params["comments"], allow_numbers = TRUE, max_length = MAX_BROADCAST_LEN, strict = TRUE, cap_after_symbols = FALSE) || "Unknown" + candidate.description = reject_bad_name(params["description"], allow_numbers = TRUE, max_length = MAX_BROADCAST_LEN, strict = TRUE, cap_after_symbols = FALSE) || "Unknown" + candidate.name = reject_bad_name(params["name"], allow_numbers = TRUE, max_length = MAX_NAME_LEN, strict = TRUE, cap_after_symbols = FALSE) || "Unknown" candidate.savefile_save(user) return TRUE if("load") diff --git a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm index 1dfb765d970..87ae6f2bbe7 100644 --- a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm @@ -27,16 +27,16 @@ if(imprint_on_next_insertion) //We only want this set *once* var/feature_name = receiver.dna.features[feature_key] if (isnull(feature_name)) - /* NOVA EDIT - Customization - ORIGINAL: + /* SKYRAT EDIT - Customization - ORIGINAL: feature_name = receiver.dna.species.mutant_organs[parent.type] - */ // NOVA EDIT START + */ // SKYRAT EDIT START if(!set_appearance_from_dna(receiver.dna)) - set_appearance_from_name(receiver.dna.species.mutant_organs[parent.type]) - // NOVA EDIT END - // NOVA EDIT START - Puts the following line in an else block + set_appearance_from_name(receiver.dna.species.mutant_organs[parent.type] || pick(get_global_feature_list())) + // SKYRAT EDIT END + // SKYRAT EDIT START - Puts the following line in an else block else set_appearance_from_name(feature_name) - // NOVA EDIT END + // SKYRAT EDIT END imprint_on_next_insertion = FALSE /datum/bodypart_overlay/mutant/get_overlay(layer, obj/item/bodypart/limb) diff --git a/code/datums/status_effects/debuffs/dna_transformation.dm b/code/datums/status_effects/debuffs/dna_transformation.dm index 243d20b1917..7504977e98f 100644 --- a/code/datums/status_effects/debuffs/dna_transformation.dm +++ b/code/datums/status_effects/debuffs/dna_transformation.dm @@ -33,9 +33,9 @@ // Save the old DNA transforming.dna.copy_dna(old_dna) // Makes them into the new DNA - transforming.visual_only_organs = TRUE // NOVA EDIT ADDITION - Customization + transforming.visual_only_organs = TRUE // SKYRAT EDIT ADDITION - Customization new_dna.transfer_identity(transforming) - transforming.visual_only_organs = FALSE // NOVA EDIT ADDITION - Customization + transforming.visual_only_organs = FALSE // SKYRAT EDIT ADDITION - Customization transforming.real_name = new_dna.real_name transforming.name = transforming.get_visible_name() transforming.updateappearance(mutcolor_update = TRUE) @@ -46,9 +46,9 @@ var/mob/living/carbon/transforming = owner if(!QDELING(owner)) // Don't really need to do appearance stuff if we're being deleted - transforming.visual_only_organs = TRUE // NOVA EDIT ADDITION - Customization + transforming.visual_only_organs = TRUE // SKYRAT EDIT ADDITION - Customization old_dna.transfer_identity(transforming) - transforming.visual_only_organs = FALSE // NOVA EDIT ADDITION - Customization + transforming.visual_only_organs = FALSE // SKYRAT EDIT ADDITION - Customization transforming.updateappearance(mutcolor_update = TRUE) transforming.domutcheck() diff --git a/code/game/machinery/computer/records/medical.dm b/code/game/machinery/computer/records/medical.dm index 2043e129da3..1073c845375 100644 --- a/code/game/machinery/computer/records/medical.dm +++ b/code/game/machinery/computer/records/medical.dm @@ -101,7 +101,9 @@ if("add_note") if(!params["content"]) return FALSE - var/content = trim(params["content"], MAX_MESSAGE_LEN) + var/content = reject_bad_name(params["content"], allow_numbers = TRUE, max_length = MAX_MESSAGE_LEN, strict = TRUE, cap_after_symbols = FALSE) + if(!content) + return FALSE var/datum/medical_note/new_note = new(usr.name, content) while(length(target.medical_notes) > 2) diff --git a/code/game/machinery/computer/records/records.dm b/code/game/machinery/computer/records/records.dm index 7d01d973549..30fe231d101 100644 --- a/code/game/machinery/computer/records/records.dm +++ b/code/game/machinery/computer/records/records.dm @@ -41,9 +41,9 @@ if(!field || !(field in target?.vars)) return FALSE - var/value = trim(params["value"], MAX_BROADCAST_LEN) - investigate_log("[key_name(user)] changed the field: \"[field]\" with value: \"[target.vars[field]]\" to new value: \"[value || "Unknown"]\"", INVESTIGATE_RECORDS) - target.vars[field] = value || "Unknown" + var/value = reject_bad_name(params["value"], allow_numbers = TRUE, max_length = MAX_BROADCAST_LEN, strict = TRUE, cap_after_symbols = FALSE) || "Unknown" + investigate_log("[key_name(user)] changed the field: \"[field]\" with value: \"[target.vars[field]]\" to new value: \"[value]\"", INVESTIGATE_RECORDS) + target.vars[field] = value return TRUE diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index 244694c7dcc..1bde98e582f 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -953,10 +953,10 @@ user.regenerate_icons() user.name = user.get_visible_name() current_profile = chosen_profile - // NOVA EDIT START - user.visual_only_organs = TRUE // NOVA EDIT ADDITION - Customization + // SKYRAT EDIT START + user.visual_only_organs = TRUE // SKYRAT EDIT ADDITION - Customization chosen_dna.transfer_identity(user, TRUE) - user.visual_only_organs = FALSE // NOVA EDIT ADDITION - Customization + user.visual_only_organs = FALSE // SKYRAT EDIT ADDITION - Customization user.updateappearance(mutcolor_update = TRUE, eyeorgancolor_update = TRUE) user.regenerate_icons() user.name = user.get_visible_name() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 0d458f723af..aee974ce57b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -276,7 +276,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if (istype(requested_preference, /datum/preference/name)) tainted_character_profiles = TRUE //SKYRAT EDIT - update_mutant_bodyparts(requested_preference) + update_body_parts(requested_preference) for (var/datum/preference_middleware/preference_middleware as anything in middleware) if (preference_middleware.post_set_preference(usr, requested_preference_key, value)) return TRUE diff --git a/code/modules/client/preferences/_preference.dm b/code/modules/client/preferences/_preference.dm index 9e3b24e0f69..cfba821725f 100644 --- a/code/modules/client/preferences/_preference.dm +++ b/code/modules/client/preferences/_preference.dm @@ -333,7 +333,7 @@ GLOBAL_LIST_INIT(preference_entries_by_key, init_preference_entries_by_key()) if ( \ !isnull(relevant_inherent_trait) \ - || !isnull(relevant_mutant_bodypart) /* NOVA EDIT ADDITION - Since we still use relevant_mutant_bodypart, we need it here. */ \ + || !isnull(relevant_mutant_bodypart) /* SKYRAT EDIT ADDITION - Since we still use relevant_mutant_bodypart, we need it here. */ \ || !isnull(relevant_external_organ) \ || !isnull(relevant_head_flag) \ || !isnull(relevant_body_markings) \ diff --git a/code/modules/mob/dead/new_player/login.dm b/code/modules/mob/dead/new_player/login.dm index 91aa6b932e9..440292b7a4f 100644 --- a/code/modules/mob/dead/new_player/login.dm +++ b/code/modules/mob/dead/new_player/login.dm @@ -34,7 +34,7 @@ //SKYRAT EDIT ADDITION var/soft_player_cap = CONFIG_GET(number/player_soft_cap) - if(soft_player_cap >= TGS_CLIENT_COUNT) + if(soft_player_cap && TGS_CLIENT_COUNT >= soft_player_cap) INVOKE_ASYNC(src, PROC_REF(connect_to_second_server)) //SKYRAT EDIT END diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 8483767912b..ef035165614 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -311,7 +311,7 @@ GLOBAL_LIST_EMPTY(features_by_species) qdel(existing_organ) continue - if(existing_organ && !disallow_customizable_dna_features) // NOVA EDIT CHANGE - Though sometimes we might want to do that. - ORIGINAL: if(existing_organ) + if(existing_organ) // SKYRAT EDIT CHANGE - Though sometimes we might want to do that. - ORIGINAL: if(existing_organ) // we dont want to remove organs that were not from the old species (such as from freak surgery or prosthetics) if(existing_organ.type != old_organ_type && !replace_current) continue @@ -387,7 +387,7 @@ GLOBAL_LIST_EMPTY(features_by_species) if(old_species.type != type) replace_body(human_who_gained_species, src) - regenerate_organs(human_who_gained_species, old_species, replace_current = human_who_gained_species.visual_only_organs, visual_only = human_who_gained_species.visual_only_organs) // NOVA EDIT - Allows existing organs to be properly removed when regenerating organs - ORIGINAL: regenerate_organs(human_who_gained_species, old_species, replace_current = FALSE, visual_only = human_who_gained_species.visual_only_organs) + regenerate_organs(human_who_gained_species, old_species, replace_current = human_who_gained_species.visual_only_organs, visual_only = human_who_gained_species.visual_only_organs) // SKYRAT EDIT - Allows existing organs to be properly removed when regenerating organs - ORIGINAL: regenerate_organs(human_who_gained_species, old_species, replace_current = FALSE, visual_only = human_who_gained_species.visual_only_organs) // Update locked slots AFTER all organ and body stuff is handled human_who_gained_species.hud_used?.update_locked_slots() // Drop the items the new species can't wear @@ -404,7 +404,7 @@ GLOBAL_LIST_EMPTY(features_by_species) //Resets blood if it is excessively high so they don't gib normalize_blood(human_who_gained_species) - //add_body_markings(human_who_gained_species) // NOVA EDIT REMOVAL - We do this differently + //add_body_markings(human_who_gained_species) // SKYRAT EDIT REMOVAL - We do this differently if(length(inherent_traits)) human_who_gained_species.add_traits(inherent_traits, SPECIES_TRAIT) @@ -532,7 +532,7 @@ GLOBAL_LIST_EMPTY(features_by_species) species_human.apply_overlay(BODY_LAYER) update_body_markings(species_human) */ -//NOVA EDIT REMOVAL END +//SKYRAT EDIT REMOVAL END //This exists so sprite accessories can still be per-layer without having to include that layer's //number in their sprite name, which causes issues when those numbers change. diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 1f720451982..fe3412245cd 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -7,7 +7,7 @@ TRAIT_MUTANT_COLORS, ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE - mutant_bodyparts = list("body_markings" = "None", "legs" = "Normal Legs") // NOVA EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/lizard = "None") + mutant_bodyparts = list("body_markings" = "None", "legs" = "Normal Legs") // SKYRAT EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/lizard = "None") mutant_organs = list( /obj/item/organ/external/horns = "None", /obj/item/organ/external/frills = "None", diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index b2da4ab759e..2045b9b0643 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -3,8 +3,8 @@ plural_form = "Mothmen" id = SPECIES_MOTH inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG - mutant_bodyparts = list("moth_markings" = "None") // NOVA EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/moth = "None") - //mutant_organs = list(/obj/item/organ/external/wings/moth = "Plain", /obj/item/organ/external/antennae = "Plain") // NOVA EDIT REMOVAL - Fixing moths + mutant_bodyparts = list("moth_markings" = "None") // SKYRAT EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/moth = "None") + //mutant_organs = list(/obj/item/organ/external/wings/moth = "Plain", /obj/item/organ/external/antennae = "Plain") // SKYRAT EDIT REMOVAL - Fixing moths meat = /obj/item/food/meat/slab/human/mutant/moth mutanttongue = /obj/item/organ/internal/tongue/moth mutanteyes = /obj/item/organ/internal/eyes/moth diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 577e80c9124..83ce525ec83 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -8,7 +8,7 @@ TRAIT_PLANT_SAFE, ) mutant_organs = list( - // /obj/item/organ/external/pod_hair = "None", // NOVA EDIT REMOVAL - Customization (it messes up unit tests.) + // /obj/item/organ/external/pod_hair = "None", // SKYRAT EDIT REMOVAL - Customization (it messes up unit tests.) ) inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT inherent_factions = list(FACTION_PLANTS, FACTION_VINES) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index c9dc7fd9c76..5d594986a69 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -254,7 +254,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) QDEL_NULL(radio) QDEL_NULL(countdown) if(is_main_engine && GLOB.main_supermatter_engine == src) - SSpersistence.reset_delam_counter() // NOVA EDIT ADDITION BEGIN - DELAM SCRAM + SSpersistence.reset_delam_counter() // SKYRAT EDIT ADDITION BEGIN - DELAM SCRAM GLOB.main_supermatter_engine = null QDEL_NULL(soundloop) return ..() diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index dcfda6e31ac..b8883c8b97b 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -994,7 +994,7 @@ markings_alpha = owner_species.markings_alpha else markings = list() - // NOVA EDIT END + // SKYRAT EDIT END recolor_bodypart_overlays() return TRUE diff --git a/code/modules/surgery/organs/external/tails.dm b/code/modules/surgery/organs/external/tails.dm index 8944e7474c3..2e8b5a04072 100644 --- a/code/modules/surgery/organs/external/tails.dm +++ b/code/modules/surgery/organs/external/tails.dm @@ -67,9 +67,9 @@ // SKYRAT EDIT ADDITION START if(!bodypart.owner.dna.mutant_bodyparts["spines"]) bodypart.owner.dna.mutant_bodyparts["spines"] = list(MUTANT_INDEX_NAME = "None", MUTANT_INDEX_COLOR_LIST = list("#886600", "#886600", "#886600")) - // NOVA EDIT ADDITION END - var/feature_name = bodypart.owner.dna.mutant_bodyparts["spines"][MUTANT_INDEX_NAME] // NOVA EDIT CHANGE - ORIGINAL: var/feature_name = bodypart.owner.dna.features["spines"] //tail spines don't live in DNA, but share feature names with regular spines - tail_spines_overlay.set_appearance_from_dna(bodypart.owner.dna, feature_name, feature_key = "spines") // NOVA EDIT CHANGE - ORIGINAL: tail_spines_overlay.set_appearance_from_name(feature_name) + // SKYRAT EDIT ADDITION END + var/feature_name = bodypart.owner.dna.mutant_bodyparts["spines"][MUTANT_INDEX_NAME] // SKYRAT EDIT CHANGE - ORIGINAL: var/feature_name = bodypart.owner.dna.features["spines"] //tail spines don't live in DNA, but share feature names with regular spines + tail_spines_overlay.set_appearance_from_dna(bodypart.owner.dna, feature_name, feature_key = "spines") // SKYRAT EDIT CHANGE - ORIGINAL: tail_spines_overlay.set_appearance_from_name(feature_name) bodypart.add_bodypart_overlay(tail_spines_overlay) /// If we have a tail spines overlay, delete it diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm index 3ff6c5daf65..6f6210ba90b 100644 --- a/code/modules/surgery/organs/internal/ears/_ears.dm +++ b/code/modules/surgery/organs/internal/ears/_ears.dm @@ -155,7 +155,7 @@ preference = "feature_human_ears" - //dna_block = DNA_EARS_BLOCK // NOVA EDIT REMOVAL - Customization - We have our own system to handle DNA. + //dna_block = DNA_EARS_BLOCK // SKYRAT EDIT REMOVAL - Customization - We have our own system to handle DNA. bodypart_overlay = /datum/bodypart_overlay/mutant/cat_ears @@ -169,7 +169,7 @@ var/inner_layer = EXTERNAL_FRONT /datum/bodypart_overlay/mutant/cat_ears/get_global_feature_list() - return SSaccessories.sprite_accessories["ears"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.ears_list + return SSaccessories.sprite_accessories["ears"] // SKYRAT EDIT - Customization - ORIGINAL: return SSaccessories.ears_list /datum/bodypart_overlay/mutant/cat_ears/can_draw_on_bodypart(mob/living/carbon/human/human) if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR)) diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm index 798e0a26691..4c593a1f975 100644 --- a/code/modules/surgery/organs/internal/eyes/_eyes.dm +++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -50,7 +50,7 @@ /// indication that the eyes are undergoing some negative effect var/damaged = FALSE /// Native FOV that will be applied if a config is enabled - var/native_fov = NONE //NOVA EDIT CHANGE - ORIGINAL: var/native_fov = FOV_90_DEGREES + var/native_fov = NONE //SKYRAT EDIT CHANGE - ORIGINAL: var/native_fov = FOV_90_DEGREES /// Scarring on this organ var/scarring = NONE @@ -125,7 +125,7 @@ organ_owner.update_tint() organ_owner.update_sight() - is_emissive = FALSE // NOVA EDIT ADDITION + is_emissive = FALSE // SKYRAT EDIT ADDITION UnregisterSignal(organ_owner, COMSIG_ATOM_BULLET_ACT) /obj/item/organ/internal/eyes/proc/on_bullet_act(datum/source, obj/projectile/proj, def_zone) diff --git a/code/modules/unit_tests/dna_infusion.dm b/code/modules/unit_tests/dna_infusion.dm index 0fd898e00de..4bd0469ca1d 100644 --- a/code/modules/unit_tests/dna_infusion.dm +++ b/code/modules/unit_tests/dna_infusion.dm @@ -38,13 +38,13 @@ for(var/datum/infuser_entry/infuser_entry as anything in flatten_list(GLOB.infuser_entries)) var/output_organs = infuser_entry.output_organs var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent) - // NOVA EDIT ADDITION START - Customization + // SKYRAT EDIT ADDITION START - Customization lab_rat.dna.mutant_bodyparts["moth_antennae"] = list(MUTANT_INDEX_NAME = "Plain", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"), MUTANT_INDEX_EMISSIVE_LIST = list(FALSE)) lab_rat.dna.mutant_bodyparts["tail"] = list(MUTANT_INDEX_NAME = "Light Tiger", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF")) lab_rat.dna.mutant_bodyparts["snout"] = list(MUTANT_INDEX_NAME = "Sharp + Light", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF")) lab_rat.dna.mutant_bodyparts["horns"] = list(MUTANT_INDEX_NAME = "Simple", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF")) lab_rat.dna.mutant_bodyparts["frills"] = list(MUTANT_INDEX_NAME = "Aquatic", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF")) - // NOVA EDIT END + // SKYRAT EDIT END var/list/obj/item/organ/inserted_organs = list() // Attempt to insert entire list of mutant organs for the given infusion_entry. diff --git a/html/changelogs/AutoChangeLog-pr-2898.yml b/html/changelogs/AutoChangeLog-pr-2898.yml deleted file mode 100644 index 70c1fea25b5..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2898.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "LT3" -delete-after: True -changes: - - rscdel: "Pun Pun's suit sensors are off by default" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-2901.yml b/html/changelogs/AutoChangeLog-pr-2901.yml deleted file mode 100644 index a82180ac30a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2901.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "StrangeWeirdKitten" -delete-after: True -changes: - - bugfix: "Subtler will now filter out clientless mobs" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-2912.yml b/html/changelogs/AutoChangeLog-pr-2912.yml new file mode 100644 index 00000000000..d5b8d9c75aa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2912.yml @@ -0,0 +1,4 @@ +author: "StrangeWeirdKitten, Bangle" +delete-after: True +changes: + - rscadd: "Adds another ambiance track to Icebox called Freezer, by Bangle." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-2913.yml b/html/changelogs/AutoChangeLog-pr-2913.yml new file mode 100644 index 00000000000..50587e820ff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2913.yml @@ -0,0 +1,4 @@ +author: "MosleyTheMalO" +delete-after: True +changes: + - bugfix: "makes the softcap config disableable again" \ No newline at end of file diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml index bb22311204f..af3cfb91236 100644 --- a/html/changelogs/archive/2025-01.yml +++ b/html/changelogs/archive/2025-01.yml @@ -143,3 +143,19 @@ - rscadd: 911 responder budget increased; they now have PDAs, holoprojectors, an inducer, and... the marshal and SWAT teams no longer go in literally bare-handed (the government finally paid for their gloves). +2025-01-13: + Cephalopod222: + - rscadd: Congratulations Homosexuals, Pride Scarves are now available to all crew! + LT3: + - rscdel: Pun Pun's suit sensors are off by default + - sound: Subtle now has a sound notification alongside subtler + - qol: Subtle/subtler now has a TG chat filter + - qol: Subtle and subtler messages are brighter when using dark mode + MosleyTheMalO: + - bugfix: Makes condoms work + - bugfix: fixes some lewd checks using the sex toy preference instead of the preference + they should + - bugfix: fixes all erp toggles resetting arousal. + - bugfix: makes toggling off sex toys actually remove the sex toys from your inventory. + StrangeWeirdKitten: + - bugfix: Subtler will now filter out clientless mobs diff --git a/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm b/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm index 905e5a4f678..c77508b6594 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/erp_preferences.dm @@ -56,7 +56,7 @@ /datum/preference/toggle/erp/apply_to_client_updated(client/client, value) . = ..() var/mob/living/carbon/human/target = client?.mob - if(!value && istype(target)) + if(!value && istype(target) && (src.type == /datum/preference/toggle/erp)) target.arousal = 0 target.pain = 0 target.pleasure = 0 @@ -74,13 +74,17 @@ if(ishuman(client.mob)) var/mob/living/carbon/human/target = client.mob if(target.vagina != null) - target.dropItemToGround(target.vagina, TRUE, target.loc, TRUE, FALSE, TRUE) + target.dropItemToGround(target.vagina, TRUE, TRUE, FALSE) + target.vagina = null if(target.anus != null) - target.dropItemToGround(target.anus, TRUE, target.loc, TRUE, FALSE, TRUE) + target.dropItemToGround(target.anus, TRUE, TRUE, FALSE) + target.anus = null if(target.nipples != null) - target.dropItemToGround(target.nipples, TRUE, target.loc, TRUE, FALSE, TRUE) + target.dropItemToGround(target.nipples, TRUE, TRUE, FALSE) + target.nipples = null if(target.penis != null) - target.dropItemToGround(target.penis, TRUE, target.loc, TRUE, FALSE, TRUE) + target.dropItemToGround(target.penis, TRUE, TRUE, FALSE) + target.penis = null client.mob.hud_used.hidden_inventory_update(client.mob) diff --git a/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm b/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm index 1806e0cc3a9..5727a6f51e2 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm @@ -239,7 +239,7 @@ savefile_key = "feature_ears" relevant_mutant_bodypart = "ears" type_to_check = /datum/preference/toggle/mutant_toggle/ears - default_accessory_type = /datum/sprite_accessory/ears + default_accessory_type = /datum/sprite_accessory/ears/none /datum/preference/tri_color/ears category = PREFERENCE_CATEGORY_SECONDARY_FEATURES diff --git a/modular_skyrat/master_files/code/modules/client/preferences_savefile.dm b/modular_skyrat/master_files/code/modules/client/preferences_savefile.dm index ebb0a8b370c..4b5402ea9ab 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences_savefile.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences_savefile.dm @@ -288,7 +288,7 @@ save_data["modular_version"] = MODULAR_SAVEFILE_VERSION_MAX -/datum/preferences/proc/update_mutant_bodyparts(datum/preference/preference) +/datum/preferences/proc/update_body_parts(datum/preference/preference) if (!preference.relevant_mutant_bodypart) return var/part = preference.relevant_mutant_bodypart diff --git a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm index 38a107bb2cc..37bbbb0b44e 100644 --- a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm +++ b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm @@ -41,7 +41,7 @@ has_inner = TRUE /datum/sprite_accessory/ears/mutant - icon = 'modular_nova/master_files/icons/mob/sprite_accessory/ears.dmi' + icon = 'modular_skyrat/master_files/icons/mob/sprite_accessory/ears.dmi' organ_type = /obj/item/organ/internal/ears/mutant color_src = USE_MATRIXED_COLORS recommended_species = list(SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_HUMANOID, SPECIES_GHOUL) diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm index fa23e6a40b5..a59bc755648 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm @@ -328,7 +328,7 @@ alter_parts(alterer) alterer.mutant_renderkey = "" //Just in case - alterer.update_mutant_bodyparts() + alterer.update_body_parts() /** * Alter parts lets you adjust mutant bodyparts @@ -401,7 +401,7 @@ alterer.dna.species.mutant_bodyparts[chosen_key] = new_acc_list alterer.dna.mutant_bodyparts[chosen_key] = new_acc_list.Copy() alterer.dna.update_uf_block(SSaccessories.dna_mutant_bodypart_blocks[chosen_key]) - alterer.update_mutant_bodyparts() + alterer.update_body_parts() alterer.update_clothing(ALL) // for any clothing that has alternate versions (e.g. muzzled masks) /** diff --git a/modular_skyrat/modules/customization/modules/surgery/organs/organ.dm b/modular_skyrat/modules/customization/modules/surgery/organs/organ.dm index f15b09e9a77..2f47b2edb7f 100644 --- a/modular_skyrat/modules/customization/modules/surgery/organs/organ.dm +++ b/modular_skyrat/modules/customization/modules/surgery/organs/organ.dm @@ -17,10 +17,10 @@ color = mutantpart_info[MUTANT_INDEX_COLOR_LIST][1] /obj/item/organ/external/Remove(mob/living/carbon/organ_owner, special, movement_flags) - // NOVA EDIT ADDITION START + // SKYRAT EDIT ADDITION START if(mutantpart_key) transfer_mutantpart_info(organ_owner, special) - // NOVA EDIT ADDITION END + // SKYRAT EDIT ADDITION END return ..() /// Copies the organ's mutantpart_info to the owner's mutant_bodyparts diff --git a/modular_skyrat/modules/modular_implants/code/nifsofts/hypnosis.dm b/modular_skyrat/modules/modular_implants/code/nifsofts/hypnosis.dm index be88ad77cd8..13d9c177b27 100644 --- a/modular_skyrat/modules/modular_implants/code/nifsofts/hypnosis.dm +++ b/modular_skyrat/modules/modular_implants/code/nifsofts/hypnosis.dm @@ -30,7 +30,7 @@ to_chat(user, span_warning("You need to aggressively grab someone to hypnotize them.")) return FALSE - if(!target_human.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy)) + if(!target_human.client?.prefs?.read_preference(/datum/preference/toggle/erp/hypnosis)) to_chat(user, span_warning("[target_human] doesn't want to be hypnotized.")) return FALSE diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm index e980f1c9c0f..8b296ff2ebf 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm @@ -18,7 +18,7 @@ if(refractory_period > REALTIMEOFDAY) return refractory_period = REALTIMEOFDAY + 30 SECONDS - if(has_status_effect(/datum/status_effect/climax_cooldown) || !client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy)) + if(has_status_effect(/datum/status_effect/climax_cooldown) || !client?.prefs?.read_preference(/datum/preference/toggle/erp)) return if(HAS_TRAIT(src, TRAIT_NEVERBONER) || has_status_effect(/datum/status_effect/climax_cooldown) || (!has_vagina() && !has_penis())) @@ -60,7 +60,7 @@ span_userlove("You orgasm, it feels great, but nothing comes out of your penis!")) else if(is_wearing_condom()) - var/obj/item/clothing/sextoy/condom/condom = get_item_by_slot(LEWD_SLOT_PENIS) + var/obj/item/clothing/sextoy/condom/condom = src.penis // bruh 💀⚰️💀⚰️💀⚰️💀⚰️💀 condom.condom_use() visible_message(span_userlove("[src] shoots [self_their] load into the [condom], filling it up!"), \ span_userlove("You shoot your thick load into the [condom] and it catches it all!")) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm index 0afaaecb580..c1a5cbd978d 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm @@ -11,7 +11,7 @@ alert_type = null /datum/status_effect/climax/tick(seconds_between_ticks) - if(!owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy)) + if(!owner.client?.prefs?.read_preference(/datum/preference/toggle/erp)) return var/mob/living/carbon/human/affected_mob = owner @@ -30,7 +30,7 @@ // This one should not leave decals on the floor. Used in case if character cumming in beaker. /datum/status_effect/masturbation_climax/tick(seconds_between_ticks) - if(!owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy)) + if(!owner.client?.prefs?.read_preference(/datum/preference/toggle/erp)) return var/mob/living/carbon/human/affected_mob = owner diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm index a75205bb528..c4a5bc5f83c 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm @@ -20,7 +20,7 @@ /datum/status_effect/body_fluid_regen/vagina/tick(seconds_between_ticks) var/mob/living/carbon/human/affected_human = owner - if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human)) + if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp) || !istype(affected_human)) return FALSE var/obj/item/organ/external/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA) @@ -38,7 +38,7 @@ /datum/status_effect/body_fluid_regen/testes/tick(seconds_between_ticks) var/mob/living/carbon/human/affected_human = owner - if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human)) + if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp) || !istype(affected_human)) return FALSE var/obj/item/organ/external/genital/testicles/testes = owner.get_organ_slot(ORGAN_SLOT_TESTICLES) @@ -53,7 +53,7 @@ /datum/status_effect/body_fluid_regen/breasts/tick(seconds_between_ticks) var/mob/living/carbon/human/affected_human = owner - if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human)) + if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp) || !istype(affected_human)) return FALSE var/obj/item/organ/external/genital/breasts/breasts = owner.get_organ_slot(ORGAN_SLOT_BREASTS) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/hypnogoggles.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/hypnogoggles.dm index efeef0229b0..d84dd0c3cb8 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/hypnogoggles.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/hypnogoggles.dm @@ -24,7 +24,7 @@ victim = user if(!(slot & ITEM_SLOT_EYES)) return - if(!(iscarbon(victim) && victim.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy))) + if(!(iscarbon(victim) && victim.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) && victim.client?.prefs?.read_preference(/datum/preference/toggle/erp/hypnosis))) return if(codephrase != "") victim.gain_trauma(new /datum/brain_trauma/very_special/induced_hypnosis(codephrase), TRAUMA_RESILIENCE_MAGIC) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/human.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/human.dm index 2bdeb8b5974..01ef376b03e 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/human.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/human.dm @@ -371,7 +371,7 @@ return FALSE var/obj/item/clothing/sextoy/condom/condom = penis - return condom.condom_state == TRAIT_CONDOM_BROKEN + return condom.condom_state != TRAIT_CONDOM_BROKEN // For handling things that don't already have handcuff handlers. /mob/living/carbon/human/set_handcuffed(new_value) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm index 1730e8f121a..bbc1610e6ef 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm @@ -1,6 +1,6 @@ /obj/item/organ/internal/brain/on_life(seconds_per_tick, times_fired) //All your horny is here *points to the head* . = ..() var/mob/living/carbon/human/brain_owner = owner - if(istype(brain_owner, /mob/living/carbon/human) && brain_owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy)) + if(istype(brain_owner, /mob/living/carbon/human) && brain_owner.client?.prefs?.read_preference(/datum/preference/toggle/erp)) if(!(organ_flags & ORGAN_FAILING)) brain_owner.dna.species.handle_arousal(brain_owner, seconds_per_tick, times_fired) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/species.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/species.dm index 69a63d89d15..a651b421bb2 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/species.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_helpers/species.dm @@ -28,7 +28,7 @@ /// Handles throwing the arousal alerts to screen. /datum/species/proc/handle_arousal(mob/living/carbon/human/target_human, atom/movable/screen/alert/aroused) - if(!target_human.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy)) + if(!target_human.client?.prefs?.read_preference(/datum/preference/toggle/erp)) return var/atom/movable/screen/alert/aroused/arousal_alert = target_human.alerts[AROUSED_ALERT] diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/condom.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/condom.dm index 80499fad288..9186bdf76a4 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/condom.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/condom.dm @@ -89,7 +89,7 @@ //When condom equipped we doing stuff /obj/item/clothing/sextoy/condom/lewd_equipped(mob/user, slot, initial) . = ..() - if((slot == LEWD_SLOT_PENIS) && condom_state == "unused") + if((slot == ORGAN_SLOT_PENIS) && condom_state == "unused") condom_state = "used" update_icon_state() update_icon() diff --git a/modular_skyrat/modules/modular_vending/code/clothesmate.dm b/modular_skyrat/modules/modular_vending/code/clothesmate.dm index 9173369a527..96a3cd4aa92 100644 --- a/modular_skyrat/modules/modular_vending/code/clothesmate.dm +++ b/modular_skyrat/modules/modular_vending/code/clothesmate.dm @@ -45,6 +45,7 @@ /obj/item/clothing/glasses/thin = 5, /obj/item/clothing/glasses/hud/ar/projector = 5, /obj/item/clothing/neck/face_scarf = 5, + /obj/item/clothing/neck/scarf/pride = 5, //BUBBER EDIT: ADDS PRIDE SCARVES /obj/item/clothing/gloves/bracer/wraps, ), ), diff --git a/modular_skyrat/modules/synths/code/species/synthetic.dm b/modular_skyrat/modules/synths/code/species/synthetic.dm index 6d526b07f36..766f14387de 100644 --- a/modular_skyrat/modules/synths/code/species/synthetic.dm +++ b/modular_skyrat/modules/synths/code/species/synthetic.dm @@ -23,7 +23,6 @@ reagent_flags = PROCESS_SYNTHETIC payday_modifier = 1.0 // Matches the rest of the pay penalties the non-human crew have species_language_holder = /datum/language_holder/machine - mutant_organs = list(/obj/item/organ/internal/cyberimp/arm/power_cord/left_arm) mutantbrain = /obj/item/organ/internal/brain/synth mutantstomach = /obj/item/organ/internal/stomach/synth mutantears = /obj/item/organ/internal/ears/synth diff --git a/modular_skyrat/modules/verbs/code/subtle.dm b/modular_skyrat/modules/verbs/code/subtle.dm index d542e279836..211eb005a0d 100644 --- a/modular_skyrat/modules/verbs/code/subtle.dm +++ b/modular_skyrat/modules/verbs/code/subtle.dm @@ -41,7 +41,7 @@ var/space = should_have_space_before_emote(html_decode(subtle_emote)[1]) ? " " : "" - subtle_message = span_emote("[user][space][user.say_emphasis(subtle_message)]") + subtle_message = span_subtle("[user][space][user.say_emphasis(subtle_message)]") var/list/viewers = get_hearers_in_view(SUBTLE_ONE_TILE, user) @@ -55,10 +55,15 @@ for(var/mob/ghost as anything in GLOB.dead_mob_list) if((ghost.client?.prefs.chat_toggles & CHAT_GHOSTSIGHT) && !(ghost in viewers)) - ghost.show_message(subtle_message) + to_chat(ghost, "[FOLLOW_LINK(ghost, user)] [subtle_message]") for(var/mob/receiver in viewers) receiver.show_message(subtle_message, alt_msg = subtle_message) + // Optional sound notification + if(!isobserver(receiver)) + var/datum/preferences/prefs = receiver.client?.prefs + if(prefs && prefs.read_preference(/datum/preference/toggle/subtler_sound)) + receiver.playsound_local(get_turf(receiver), 'sound/effects/achievement/glockenspiel_ping.ogg', 50) return TRUE @@ -132,7 +137,7 @@ var/space = should_have_space_before_emote(html_decode(subtler_emote)[1]) ? " " : "" - subtler_message = span_emote("[user][space][user.say_emphasis(subtler_message)]") + subtler_message = span_subtler("[user][space][user.say_emphasis(subtler_message)]") if(istype(target, /mob)) var/mob/target_mob = target @@ -140,7 +145,7 @@ var/obj/effect/overlay/holo_pad_hologram/hologram = GLOB.hologram_impersonators[user] if((get_dist(user.loc, target_mob.loc) <= subtler_range) || (hologram && get_dist(hologram.loc, target_mob.loc) <= subtler_range)) target_mob.show_message(subtler_message, alt_msg = subtler_message) - // Subtler sounds + // Optional sound notification var/datum/preferences/prefs = target_mob.client?.prefs if(prefs && prefs.read_preference(/datum/preference/toggle/subtler_sound)) target_mob.playsound_local(get_turf(target_mob), 'sound/effects/achievement/glockenspiel_ping.ogg', 50) @@ -150,7 +155,7 @@ var/obj/effect/overlay/holo_pad_hologram/hologram = target if(hologram.Impersonation?.client) hologram.Impersonation.show_message(subtler_message, alt_msg = subtler_message) - // Subtler sounds + // Optional sound notification var/datum/preferences/prefs = hologram.Impersonation.client?.prefs if(prefs && prefs.read_preference(/datum/preference/toggle/subtler_sound)) hologram.Impersonation.playsound_local(get_turf(hologram.Impersonation), 'sound/effects/achievement/glockenspiel_ping.ogg', 50) @@ -167,7 +172,7 @@ for(var/mob/receiver in ghostless) receiver.show_message(subtler_message, alt_msg = subtler_message) - // Subtler sounds + // Optional sound notification var/datum/preferences/prefs = receiver.client?.prefs if(prefs && prefs.read_preference(/datum/preference/toggle/subtler_sound)) receiver.playsound_local(get_turf(receiver), 'sound/effects/achievement/glockenspiel_ping.ogg', 50) diff --git a/modular_zubbers/code/modules/antagonists/bloodsucker/powers/veil.dm b/modular_zubbers/code/modules/antagonists/bloodsucker/powers/veil.dm index 18f064b3f07..4312eb0cc05 100644 --- a/modular_zubbers/code/modules/antagonists/bloodsucker/powers/veil.dm +++ b/modular_zubbers/code/modules/antagonists/bloodsucker/powers/veil.dm @@ -96,7 +96,7 @@ // Apply Appearance user.regenerate_organs() // Actually regenerates the mutant_bodyparts. user.update_body(TRUE) // Outfit and underware, also body. - user.update_mutant_bodyparts(TRUE) // Lizard tails etc + user.update_body_parts(TRUE) // Lizard tails etc RegisterSignal(user, COMSIG_HUMAN_GET_VISIBLE_NAME, PROC_REF(return_disguise_name)) diff --git a/modular_zubbers/code/modules/clothing/neck/neck.dm b/modular_zubbers/code/modules/clothing/neck/neck.dm index 938e05ea7cc..2a8452fac85 100644 --- a/modular_zubbers/code/modules/clothing/neck/neck.dm +++ b/modular_zubbers/code/modules/clothing/neck/neck.dm @@ -559,3 +559,26 @@ greyscale_colors = null is_tied = TRUE clip_on = TRUE + +//PRIDE SCARVES, SPRITES BY Cephalopod222 OF BUBBERSTATION +/obj/item/clothing/neck/scarf/pride + name = "pride scarf" + desc = "A Nanotrasen made nano-weave scarf to show off your favourite flavour of gay and keep you nice and warm! Congratulations!" + icon = 'modular_zubbers/icons/obj/clothing/neck/neck.dmi' + icon_preview = 'modular_zubbers/icons/obj/clothing/neck/neck.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/neck/neck.dmi' + icon_state = "scarf_rainbow" + icon_state_preview = "scarf_rainbow" + greyscale_colors = null + greyscale_config = null + greyscale_config_worn = null + obj_flags = UNIQUE_RENAME | INFINITE_RESKIN + unique_reskin = list( + "Rainbow Scarf" = "scarf_rainbow", + "Bisexual Scarf" = "scarf_bi", + "Pansexual Scarf" = "scarf_pan", + "Asexual Scarf" = "scarf_ace", + "Gay Scarf" = "scarf_gay", + "Transgender Scarf" = "scarf_trans", + "Lesbian Scarf" = "scarf_lesbian", + ) diff --git a/modular_zubbers/code/modules/loadout/categories/neck.dm b/modular_zubbers/code/modules/loadout/categories/neck.dm index b9641c098fc..958e5f4dd74 100644 --- a/modular_zubbers/code/modules/loadout/categories/neck.dm +++ b/modular_zubbers/code/modules/loadout/categories/neck.dm @@ -18,3 +18,8 @@ /datum/loadout_item/neck/bunnypendant name = "Rabbit Pendant" item_path = /obj/item/clothing/neck/bunny_pendant + +/datum/loadout_item/neck/scarf/pride + name = "Pride Scarf" + item_path = /obj/item/clothing/neck/scarf/pride + can_be_reskinned = TRUE diff --git a/modular_zubbers/icons/mob/clothing/neck/neck.dmi b/modular_zubbers/icons/mob/clothing/neck/neck.dmi index d6fa6c5c7e5..88fc9957569 100644 Binary files a/modular_zubbers/icons/mob/clothing/neck/neck.dmi and b/modular_zubbers/icons/mob/clothing/neck/neck.dmi differ diff --git a/modular_zubbers/icons/obj/clothing/neck/neck.dmi b/modular_zubbers/icons/obj/clothing/neck/neck.dmi index 901994807e0..07d78b95af7 100644 Binary files a/modular_zubbers/icons/obj/clothing/neck/neck.dmi and b/modular_zubbers/icons/obj/clothing/neck/neck.dmi differ diff --git a/modular_zubbers/sound/ambiance/bangle-freezer.ogg b/modular_zubbers/sound/ambiance/bangle-freezer.ogg new file mode 100644 index 00000000000..359ab342e9a Binary files /dev/null and b/modular_zubbers/sound/ambiance/bangle-freezer.ogg differ diff --git a/tgui/packages/tgui-panel/chat/constants.ts b/tgui/packages/tgui-panel/chat/constants.ts index 83079a099db..2fda5336d95 100644 --- a/tgui/packages/tgui-panel/chat/constants.ts +++ b/tgui/packages/tgui-panel/chat/constants.ts @@ -42,6 +42,7 @@ export const MESSAGE_TYPE_DEBUG = 'debug'; export const MESSAGE_TYPE_MENTOR = 'mentor'; export const MESSAGE_TYPE_LOOC = 'looc'; export const MESSAGE_TYPE_REMOTE_LOOC = 'rlooc'; +export const MESSAGE_TYPE_SUBTLE = 'subtle'; // BUBBER EDIT ADDITION END // Metadata for each message type @@ -107,6 +108,12 @@ export const MESSAGE_TYPES = [ description: 'Local OOC messages.', selector: '.looc', }, + { + type: MESSAGE_TYPE_SUBTLE, + name: 'Subtle', + description: 'Subtle and Subtler actions.', + selector: '.subtle, .subtler', + }, { type: MESSAGE_TYPE_MENTOR, name: 'Mentor Log', diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss index a24017df7a2..d341542a456 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss @@ -1315,7 +1315,7 @@ $border-width-px: $border-width * 1px; background-color: darken(map.get($alert-stripe-colors, $color-name), 5); } } -/* SKYRAT EDIT ADDITION START - DARK MODE CLASSES */ +/* BUBBER EDIT ADDITION START - DARK MODE CLASSES */ .mentor { color: #8a2be2; @@ -1413,9 +1413,13 @@ $border-width-px: $border-width * 1px; font-style: italic; } -// SKYRAT EDIT ADDITION END +.subtle { + color: #abc6ec; +} -/* BUBBER EDIT ADDITION BEGIN - DARK MODE CLASSES */ +.subtler { + color: #e2c1ff; +} .subtlepda { color: #eb6bff; diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss index e84e7c33fc5..a67f1aed670 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss @@ -1332,6 +1332,14 @@ $border-width-px: $border-width * 1px; } } +.subtle { + color: #000099; +} + +.subtler { + color: #4a00b3; +} + .subtlepda { color: #9e008c; } diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/bubber/subtle_sound.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/bubber/subtle_sound.tsx index 0c90c6c688d..8b678aca860 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/bubber/subtle_sound.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/bubber/subtle_sound.tsx @@ -1,8 +1,8 @@ import { CheckboxInput, FeatureToggle } from '../../base'; export const subtler_sound: FeatureToggle = { - name: 'Toggle Subtler Sound', + name: 'Toggle Subtle/r Sound', category: 'SOUND', - description: 'Toggles whether you hear subtler emote sound effects', + description: 'Toggles whether you hear subtle/r emote sound effects', component: CheckboxInput, };