diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index 1b2508e7b26..48baf7186d9 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -10,6 +10,8 @@
var/emagged = 0
var/insults = 0
var/list/insultmsg = list("FUCK EVERYONE!", "I'M A TATER!", "ALL SECURITY TO SHOOT ME ON SIGHT!", "I HAVE A BOMB!", "CAPTAIN IS A COMDOM!", "FOR THE SYNDICATE!")
+ var/activation_sound = 'sound/items/megaphone.ogg'
+ var/needs_user_location = TRUE
/obj/item/device/megaphone/attack_self(mob/living/user as mob)
if (user.client)
@@ -29,19 +31,20 @@
if(!message)
return
message = capitalize(message)
- if ((src.loc == user && usr.stat == 0))
+ if ((user.stat == CONSCIOUS))
+ if(needs_user_location)
+ if(!src.loc == user)
+ return
if(emagged)
if(insults)
- for(var/mob/O in (viewers(user)))
- O.show_message("[user] broadcasts, \"[pick(insultmsg)]\"",2) // 2 stands for hearable message
+ user.visible_message("[user] broadcasts, \"[pick(insultmsg)]\"")
insults--
else
to_chat(user, "*BZZZZzzzzzt*")
else
- for(var/mob/O in (viewers(user)))
- O.show_message("[user] broadcasts, \"[message]\"",2) // 2 stands for hearable message
-
- playsound(loc, 'sound/items/megaphone.ogg', 100, 0, 1)
+ user.visible_message("[user] broadcasts, \"[message]\"")
+ if(activation_sound)
+ playsound(loc, activation_sound, 100, 0, 1)
spamcheck = 1
spawn(20)
spamcheck = 0
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index 51390016532..6fbdb43400f 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -3350,3 +3350,180 @@ All custom items with worn sprites must follow the contained sprite system: http
icon_state = "ulmari_coat"
item_state = "ulmari_coat"
contained_sprite = TRUE
+
+
+/obj/item/clothing/suit/storage/toggle/labcoat/fluff/mekesatis_labcoat //Biochemist Holocoat - Neith Mekesatis - vrow
+ name = "biochemist holocoat"
+ desc = "An Eridani Corporate Federation holocoat modelled after a standard biochemist labcoat. It is extremely well cared for."
+ icon = 'icons/obj/custom_items/mekesatis_holocoat.dmi'
+ icon_state = "mekesatis_labcoat"
+ item_state = "mekesatis_labcoat"
+ icon_open = "mekesatis_labcoat_open"
+ icon_closed = "mekesatis_labcoat"
+ contained_sprite = TRUE
+ var/changed = FALSE
+ var/changing = FALSE
+
+/obj/item/clothing/suit/storage/toggle/labcoat/fluff/mekesatis_labcoat/examine(mob/user)
+ ..()
+ if(!in_range(user, src))
+ to_chat(user, SPAN_NOTICE("There might be something written on the inside of the coat. You have to get closer if you want to read it."))
+ return
+
+ if(!(all_languages[LANGUAGE_TRADEBAND] in user.languages))
+ to_chat(user, SPAN_NOTICE("On the inside of the coat there are various sentences in Tradeband printed in an elegant blue font."))
+ return
+
+ else
+ to_chat(user, SPAN_NOTICE("On the inside of the coat, the following words are printed in an elegant blue font:
Exclusive Time Limited Holocoat Deal from July 30, 2459. \
+ Now with graced with an animated Eridani Corporate Federation logo. For the Prosperity of all Eridanians - Delta HoloTextiles. Sector Alpha's best \
+ wears.
Every cloud has a silver lining, and you should be happy for yours. Congratulations on your \
+ graduation. - Teremun A. M."))
+ return
+
+/obj/item/clothing/suit/storage/toggle/labcoat/fluff/mekesatis_labcoat/verb/activate_holocoat()
+ set name = "Toggle Holocoat"
+ set category = "Object"
+ set src in usr
+
+ if (use_check_and_message(usr))
+ return
+
+ if(changing)
+ return
+
+ if(!changed)
+ usr.visible_message("With a subtle gesture, the labcoat flickers activate!")
+ icon_state = "mekesatis_holocoat_t"
+ item_state = "mekesatis_holocoat_t"
+ icon_open = "mekesatis_holocoat_t_open"
+ icon_closed = "mekesatis_holocoat_t"
+ flick("mekesatis_holocoat_t", src)
+
+ else
+ usr.visible_message("With a subtle gesture, the holocoat fades to a normal labcoat.")
+ icon_state = "mekesatis_labcoat_r"
+ item_state = "mekesatis_labcoat_r"
+ icon_open = "mekesatis_labcoat_r_open"
+ icon_closed = "mekesatis_labcoat_r"
+
+ update_icon()
+ usr.update_inv_wear_suit()
+ changing = TRUE
+ addtimer(CALLBACK(src, .proc/finish_toggle, usr), 10 SECONDS)
+
+/obj/item/clothing/suit/storage/toggle/labcoat/fluff/mekesatis_labcoat/proc/finish_toggle(mob/user)
+ if(!changed)
+ icon_state = "mekesatis_holocoat"
+ item_state = "mekesatis_holocoat"
+ icon_open = "mekesatis_holocoat_open"
+ icon_closed = "mekesatis_holocoat"
+
+ else
+ icon_state = "mekesatis_labcoat"
+ item_state = "mekesatis_labcoat"
+ icon_open = "mekesatis_labcoat_open"
+ icon_closed = "mekesatis_labcoat"
+
+ update_icon()
+ user.update_inv_wear_suit()
+ changed = !changed
+ changing = FALSE
+
+
+/obj/item/device/megaphone/fluff/akinyi_mic //Resonance Microphone - Akinyi Idowu - kyres1
+ name = "resonance microphone"
+ desc = "A rather costly voice amplifier disguised as a microphone. A button on the side permits the user to dial their vocal volume with ease."
+ icon = 'icons/obj/custom_items/akinyi_symphette.dmi'
+ icon_state = "akinyi_mic"
+ item_state = "akinyi_mic"
+ w_class = ITEMSIZE_SMALL
+ contained_sprite = TRUE
+ activation_sound = null
+ needs_user_location = FALSE
+
+/obj/item/fluff/akinyi_stand //Telescopic Mic Stand - Akinyi Idowu - kyres1
+ name = "telescopic mic stand"
+ desc = "A fold-able telescopic microphone with a built in battery to keep your fancy science fiction microphone charged on the go."
+ icon = 'icons/obj/custom_items/akinyi_symphette.dmi'
+ icon_state = "akinyi_stand-collapsed"
+ item_state = "akinyi_stand-collapsed"
+ w_class = ITEMSIZE_SMALL
+ contained_sprite = TRUE
+ var/obj/item/device/megaphone/fluff/akinyi_mic/mic
+ var/collapsed = TRUE
+
+/obj/item/fluff/akinyi_stand/attackby(obj/item/O, mob/user)
+ if(istype(O, /obj/item/device/megaphone/fluff/akinyi_mic))
+ if(!mic && !collapsed)
+ user.unEquip(O)
+ O.forceMove(src)
+ mic = O
+ to_chat(user, SPAN_NOTICE("You place \the [O] on \the [src]."))
+ update_icon()
+
+/obj/item/fluff/akinyi_stand/MouseDrop(mob/user as mob)
+ if((user == usr && (!use_check(user))) && (user.contents.Find(src) || in_range(src, user)))
+ if(ishuman(user))
+ forceMove(get_turf(user))
+ user.put_in_hands(src)
+ update_icon()
+
+/obj/item/fluff/akinyi_stand/attack_hand(mob/user)
+ if(!isturf(loc)) //so if you want to play the use the board, you need to put it down somewhere
+ ..()
+ else
+ if(mic && !collapsed)
+ mic.attack_self(user)
+
+/obj/item/fluff/akinyi_stand/attack_self(mob/user as mob)
+ if(mic)
+ mic.forceMove(get_turf(src))
+ user.put_in_hands(mic)
+ mic = null
+ update_icon()
+ return
+
+ if(collapsed)
+ w_class = ITEMSIZE_LARGE
+ collapsed = FALSE
+ else
+ w_class = ITEMSIZE_SMALL
+ collapsed = TRUE
+
+ update_icon()
+ user.update_inv_l_hand()
+ user.update_inv_r_hand()
+
+/obj/item/fluff/akinyi_stand/update_icon()
+ if(collapsed)
+ icon_state = "akinyi_stand-collapsed"
+ item_state = "akinyi_stand-collapsed"
+ else
+ if(mic)
+ icon_state = "akinyi_stand-1"
+ item_state = "akinyi_stand-1"
+ else
+ icon_state = "akinyi_stand-0"
+ item_state = "akinyi_stand-0"
+
+/obj/item/storage/fluff/akinyi_case //Instrument Case - Akinyi Idowu - kyres1
+ name = "instrument case"
+ desc = "A chunky white leather case, with lots of space inside for holding your delicate musical instruments."
+ icon = 'icons/obj/custom_items/akinyi_symphette.dmi'
+ icon_state = "akinyi_case"
+ item_state = "akinyi_case"
+ w_class = ITEMSIZE_LARGE
+ contained_sprite = TRUE
+ storage_slots = 3
+ max_w_class = 3
+ can_hold = list(
+ /obj/item/device/megaphone/fluff/akinyi_mic,
+ /obj/item/fluff/akinyi_stand,
+ /obj/item/fluff/akinyi_symphette
+ )
+ starts_with = list(
+ /obj/item/device/megaphone/fluff/akinyi_mic = 1,
+ /obj/item/fluff/akinyi_stand = 1,
+ /obj/item/fluff/akinyi_symphette = 1
+ )
diff --git a/icons/obj/custom_items/akinyi_symphette.dmi b/icons/obj/custom_items/akinyi_symphette.dmi
index ae46c189a08..481aaca7009 100644
Binary files a/icons/obj/custom_items/akinyi_symphette.dmi and b/icons/obj/custom_items/akinyi_symphette.dmi differ
diff --git a/icons/obj/custom_items/mekesatis_holocoat.dmi b/icons/obj/custom_items/mekesatis_holocoat.dmi
new file mode 100644
index 00000000000..8a58041563e
Binary files /dev/null and b/icons/obj/custom_items/mekesatis_holocoat.dmi differ