diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 7fedd55aa21..0627a51dce3 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -91,19 +91,24 @@
if(!user.transferItemToLoc(I,src))
return
mytape = I
- to_chat(user, span_notice("You insert [I] into [src]."))
+ balloon_alert(user, "inserted [mytape]")
playsound(src, 'sound/items/taperecorder/taperecorder_close.ogg', 50, FALSE)
update_appearance()
/obj/item/taperecorder/proc/eject(mob/user)
- if(mytape)
- playsound(src, 'sound/items/taperecorder/taperecorder_open.ogg', 50, FALSE)
- to_chat(user, span_notice("You remove [mytape] from [src]."))
- stop()
- user.put_in_hands(mytape)
- mytape = null
- update_appearance()
+ if(!mytape)
+ balloon_alert(user, "no tape!")
+ return
+ if(playing)
+ balloon_alert(user, "stop the tape first!")
+ return
+ playsound(src, 'sound/items/taperecorder/taperecorder_open.ogg', 50, FALSE)
+ balloon_alert(user, "ejected [mytape]")
+ stop()
+ user.put_in_hands(mytape)
+ mytape = null
+ update_appearance()
/obj/item/taperecorder/fire_act(exposed_temperature, exposed_volume)
mytape.unspool() //Fires unspool the tape, which makes sense if you don't think about it
@@ -127,8 +132,10 @@
set category = "Object"
if(!can_use(usr))
+ balloon_alert(usr, "can't use!")
return
if(!mytape)
+ balloon_alert(usr, "no tape!")
return
eject(usr)
@@ -160,19 +167,23 @@
set category = "Object"
if(!can_use(usr))
+ balloon_alert(usr, "can't use!")
return
if(!mytape || mytape.unspooled)
+ balloon_alert(usr, "no spooled tape!")
return
if(recording)
+ balloon_alert(usr, "stop recording first!")
return
if(playing)
+ balloon_alert(usr, "already playing!")
return
playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE)
if(mytape.used_capacity < mytape.max_capacity)
recording = TRUE
- say("Recording started.")
+ balloon_alert(usr, "started recording")
update_sound()
update_appearance()
var/used = mytape.used_capacity //to stop runtimes when you eject the tape
@@ -182,13 +193,14 @@
used += 1 SECONDS
if(max - used < time_left_warning && !time_warned)
time_warned = TRUE
- say("[(max - used) / 10] seconds left!") //deciseconds / 10 = seconds
+ balloon_alert(usr, "[(max - used) / 10] second\s left")
sleep(1 SECONDS)
if(used >= max)
- say("Tape full.")
+ balloon_alert(usr, "tape full!")
+ sleep(1 SECONDS) //prevent balloon alerts layering over the top of each other
stop()
else
- say("The tape is full!")
+ balloon_alert(usr, "tape full!")
playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE)
@@ -197,15 +209,16 @@
set category = "Object"
if(!can_use(usr))
+ balloon_alert(usr, "can't use!")
return
if(recording)
playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE)
- say("Recording stopped.")
+ balloon_alert(usr, "stopped recording")
recording = FALSE
else if(playing)
playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE)
- say("Playback stopped.")
+ balloon_alert(usr, "stopped playing")
playing = FALSE
time_warned = FALSE
update_appearance()
@@ -216,18 +229,25 @@
set category = "Object"
if(!can_use(usr))
+ balloon_alert(usr, "can't use!")
return
if(!mytape || mytape.unspooled)
+ balloon_alert(usr, "no spooled tape!")
return
if(recording)
+ balloon_alert(usr, "stop recording first!")
return
if(playing)
+ balloon_alert(usr, "already playing!")
+ return
+ if(mytape.storedinfo?.len <= 0)
+ balloon_alert(usr, "[mytape] is empty!")
return
playing = TRUE
update_appearance()
update_sound()
- say("Playback started.")
+ balloon_alert(usr, "started playing")
playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE)
var/used = mytape.used_capacity //to stop runtimes when you eject the tape
var/max = mytape.max_capacity
@@ -237,7 +257,8 @@
if(playing == FALSE)
break
if(mytape.storedinfo.len < i)
- say("End of recording.")
+ balloon_alert(usr, "recording ended")
+ stoplag(1 SECONDS) //prevents multiple balloon alerts covering each other
break
say("[mytape.storedinfo[i]]", sanitize=FALSE)//We want to display this properly, don't double encode
if(mytape.storedinfo.len < i + 1)
@@ -256,10 +277,7 @@
/obj/item/taperecorder/attack_self(mob/user)
if(!mytape)
- to_chat(user, span_notice("\The [src] is empty."))
- return
- if(mytape.unspooled)
- to_chat(user, span_warning("\The tape inside \the [src] is broken!"))
+ balloon_alert(user, "it's empty!")
return
update_available_icons()
@@ -285,15 +303,22 @@
var/list/transcribed_info = mytape.storedinfo
if(!length(transcribed_info))
- return
- if(!mytape)
+ balloon_alert(usr, "tape is empty!")
return
if(!canprint)
- to_chat(usr, span_warning("The recorder can't print that fast!"))
- return
- if(recording || playing)
+ balloon_alert(usr, "can't print that fast!")
return
if(!can_use(usr))
+ balloon_alert(usr, "can't use!")
+ return
+ if(!mytape || mytape.unspooled)
+ balloon_alert(usr, "no spooled tape!")
+ return
+ if(recording)
+ balloon_alert(usr, "stop recording first!")
+ return
+ if(playing)
+ balloon_alert(usr, "already playing!")
return
var/transcribed_text = "Transcript:
"
@@ -308,7 +333,7 @@
// Very unexpected. Better abort non-gracefully.
if(excerpt_length > MAX_PAPER_LENGTH)
- say("Error: Data corruption detected. Cannot print.")
+ balloon_alert(usr, "data corrupted, can't print!")
CRASH("Transcript entry has more than [MAX_PAPER_LENGTH] chars: [excerpt_length] chars")
// If we're going to overflow the paper's length, print the current transcribed text out first and reset to prevent us
@@ -328,7 +353,7 @@
transcript_paper.name = "[paper_name] page [page_count]"
transcript_paper.update_appearance()
- say("Transcript printed, [page_count] pages.")
+ balloon_alert(usr, "transcript printed\n[page_count] page\s")
playsound(src, 'sound/items/taperecorder/taperecorder_print.ogg', 50, FALSE)
// Can't put the entire stack into their hands if there's multple pages, but hey we can at least put one page in.
@@ -409,13 +434,13 @@
if(loc != user)
return
tapeflip()
- to_chat(user, span_notice("You turn \the [src] over."))
+ balloon_alert(user, "flipped tape")
playsound(src, 'sound/items/taperecorder/tape_flip.ogg', 70, FALSE)
if("Unwind tape")
if(loc != user)
return
unspool()
- to_chat(user, span_warning("You pull out all the tape!"))
+ balloon_alert(user, "unspooled tape")
/obj/item/tape/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
if(prob(50))
@@ -454,10 +479,12 @@
/obj/item/tape/screwdriver_act(mob/living/user, obj/item/tool)
if(!unspooled)
return FALSE
- to_chat(user, span_notice("You start winding the tape back in..."))
- if(tool.use_tool(src, user, 120))
- to_chat(user, span_notice("You wind the tape back in."))
- respool()
+ balloon_alert(user, "respooling tape...")
+ if(!tool.use_tool(src, user, 12 SECONDS))
+ balloon_alert(user, "respooling failed!")
+ return FALSE
+ balloon_alert(user, "tape respooled")
+ respool()
//Random colour tapes
/obj/item/tape/random