diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index d41fdf4bb53..eec0c80aed4 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -62983,6 +62983,7 @@ }) "ceA" = ( /obj/machinery/light/small, +/obj/item/toy/dummy, /obj/item/toy/prize/honk{ pixel_y = 12 }, diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 37f472f9cec..ff6327d9b44 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -12944,6 +12944,7 @@ pixel_y = 0 }, /obj/item/weapon/reagent_containers/food/snacks/baguette, +/obj/item/toy/dummy, /turf/open/floor/plasteel/white/side{ dir = 4 }, diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index a6558e42a41..9f873be684d 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -344,7 +344,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s return 0 /obj/item/proc/talk_into(mob/M, input, channel, spans) - return + return ITALICS | REDUCE_RANGE /obj/item/proc/dropped(mob/user) for(var/X in actions) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index a8aeb875891..1c04dfd5a6f 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -24,8 +24,8 @@ /obj/item/device/radio/headset/talk_into(mob/living/M, message, channel, list/spans) if (!listening) - return - ..() + return ITALICS | REDUCE_RANGE + return ..() /obj/item/device/radio/headset/receive_range(freq, level, AIuser) if(ishuman(src.loc)) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 6287e380071..888de4b2136 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -198,6 +198,7 @@ /obj/item/device/radio/talk_into(atom/movable/M, message, channel, list/spans) addtimer(src,"talk_into_impl",0,FALSE,M,message,channel,spans) + return ITALICS | REDUCE_RANGE /obj/item/device/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans) if(!on) return // the device has to be on diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 00b71421eb6..940c8fc5bdf 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1371,3 +1371,29 @@ name = "Warden action figure" icon_state = "warden" toysay = "Seventeen minutes for coughing at an officer!" + + +/obj/item/toy/dummy + name = "ventriloquist dummy" + desc = "It's a dummy, dummy." + icon = 'icons/obj/toy.dmi' + icon_state = "assistant" + item_state = "doll" + var/doll_name = "Dummy" + +//Add changing looks when i feel suicidal about making 20 inhands for these. +/obj/item/toy/dummy/attack_self(mob/user) + var/new_name = stripped_input(usr,"What would you like to name the dummy?","Input a name",doll_name,MAX_NAME_LEN) + if(!new_name) + return + doll_name = new_name + user << "You name the dummy as \"[doll_name]\"" + name = "[initial(name)] - [doll_name]" + +/obj/item/toy/dummy/talk_into(atom/movable/M, message, channel, list/spans) + log_say("[key_name(M)] : through dummy : [message]") + say(message) + return NOPASS + +/obj/item/toy/dummy/GetVoice() + return doll_name \ No newline at end of file diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a9ada9e2f5f..766f052ccbf 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -269,12 +269,12 @@ var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN) if(MODE_R_HAND) for(var/obj/item/r_hand in get_held_items_for_side("r", all = TRUE)) if (r_hand) - r_hand.talk_into(src, message, , spans) + return r_hand.talk_into(src, message, , spans) return ITALICS | REDUCE_RANGE if(MODE_L_HAND) for(var/obj/item/l_hand in get_held_items_for_side("l", all = TRUE)) if (l_hand) - l_hand.talk_into(src, message, , spans) + return l_hand.talk_into(src, message, , spans) return ITALICS | REDUCE_RANGE if(MODE_INTERCOM) diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index fa62faffdfb..0ddbc90ae82 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index de31868d363..b02f668d3f8 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ