/obj/item/device/taperecorder
desc = "A device that can record up to a minute of dialogue and play it back. It automatically translates the content in playback."
name = "universal recorder"
icon_state = "taperecorderidle"
item_state = "analyzer"
w_class = 1.0
m_amt = 60
g_amt = 30
var/emagged = 0.0
var/recording = 0.0
var/playing = 0.0
var/timerecorded = 0.0
var/list/storedinfo = new/list()
flags = FPRINT | TABLEPASS| CONDUCT
throwforce = 2
throw_speed = 4
throw_range = 20
/obj/item/device/taperecorder/hear_talk(mob/M as mob, msg)
if (recording)
var/ending = copytext(msg, length(msg))
if (M.stuttering)
src.storedinfo += "[M.name] stammers, \"[msg]\""
return
if (M.brainloss >= 60)
src.storedinfo += "[M.name] gibbers, \"[msg]\""
return
if (ending == "?")
src.storedinfo += "[M.name] asks, \"[msg]\""
return
else if (ending == "!")
src.storedinfo += "[M.name] exclaims, \"[msg]\""
return
src.storedinfo += "[M.name] says, \"[msg]\""
return
/obj/item/device/taperecorder/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/card/emag))
if (src.emagged == 0)
src.emagged = 1
src.recording = 0
user << "\red PZZTTPFFFT"
src.icon_state = "taperecorderidle"
else
user << "\red That is already emagged!"
/obj/item/device/taperecorder/proc/explode()
var/turf/T = get_turf(src.loc)
if (ismob(src.loc))
var/mob/M = src.loc
M.show_message("\red The [src] explodes!", 1)
if(T)
T.hotspot_expose(700,125)
explosion(T, -1, -1, 0, 4)
del(src)
return
/obj/item/device/taperecorder/verb/record()
set name = "Start Recording"
set category = "Object"
if(usr.stat)
usr << "Not when you're incapicated."
return
if(src.emagged == 1)
usr << "\red The tape recorder makes a scratchy noise."
return
src.icon_state = "taperecorderrecording"
if(src.timerecorded < 60 && src.playing == 0)
src.recording = 1
for(src.timerecorded, src.timerecorded<60)
if(src.recording == 0)
break
src.timerecorded++
sleep(10)
src.recording = 0
src.icon_state = "taperecorderidle"
return
else
usr << "\red Either your tape recorder's memory is full, or it is currently playing back its memory."
/obj/item/device/taperecorder/verb/stop_recording()
set name = "Stop Recording"
set category = "Object"
if(usr.stat)
usr << "Not when you're incapicated."
return
if (src.recording == 1 || src.playing == 1)
src.recording = 0
src.playing = 0
usr << "\blue Stopped."
src.icon_state = "taperecorderidle"
return
else
usr << "\red Stop what?"
return
/obj/item/device/taperecorder/verb/clear_memory()
set name = "Clear Memory"
set category = "Object"
if(usr.stat)
usr << "Not when you're incapicated."
return
if(src.emagged == 1)
usr << "\red The tape recorder makes a scratchy noise."
return
if (src.recording == 1 || src.playing == 1)
usr << "\red You can't clear the memory while playing or recording!"
return
else
src.storedinfo -= src.storedinfo
src.timerecorded = 0
usr << "\blue Memory cleared."
return
/obj/item/device/taperecorder/verb/playback_memory()
set name = "Playback Memory"
set category = "Object"
if(usr.stat)
usr << "Not when you're incapicated."
return
if (src.recording == 1)
usr << "\red You can't playback when recording!"
return
if (src.playing == 1)
usr << "\red You're already playing!"
return
src.playing = 1
src.icon_state = "taperecorderplaying"
for(var/i=1,src.timerecorded<60,sleep(10 * (src.timerecorded/src.storedinfo.len)))
if (src.playing == 0)
break
if (src.storedinfo.len < i)
break
var/turf/T = get_turf(src)
for(var/mob/O in hearers(world.view-1, T))
O.show_message("\green Tape Recorder: \"[src.storedinfo[i]]\"",2)
i++
src.icon_state = "taperecorderidle"
src.playing = 0
var/turf/T = get_turf(src)
for(var/mob/O in hearers(world.view-1, T))
O.show_message("Tape Recorder: End playback.",2)
if (src.emagged == 1.0)
for(var/mob/O in hearers(world.view-1, get_turf(src)))
O.show_message("Tape Recorder: This tape recorder will self destruct in 5",2)
sleep(10)
for(var/mob/O in hearers(world.view-1, get_turf(src)))
O.show_message("4",2)
sleep(10)
for(var/mob/O in hearers(world.view-1, get_turf(src)))
O.show_message("3",2)
sleep(10)
for(var/mob/O in hearers(world.view-1, get_turf(src)))
O.show_message("2",2)
sleep(10)
for(var/mob/O in hearers(world.view-1, get_turf(src)))
O.show_message("1",2)
sleep(10)
src.explode()