diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 888524853d6..200c0a0a855 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -1,62 +1,112 @@
/obj/item/device/taperecorder
- desc = "A device that can record up to an hour of dialogue and play it back. It automatically translates the content in playback."
name = "universal recorder"
- icon_state = "taperecorderidle"
+ desc = "A device that can record to cassette tapes, and play them. It automatically translates the content in playback."
+ icon_state = "taperecorder_empty"
item_state = "analyzer"
- w_class = 1.0
+ w_class = 2
+ slot_flags = SLOT_BELT
m_amt = 60
g_amt = 30
- var/emagged = 0.0
- var/recording = 0.0
- var/playing = 0.0
- var/timerecorded = 0.0
- var/playsleepseconds = 0.0
- var/list/storedinfo = new/list()
- var/list/timestamp = new/list()
+ force = 2
+ throwforce = 0
+ var/recording = 0
+ var/playing = 0
+ var/playsleepseconds = 0
+ var/obj/item/device/tape/mytape
+ var/open_panel = 0
+ var/datum/wires/taperecorder/wires = null
var/canprint = 1
- flags = CONDUCT
- throwforce = 2
- throw_speed = 4
- throw_range = 20
-/obj/item/device/taperecorder/hear_talk(mob/living/M as mob, msg)
- if(recording)
- var/ending = copytext(msg, length(msg))
- timestamp+= timerecorded
- if(M.stuttering)
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] stammers, \"[msg]\""
+
+/obj/item/device/taperecorder/New()
+ wires = new(src)
+ mytape = new /obj/item/device/tape/random(src)
+ update_icon()
+
+
+/obj/item/device/taperecorder/examine()
+ set src in view(1)
+ ..()
+ usr << "The wire panel is [open_panel ? "opened" : "closed"]."
+
+
+/obj/item/device/taperecorder/attackby(obj/item/I, mob/user)
+ if(!mytape && istype(I, /obj/item/device/tape))
+ user.drop_item()
+ I.loc = src
+ mytape = I
+ user << "You insert [I] into [src]."
+ update_icon()
+ else if(istype(I, /obj/item/weapon/screwdriver))
+ open_panel = !open_panel
+ user << "You [open_panel ? "open" : "close"] the wire panel."
+ if(open_panel)
+ wires.Interact(user)
+ else if(istype(I, /obj/item/weapon/wirecutters) || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler))
+ wires.Interact(user)
+
+
+/obj/item/device/taperecorder/proc/eject(mob/user)
+ if(mytape)
+ user << "You remove [mytape] from [src]."
+ stop()
+ user.put_in_hands(mytape)
+ mytape = null
+ update_icon()
+
+
+/obj/item/device/taperecorder/attack_hand(mob/user)
+ if(loc == user)
+ if(mytape)
+ if(user.l_hand != src && user.r_hand != src)
+ ..()
+ return
+ eject(user)
return
- if(M.getBrainLoss() >= 60)
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] gibbers, \"[msg]\""
- return
- if(ending == "?")
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] asks, \"[msg]\""
- return
- else if(ending == "!")
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] exclaims, \"[msg]\""
- return
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] says, \"[msg]\""
+ ..()
+
+
+/obj/item/device/taperecorder/verb/ejectverb()
+ set name = "Eject Tape"
+ set category = "Object"
+
+ if(usr.stat)
+ return
+ if(!mytape)
return
-/obj/item/device/taperecorder/emag_act(user as mob)
- if(emagged == 0)
- emagged = 1
- recording = 0
- user << "PZZTTPFFFT"
- icon_state = "taperecorderidle"
+ eject(usr)
+
+
+/obj/item/device/taperecorder/update_icon()
+ if(!mytape)
+ icon_state = "taperecorder_empty"
+ else if(recording)
+ icon_state = "taperecorder_recording"
+ else if(playing)
+ icon_state = "taperecorder_playing"
else
- user << "It is already emagged!"
-
-/obj/item/device/taperecorder/proc/explode()
- var/turf/T = get_turf(loc)
- if(ismob(loc))
- var/mob/M = loc
- M << "\The [src] explodes!"
- if(T)
- T.hotspot_expose(700,125)
- explosion(T, -1, -1, 0, 4)
- del(src)
- return
+ icon_state = "taperecorder_idle"
+
+
+/obj/item/device/taperecorder/hear_talk(mob/living/M as mob, msg)
+ if(mytape && recording)
+ var/ending = copytext(msg, length(msg))
+ mytape.timestamp += mytape.used_capacity
+ if(M.stuttering)
+ mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [M.name] stammers, \"[msg]\""
+ return
+ if(M.getBrainLoss() >= 60)
+ mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [M.name] gibbers, \"[msg]\""
+ return
+ if(ending == "?")
+ mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [M.name] asks, \"[msg]\""
+ return
+ else if(ending == "!")
+ mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [M.name] exclaims, \"[msg]\""
+ return
+ mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [M.name] says, \"[msg]\""
+
/obj/item/device/taperecorder/verb/record()
set name = "Start Recording"
@@ -64,25 +114,35 @@
if(usr.stat)
return
- if(emagged == 1)
- usr << "\red The tape recorder makes a scratchy noise."
+ if(!mytape || mytape.ruined)
return
- icon_state = "taperecorderrecording"
- if(timerecorded < 3600 && playing == 0)
+ if(recording)
+ return
+ if(playing)
+ return
+ if(!wires.get_record())
+ return
+
+ if(mytape.used_capacity < mytape.max_capacity)
usr << "Recording started."
recording = 1
- timestamp+= timerecorded
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] Recording started."
- for(timerecorded, timerecorded<3600)
+ update_icon()
+ mytape.timestamp += mytape.used_capacity
+ mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] Recording started."
+ var/used = mytape.used_capacity //to stop runtimes when you eject the tape
+ var/max = mytape.max_capacity
+ for(used, used < max)
if(recording == 0)
break
- timerecorded++
+ if(!wires.get_record())
+ break
+ mytape.used_capacity++
+ used++
sleep(10)
recording = 0
- icon_state = "taperecorderidle"
- return
+ update_icon()
else
- usr << "Either your tape recorder's memory is full, or it is currently playing back its memory."
+ usr << "The tape is full."
/obj/item/device/taperecorder/verb/stop()
@@ -91,101 +151,76 @@
if(usr.stat)
return
- if(emagged == 1)
- usr << "\red The tape recorder makes a scratchy noise."
- return
- if(recording == 1)
+
+ if(recording)
recording = 0
- timestamp+= timerecorded
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] Recording stopped."
+ mytape.timestamp += mytape.used_capacity
+ mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] Recording stopped."
usr << "Recording stopped."
- icon_state = "taperecorderidle"
return
- else if(playing == 1)
+ else if(playing)
playing = 0
var/turf/T = get_turf(src)
T.visible_message("Tape Recorder: Playback stopped.")
- icon_state = "taperecorderidle"
- return
+ update_icon()
-/obj/item/device/taperecorder/verb/clear_memory()
- set name = "Clear Memory"
+/obj/item/device/taperecorder/verb/play()
+ set name = "Play Tape"
set category = "Object"
if(usr.stat)
return
- if(emagged == 1)
- usr << "The tape recorder makes a scratchy noise."
+ if(!mytape || mytape.ruined)
return
- if(recording == 1 || playing == 1)
- usr << "You can't clear the memory while playing or recording!"
+ if(recording)
return
- else
- if(storedinfo) storedinfo.Cut()
- if(timestamp) timestamp.Cut()
- timerecorded = 0
- usr << "Memory cleared."
+ if(playing)
+ return
+ if(!wires.get_play())
return
-
-/obj/item/device/taperecorder/verb/playback_memory()
- set name = "Playback Memory"
- set category = "Object"
-
- if(usr.stat)
- return
- if(emagged == 1)
- usr << "\red The tape recorder makes a scratchy noise."
- return
- if(recording == 1)
- usr << "You can't playback when recording!"
- return
- if(playing == 1)
- usr << "You're already playing!"
- return
playing = 1
- icon_state = "taperecorderplaying"
+ update_icon()
usr << "Playing started."
- for(var/i=1,timerecorded<3600,sleep(10 * (playsleepseconds) ))
+ var/used = mytape.used_capacity //to stop runtimes when you eject the tape
+ var/max = mytape.max_capacity
+ for(var/i = 1, used < max, sleep(10 * playsleepseconds))
+ if(!mytape)
+ break
+ if(!wires.get_play())
+ break
if(playing == 0)
break
- if(storedinfo.len < i)
+ if(mytape.storedinfo.len < i)
break
var/turf/T = get_turf(src)
- T.visible_message("Tape Recorder: [storedinfo[i]]")
- if(storedinfo.len < i+1)
+ T.visible_message("Tape Recorder: [mytape.storedinfo[i]]")
+ if(mytape.storedinfo.len < i + 1)
playsleepseconds = 1
sleep(10)
T = get_turf(src)
T.visible_message("Tape Recorder: End of recording.")
else
- playsleepseconds = timestamp[i+1] - timestamp[i]
+ playsleepseconds = mytape.timestamp[i + 1] - mytape.timestamp[i]
if(playsleepseconds > 14)
sleep(10)
T = get_turf(src)
T.visible_message("Tape Recorder: Skipping [playsleepseconds] seconds of silence")
playsleepseconds = 1
i++
- icon_state = "taperecorderidle"
+
playing = 0
- if(emagged == 1.0)
- var/turf/T = get_turf(src)
- T.visible_message("Tape Recorder: This tape recorder will self-destruct in... Five.")
- sleep(10)
- T = get_turf(src)
- T.visible_message("Tape Recorder: Four.")
- sleep(10)
- T = get_turf(src)
- T.visible_message("Tape Recorder: Three.")
- sleep(10)
- T = get_turf(src)
- T.visible_message("Tape Recorder: Two.")
- sleep(10)
- T = get_turf(src)
- T.visible_message("Tape Recorder: One.")
- sleep(10)
- explode()
+ update_icon()
+
+
+/obj/item/device/taperecorder/attack_self(mob/user)
+ if(!mytape || mytape.ruined)
+ return
+ if(recording)
+ stop()
+ else
+ record()
/obj/item/device/taperecorder/verb/print_transcript()
@@ -194,68 +229,74 @@
if(usr.stat)
return
- if(emagged == 1)
- usr << "\red The tape recorder makes a scratchy noise."
+ if(!mytape)
return
if(!canprint)
usr << "The recorder can't print that fast!"
return
- if(recording == 1 || playing == 1)
- usr << "You can't print the transcript while playing or recording!"
+ if(recording || playing)
return
+
usr << "Transcript printed."
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src))
var/t1 = "Transcript:
"
- for(var/i=1,storedinfo.len >= i,i++)
- t1 += "[storedinfo[i]]
"
+ for(var/i = 1, mytape.storedinfo.len >= i, i++)
+ t1 += "[mytape.storedinfo[i]]
"
P.info = t1
P.name = "paper- 'Transcript'"
+ usr.put_in_hands(P)
canprint = 0
sleep(300)
canprint = 1
-/obj/item/device/taperecorder/attack_self(mob/user)
- if(recording == 0 && playing == 0)
- if(usr.stat)
- return
- if(emagged == 1)
- usr << "\red The tape recorder makes a scratchy noise."
- return
- icon_state = "taperecorderrecording"
- if(timerecorded < 3600 && playing == 0)
- usr << "\blue Recording started."
- recording = 1
- timestamp+= timerecorded
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] Recording started."
- for(timerecorded, timerecorded<3600)
- if(recording == 0)
- break
- timerecorded++
- sleep(10)
- recording = 0
- icon_state = "taperecorderidle"
- return
- else
- usr << "\red Either your tape recorder's memory is full, or it is currently playing back its memory."
- else
- if(usr.stat)
- usr << "Not when you're incapacitated."
- return
- if(recording == 1)
- recording = 0
- timestamp+= timerecorded
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] Recording stopped."
- usr << "\blue Recording stopped."
- icon_state = "taperecorderidle"
- return
- else if(playing == 1)
- playing = 0
- var/turf/T = get_turf(src)
- for(var/mob/O in hearers(world.view-1, T))
- O.show_message("Tape Recorder: Playback stopped.",2)
- icon_state = "taperecorderidle"
- return
- else
- usr << "\red Stop what?"
- return
\ No newline at end of file
+//empty tape recorders
+/obj/item/device/taperecorder/empty/New()
+ wires = new(src)
+ return
+
+
+/obj/item/device/tape
+ name = "tape"
+ desc = "A magnetic tape that can hold up to ten minutes of content."
+ icon_state = "tape_white"
+ item_state = "analyzer"
+ w_class = 1
+ m_amt = 20
+ g_amt = 5
+ force = 1
+ throwforce = 0
+ var/max_capacity = 600
+ var/used_capacity = 0
+ var/list/storedinfo = list()
+ var/list/timestamp = list()
+ var/ruined = 0
+
+
+/obj/item/device/tape/attack_self(mob/user)
+ if(!ruined)
+ user << "You pull out all the tape!"
+ ruin()
+
+
+/obj/item/device/tape/proc/ruin()
+ overlays += "ribbonoverlay"
+ ruined = 1
+
+
+/obj/item/device/tape/proc/fix()
+ overlays -= "ribbonoverlay"
+ ruined = 0
+
+
+/obj/item/device/tape/attackby(obj/item/I, mob/user)
+ if(ruined && istype(I, /obj/item/weapon/screwdriver))
+ user << "You start winding the tape back in."
+ if(do_after(user, 120))
+ user << "You wound the tape back in!"
+ fix()
+
+
+//Random colour tapes
+/obj/item/device/tape/random/New()
+ icon_state = "tape_[pick("white", "blue", "red", "yellow", "purple")]"
\ No newline at end of file
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index d3030eec675..a1f332ee161 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -166,7 +166,7 @@
name = "security hailer"
desc = "A set of recognizable pre-recorded messages for cyborgs to use when apprehending criminals."
icon = 'icons/obj/device.dmi'
- icon_state = "taperecorderidle"
+ icon_state = "taperecorder_idle"
aggressiveness = 1 //Borgs are nicecurity!
ignore_maskadjust = 1
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index aac7a1be922..2cce7c7475d 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -9,7 +9,7 @@
materials = list("$metal" = 30, "$glass" = 20)
build_path = /obj/item/device/analyzer
category = list("initial","Tools")
-
+
/datum/design/bucket
name = "Bucket"
id = "bucket"
@@ -25,7 +25,7 @@
materials = list("$metal" = 50)
build_path = /obj/item/weapon/crowbar
category = list("initial","Tools")
-
+
/datum/design/extinguisher
name = "Fire Extinguisher"
id = "extinguisher"
@@ -49,7 +49,7 @@
materials = list("$metal" = 50, "$glass" = 20)
build_path = /obj/item/device/multitool
category = list("initial","Tools")
-
+
/datum/design/screwdriver
name = "Screwdriver"
id = "screwdriver"
@@ -72,8 +72,8 @@
build_type = AUTOLATHE
materials = list("$metal" = 1750, "$glass" = 400)
build_path = /obj/item/clothing/head/welding
- category = list("initial","Tools")
-
+ category = list("initial","Tools")
+
/datum/design/weldingtool
name = "Welding Tool"
id = "welding_tool"
@@ -104,16 +104,16 @@
build_type = AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/airalarm_electronics
- category = list("initial", "Electronics")
-
+ category = list("initial", "Electronics")
+
/datum/design/airlock_board
name = "Airlock Electronics"
id = "airlock_board"
build_type = AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/airlock_electronics
- category = list("initial", "Electronics")
-
+ category = list("initial", "Electronics")
+
/datum/design/console_screen
name = "Console Screen"
id = "console_screen"
@@ -128,7 +128,7 @@
build_type = AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/firealarm_electronics
- category = list("initial", "Electronics")
+ category = list("initial", "Electronics")
/datum/design/igniter
name = "Igniter"
@@ -137,7 +137,7 @@
materials = list("$metal" = 500, "$glass" = 50)
build_path = /obj/item/device/assembly/igniter
category = list("initial", "Miscellaneous")
-
+
/datum/design/infrared_emitter
name = "Infrared Emitter"
id = "infrared_emitter"
@@ -145,15 +145,15 @@
materials = list("$metal" = 1000, "$glass" = 500)
build_path = /obj/item/device/assembly/infra
category = list("initial", "Miscellaneous")
-
+
/datum/design/kitchen_knife
name = "Kitchen knife"
id = "kitchen_knife"
build_type = AUTOLATHE
materials = list("$metal" = 12000)
build_path = /obj/item/weapon/kitchenknife
- category = list("initial","Miscellaneous")
-
+ category = list("initial","Miscellaneous")
+
/datum/design/pipe_painter
name = "Pipe Painter"
id = "pipe_painter"
@@ -161,15 +161,15 @@
materials = list("$metal" = 5000, "$glass" = 2000)
build_path = /obj/item/device/pipe_painter
category = list("initial", "Miscellaneous")
-
+
/datum/design/prox_sensor
name = "Proximity Sensor"
id = "prox_sensor"
build_type = AUTOLATHE
materials = list("$metal" = 800, "$glass" = 200)
build_path = /obj/item/device/assembly/prox_sensor
- category = list("initial", "Miscellaneous")
-
+ category = list("initial", "Miscellaneous")
+
/datum/design/timer
name = "Timer"
id = "timer"
@@ -183,9 +183,17 @@
id = "recorder"
build_type = AUTOLATHE
materials = list("$metal" = 60, "$glass" = 30)
- build_path = /obj/item/device/taperecorder
- category = list("initial", "Miscellaneous")
-
+ build_path = /obj/item/device/taperecorder/empty
+ category = list("initial", "Miscellaneous")
+
+/datum/design/tape
+ name = "Tape"
+ id = "tape"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 20, "$glass" = 5)
+ build_path = /obj/item/device/tape/random
+ category = list("initial", "Miscellaneous")
+
/datum/design/voice_analyser
name = "Voice Analyser"
id = "voice_analyser"
@@ -200,8 +208,8 @@
build_type = AUTOLATHE
materials = list("$metal" = 400, "$glass" = 250)
build_path = /obj/item/weapon/camera_assembly
- category = list("initial", "Construction")
-
+ category = list("initial", "Construction")
+
/datum/design/glass
name = "Glass"
id = "glass"
@@ -216,16 +224,16 @@
build_type = AUTOLATHE
materials = list("$metal" = 60, "$glass" = 100)
build_path = /obj/item/weapon/light/bulb
- category = list("initial", "Construction")
-
+ category = list("initial", "Construction")
+
/datum/design/light_tube
name = "Light Tube"
id = "light_tube"
build_type = AUTOLATHE
materials = list("$metal" = 60, "$glass" = 100)
build_path = /obj/item/weapon/light/tube
- category = list("initial", "Construction")
-
+ category = list("initial", "Construction")
+
/datum/design/metal
name = "Metal"
id = "metal"
@@ -233,7 +241,7 @@
materials = list("$metal" = 3750)
build_path = /obj/item/stack/sheet/metal
category = list("initial","Construction")
-
+
/datum/design/newscaster_frame
name = "Newscaster Frame"
id = "newscaster_frame"
@@ -248,8 +256,8 @@
build_type = AUTOLATHE
materials = list("$metal" = 16000, "$glass"=8000)
build_path = /obj/item/weapon/rcd_ammo
- category = list("initial","Construction")
-
+ category = list("initial","Construction")
+
/datum/design/rglass
name = "Reinforced Glass"
id = "rglass"
@@ -265,7 +273,7 @@
materials = list("$metal" = 1875)
build_path = /obj/item/stack/rods
category = list("initial","Construction")
-
+
/datum/design/beaker
name = "Beaker"
id = "beaker"
@@ -280,16 +288,16 @@
build_type = AUTOLATHE
materials = list("$metal" = 2500, "$glass" = 750)
build_path = /obj/item/weapon/cautery
- category = list("initial", "Medical")
-
+ category = list("initial", "Medical")
+
/datum/design/circular_saw
name = "Circular Saw"
id = "circular_saw"
build_type = AUTOLATHE
materials = list("$metal" = 10000, "$glass" = 6000)
build_path = /obj/item/weapon/circular_saw
- category = list("initial", "Medical")
-
+ category = list("initial", "Medical")
+
/datum/design/hemostat
name = "Hemostat"
id = "hemostat"
@@ -297,7 +305,7 @@
materials = list("$metal" = 5000, "$glass" = 2500)
build_path = /obj/item/weapon/hemostat
category = list("initial", "Medical")
-
+
/datum/design/large_beaker
name = "Large Beaker"
id = "large_beaker"
@@ -313,7 +321,7 @@
materials = list("$metal" = 6000, "$glass" = 3000)
build_path = /obj/item/weapon/retractor
category = list("initial", "Medical")
-
+
/datum/design/scalpel
name = "Scalpel"
id = "scalpel"
@@ -329,7 +337,7 @@
materials = list("$metal" = 10000, "$glass" = 6000)
build_path = /obj/item/weapon/surgicaldrill
category = list("initial", "Medical")
-
+
/datum/design/syringe
name = "Syringe"
id = "syringe"
@@ -360,8 +368,8 @@
build_type = AUTOLATHE
materials = list("$metal" = 75)
build_path = /obj/item/device/radio/headset
- category = list("initial", "Communication")
-
+ category = list("initial", "Communication")
+
/datum/design/signaler
name = "Remote Signaling Device"
id = "signaler"
@@ -401,8 +409,8 @@
build_type = AUTOLATHE
materials = list("$metal" = 30000)
build_path = /obj/item/ammo_box/c9mm
- category = list("hacked", "Security")
-
+ category = list("hacked", "Security")
+
/datum/design/c10mm
name = "Ammo Box (10mm)"
id = "c10mm"
@@ -410,7 +418,7 @@
materials = list("$metal" = 30000)
build_path = /obj/item/ammo_box/c10mm
category = list("hacked", "Security")
-
+
/datum/design/buckshot_shell
name = "Buckshot Shell"
id = "buckshot_shell"
@@ -418,7 +426,7 @@
materials = list("$metal" = 4000)
build_path = /obj/item/ammo_casing/shotgun/buckshot
category = list("hacked", "Security")
-
+
/datum/design/electropack
name = "Electropack"
id = "electropack"
@@ -426,7 +434,7 @@
materials = list("$metal" = 10000, "$glass" = 2500)
build_path = /obj/item/device/radio/electropack
category = list("hacked", "Tools")
-
+
/datum/design/flamethrower
name = "Flamethrower"
id = "flamethrower"
@@ -434,7 +442,7 @@
materials = list("$metal" = 500)
build_path = /obj/item/weapon/flamethrower/full
category = list("hacked", "Security")
-
+
/datum/design/handcuffs
name = "Handcuffs"
id = "handcuffs"
@@ -442,7 +450,7 @@
materials = list("$metal" = 500)
build_path = /obj/item/weapon/restraints/handcuffs
category = list("hacked", "Security")
-
+
/datum/design/incendiary_slug
name = "Incendiary Slug"
id = "incendiary_slug"
@@ -457,8 +465,8 @@
build_type = AUTOLATHE
materials = list("$metal" = 70, "$glass" = 60)
build_path = /obj/item/weapon/weldingtool/largetank
- category = list("hacked", "Tools")
-
+ category = list("hacked", "Tools")
+
/datum/design/rcd
name = "Rapid Construction Device (RCD)"
id = "rcd"
@@ -473,8 +481,8 @@
build_type = AUTOLATHE
materials = list("$metal" = 4000)
build_path = /obj/item/ammo_casing/shotgun/dart
- category = list("hacked", "Security")
-
+ category = list("hacked", "Security")
+
/datum/design/shotgun_slug
name = "Shotgun Slug"
id = "shotgun_slug"
@@ -482,4 +490,3 @@
materials = list("$metal" = 4000)
build_path = /obj/item/ammo_casing/shotgun
category = list("hacked", "Security")
-
\ No newline at end of file
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 374d95f9bc1..d74ab34b256 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/paradise.dme b/paradise.dme
index a8a7f41df4c..03fe6fa4c30 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -253,6 +253,7 @@
#include "code\datums\wires\radio.dm"
#include "code\datums\wires\robot.dm"
#include "code\datums\wires\syndicatebomb.dm"
+#include "code\datums\wires\taperecorder.dm"
#include "code\datums\wires\vending.dm"
#include "code\datums\wires\wires.dm"
#include "code\defines\obj.dm"