diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index acd2be67ea..02c6b5f495 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -946,6 +946,26 @@ var/global/list/event_wildlife_roaming = list( ) +var/global/list/selectable_speech_bubbles = list( + "default", + "normal", + "slime", + "comm", + "machine", + "synthetic", + "synthetic_evil", + "cyber", + "ghost", + "slime_green", + "dark", + "plant", + "clown", + "fox", + "maus", + "heart", + "textbox", + "posessed") + // AREA GENERATION AND BLUEPRINT STUFF BELOW HERE diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index cfa6421c6f..d4c40c6179 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -48,7 +48,7 @@ /mob/living/carbon/brain/runechat_holder(datum/chatmessage/CM) if(isturf(loc)) return ..() - + return loc /mob/living/carbon/brain/set_typing_indicator(var/state) @@ -59,8 +59,11 @@ loc.cut_overlay(typing_indicator, TRUE) return - if(!typing_indicator) - init_typing_indicator("[speech_bubble_appearance()]_typing") + var/cur_bubble_appearance = custom_speech_bubble + if(!cur_bubble_appearance || cur_bubble_appearance == "default") + cur_bubble_appearance = speech_bubble_appearance() + if(!typing_indicator || cur_typing_indicator != cur_bubble_appearance) + init_typing_indicator("[cur_bubble_appearance]_typing") if(state && !typing) loc.add_overlay(typing_indicator, TRUE) @@ -80,7 +83,7 @@ var/datum/transcore_db/db = SStranscore.db_by_mind_name(mind.name) if(db) var/datum/transhuman/mind_record/record = db.backed_up[src.mind.name] - if(!(record.dead_state == MR_DEAD)) + if(!(record.dead_state == MR_DEAD)) if((world.time - timeofhostdeath ) > 5 MINUTES) //Allows notify transcore to be used if you have an entry but for some reason weren't marked as dead record.dead_state = MR_DEAD //Such as if you got scanned but didn't take an implant. It's a little funky, but I mean, you got scanned db.notify(record) //So you probably will want to let someone know if you die. diff --git a/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm b/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm index c8e67a39cd..1c2d5dff7d 100644 --- a/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm @@ -191,3 +191,12 @@ if (visible) visible_message("\The [src] shifts and contorts, taking the form of \a [new_species]!") regenerate_icons() + +/mob/verb/select_speech_bubble() + set name = "Select Speech Bubble" + set category = "OOC" + + var/new_speech_bubble = tgui_input_list(src, "Pick new voice!", "Character Preference", selectable_speech_bubbles) + if(new_speech_bubble) + to_chat(src, "Your voice changes.") + custom_speech_bubble = new_speech_bubble \ No newline at end of file diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 4e34ec87a3..fb78f1b550 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -341,7 +341,9 @@ var/list/channel_to_radio_key = new //The 'post-say' static speech bubble var/speech_bubble_test = say_test(message) //var/image/speech_bubble = image('icons/mob/talk_vr.dmi',src,"h[speech_bubble_test]") //VOREStation Edit. Commented this out in case we need to reenable. - var/speech_type = speech_bubble_appearance() + var/speech_type = custom_speech_bubble + if(!speech_type || speech_type == "default") + speech_type = speech_bubble_appearance() var/image/speech_bubble = generate_speech_bubble(src, "[speech_type][speech_bubble_test]") var/sb_alpha = 255 var/atom/loc_before_turf = src diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm index 2752292ee2..901807583a 100644 --- a/code/modules/mob/living/voice/voice.dm +++ b/code/modules/mob/living/voice/voice.dm @@ -109,7 +109,9 @@ if(comm) var/speech_bubble_test = say_test(message) //var/image/speech_bubble = image('icons/mob/talk_vr.dmi',comm,"h[speech_bubble_test]") //VOREStation Edit - Commented out in case of needed reenable. - var/speech_type = speech_bubble_appearance() + var/speech_type = custom_speech_bubble + if(!speech_type || speech_type == "default") + speech_type = speech_bubble_appearance() var/image/speech_bubble = generate_speech_bubble(comm, "[speech_type][speech_bubble_test]") spawn(30) qdel(speech_bubble) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index ceb49fa47a..2529936a7a 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -218,6 +218,8 @@ var/typing var/obj/effect/decal/typing_indicator + var/cur_typing_indicator + var/custom_speech_bubble = "default" var/low_priority = FALSE //Skip processing life() if there's just no players on this Z-level diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm index bdd5865a9b..5bbce21356 100644 --- a/code/modules/mob/typing_indicator.dm +++ b/code/modules/mob/typing_indicator.dm @@ -12,6 +12,9 @@ return I /mob/proc/init_typing_indicator(var/set_state = "typing") + if(typing_indicator) + qdel(typing_indicator) + typing_indicator = null typing_indicator = new typing_indicator.appearance = generate_speech_bubble(null, set_state) typing_indicator.appearance_flags |= (RESET_COLOR|PIXEL_SCALE) //VOREStation Edit @@ -23,8 +26,11 @@ cut_overlay(typing_indicator, TRUE) return - if(!typing_indicator) - init_typing_indicator("[speech_bubble_appearance()]_typing") + var/cur_bubble_appearance = custom_speech_bubble + if(!cur_bubble_appearance || cur_bubble_appearance == "default") + cur_bubble_appearance = speech_bubble_appearance() + if(!typing_indicator || cur_typing_indicator != cur_bubble_appearance) + init_typing_indicator("[cur_bubble_appearance]_typing") if(state && !typing) add_overlay(typing_indicator, TRUE) diff --git a/icons/mob/talk_vr.dmi b/icons/mob/talk_vr.dmi index 0f192acf2d..a6f366aaad 100644 Binary files a/icons/mob/talk_vr.dmi and b/icons/mob/talk_vr.dmi differ