diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 034063c453..4f45423f6e 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -27,13 +27,14 @@
var/window_type = /obj/structure/window/reinforced/full
var/material_to_use = DEFAULT_WALL_MATERIAL // So badmins can make RCDs that print diamond walls.
var/make_rwalls = FALSE // If true, when building walls, they will be reinforced.
-
+/* VOREStation Removal - Unused
/obj/item/weapon/rcd/Initialize()
+
src.spark_system = new /datum/effect/effect/system/spark_spread
spark_system.set_up(5, 0, src)
spark_system.attach(src)
return ..()
-
+*/
/obj/item/weapon/rcd/Destroy()
QDEL_NULL(spark_system)
spark_system = null
@@ -48,6 +49,7 @@
return "It currently holds [stored_matter]/[max_stored_matter] matter-units."
// Used to add new cartridges.
+/* VOREStation Tweak - Wow this is annoying, moved to _vr file for overhaul
/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user)
if(istype(W, /obj/item/weapon/rcd_ammo))
var/obj/item/weapon/rcd_ammo/cartridge = W
@@ -61,9 +63,10 @@
to_chat(user, span("notice", "The RCD now holds [stored_matter]/[max_stored_matter] matter-units."))
return TRUE
return ..()
-
+*/
// Changes which mode it is on.
/obj/item/weapon/rcd/attack_self(mob/living/user)
+/* VOREStation Removal - Moved to VR
if(mode_index >= modes.len) // Shouldn't overflow unless someone messes with it in VV poorly but better safe than sorry.
mode_index = 1
else
@@ -74,7 +77,7 @@
if(prob(20))
src.spark_system.start()
-
+*/
// Removes resources if the RCD can afford it.
/obj/item/weapon/rcd/proc/consume_resources(amount)
if(!can_afford(amount))
@@ -118,6 +121,7 @@
rcd_beam = beam_origin.Beam(A, icon_state = "rped_upgrade", time = max(true_delay, 5))
busy = TRUE
+ perform_effect(A, true_delay) //VOREStation Add
if(do_after(user, true_delay, target = A))
busy = FALSE
// Doing another check in case we lost matter during the delay for whatever reason.
diff --git a/code/game/objects/items/weapons/RCD_vr.dm b/code/game/objects/items/weapons/RCD_vr.dm
new file mode 100644
index 0000000000..2369ca0d93
--- /dev/null
+++ b/code/game/objects/items/weapons/RCD_vr.dm
@@ -0,0 +1,218 @@
+/obj/item/weapon/rcd
+ icon = 'icons/obj/tools_vr.dmi'
+ icon_state = "rcd"
+ item_state = "rcd"
+ item_icons = list(
+ slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi',
+ slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi',
+ )
+ var/ammostate
+ var/list/effects = list()
+
+ var/static/image/radial_image_airlock = image(icon = 'icons/mob/radial.dmi', icon_state = "airlock"),
+ var/static/image/radial_image_decon = image(icon= 'icons/mob/radial.dmi', icon_state = "delete"),
+ var/static/image/radial_image_grillewind = image(icon = 'icons/mob/radial.dmi', icon_state = "grillewindow"),
+ var/static/image/radial_image_floorwall = image(icon = 'icons/mob/radial.dmi', icon_state = "wallfloor")
+
+// Ammo for the (non-electric) RCDs.
+/obj/item/weapon/rcd_ammo
+ name = "compressed matter cartridge"
+ desc = "Highly compressed matter for the RCD."
+ icon = 'icons/obj/tools_vr.dmi'
+ icon_state = "rcdammo"
+ item_state = "rcdammo"
+ item_icons = list(
+ slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi',
+ slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi',
+ )
+
+/obj/item/weapon/rcd/Initialize()
+ . = ..()
+ update_icon()
+
+/obj/item/weapon/rcd/consume_resources(amount)
+ . = ..()
+ update_icon()
+
+/obj/item/weapon/rcd/update_icon()
+ var/nearest_ten = round((stored_matter/max_stored_matter)*10, 1)
+
+ //Just to prevent updates every use
+ if(ammostate == nearest_ten)
+ return //No change
+ ammostate = nearest_ten
+
+ cut_overlays()
+
+ //Main sprite update
+ if(!nearest_ten)
+ icon_state = "[initial(icon_state)]_empty"
+ else
+ icon_state = "[initial(icon_state)]"
+
+ add_overlay("[initial(icon_state)]_charge[nearest_ten]")
+
+/obj/item/weapon/rcd/proc/perform_effect(var/atom/A, var/time_taken)
+ effects[A] = new /obj/effect/constructing_effect(get_turf(A), time_taken, modes[mode_index])
+
+/obj/item/weapon/rcd/use_rcd(atom/A, mob/living/user)
+ . = ..()
+ cleanup_effect(A)
+
+/obj/item/weapon/rcd/proc/cleanup_effect(var/atom/A)
+ if(A in effects)
+ qdel(effects[A])
+ effects -= A
+
+/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user)
+ if(istype(W, /obj/item/weapon/rcd_ammo))
+ var/obj/item/weapon/rcd_ammo/cartridge = W
+ var/can_store = min(max_stored_matter - stored_matter, cartridge.remaining)
+ if(can_store <= 0)
+ to_chat(user, span("warning", "There's either no space or \the [cartridge] is empty!"))
+ return FALSE
+ stored_matter += can_store
+ cartridge.remaining -= can_store
+ if(!cartridge.remaining)
+ to_chat(user, span("warning", "\The [cartridge] dissolves as it empties of compressed matter."))
+ user.drop_from_inventory(W)
+ qdel(W)
+ playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
+ to_chat(user, span("notice", "The RCD now holds [stored_matter]/[max_stored_matter] matter-units."))
+ update_icon()
+ return TRUE
+ return ..()
+
+/obj/item/weapon/rcd/proc/check_menu(mob/living/user)
+ if(!istype(user))
+ return FALSE
+ if(user.incapacitated() || !user.Adjacent(src))
+ return FALSE
+ return TRUE
+
+/obj/item/weapon/rcd/attack_self(mob/living/user)
+ ..()
+ var/list/choices = list(
+ "Airlock" = radial_image_airlock,
+ "Deconstruct" = radial_image_decon,
+ "Grilles & Windows" = radial_image_grillewind,
+ "Floors & Walls" = radial_image_floorwall
+ )
+ /* We don't have these features yet
+ if(upgrade & RCD_UPGRADE_FRAMES)
+ choices += list(
+ "Machine Frames" = image(icon = 'icons/mob/radial.dmi', icon_state = "machine"),
+ "Computer Frames" = image(icon = 'icons/mob/radial.dmi', icon_state = "computer_dir"),
+ )
+ if(upgrade & RCD_UPGRADE_SILO_LINK)
+ choices += list(
+ "Silo Link" = image(icon = 'icons/obj/mining.dmi', icon_state = "silo"),
+ )
+ if(mode == RCD_AIRLOCK)
+ choices += list(
+ "Change Access" = image(icon = 'icons/mob/radial.dmi', icon_state = "access"),
+ "Change Airlock Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "airlocktype")
+ )
+ else if(mode == RCD_WINDOWGRILLE)
+ choices += list(
+ "Change Window Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "windowtype")
+ )
+ */
+ var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ if(!check_menu(user))
+ return
+ switch(choice)
+ if("Floors & Walls")
+ mode_index = modes.Find(RCD_FLOORWALL)
+ if("Airlock")
+ mode_index = modes.Find(RCD_AIRLOCK)
+ if("Deconstruct")
+ mode_index = modes.Find(RCD_DECONSTRUCT)
+ if("Grilles & Windows")
+ mode_index = modes.Find(RCD_WINDOWGRILLE)
+ /* We don't have these features yet
+ if("Machine Frames")
+ mode = RCD_MACHINE
+ if("Computer Frames")
+ mode = RCD_COMPUTER
+ change_computer_dir(user)
+ return
+ if("Change Access")
+ change_airlock_access(user)
+ return
+ if("Change Airlock Type")
+ change_airlock_setting(user)
+ return
+ if("Change Window Type")
+ toggle_window_type(user)
+ return
+ if("Silo Link")
+ toggle_silo_link(user)
+ return
+ */
+ else
+ return
+ playsound(src, 'sound/effects/pop.ogg', 50, FALSE)
+ to_chat(user, "You change RCD's mode to '[choice]'.")
+
+//////////////////
+/obj/item/weapon/rcd/electric/update_icon()
+ return
+
+/obj/item/weapon/rcd/shipwright
+ icon_state = "swrcd"
+ item_state = "ircd"
+ can_remove_rwalls = TRUE
+ make_rwalls = TRUE
+
+//////////////////
+/obj/item/weapon/rcd_ammo/examine(mob/user)
+ ..()
+ to_chat(user, display_resources())
+
+// Used to show how much stuff (matter units, cell charge, etc) is left inside.
+/obj/item/weapon/rcd_ammo/proc/display_resources()
+ return "It currently holds [remaining]/[initial(remaining)] matter-units."
+
+//////////////////
+/obj/effect/constructing_effect
+ icon = 'icons/effects/effects_rcd.dmi'
+ icon_state = ""
+ plane = TURF_PLANE
+ layer = ABOVE_TURF_LAYER
+ anchored = TRUE
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ var/status = 0
+ var/delay = 0
+
+/obj/effect/constructing_effect/Initialize(mapload, rcd_delay, rcd_status)
+ . = ..()
+ status = rcd_status
+ delay = rcd_delay
+ if (status == RCD_DECONSTRUCT)
+ addtimer(CALLBACK(src, /atom/.proc/update_icon), 11)
+ delay -= 11
+ icon_state = "rcd_end_reverse"
+ else
+ update_icon()
+
+/obj/effect/constructing_effect/update_icon()
+ icon_state = "rcd"
+ if (delay < 10)
+ icon_state += "_shortest"
+ else if (delay < 20)
+ icon_state += "_shorter"
+ else if (delay < 37)
+ icon_state += "_short"
+ if (status == RCD_DECONSTRUCT)
+ icon_state += "_reverse"
+
+/obj/effect/constructing_effect/proc/end_animation()
+ if (status == RCD_DECONSTRUCT)
+ qdel(src)
+ else
+ icon_state = "rcd_end"
+ addtimer(CALLBACK(src, .proc/end), 15)
+
+/obj/effect/constructing_effect/proc/end()
+ qdel(src)
diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm
index 260a01b04d..7af320d69f 100644
--- a/code/game/objects/items/weapons/RSF.dm
+++ b/code/game/objects/items/weapons/RSF.dm
@@ -8,8 +8,8 @@ RSF
name = "\improper Rapid-Service-Fabricator"
desc = "A device used to rapidly deploy service items."
description_info = "Control Clicking on the device will allow you to choose the glass it dispenses when in the proper mode."
- icon = 'icons/obj/tools.dmi'
- icon_state = "rcd"
+ icon = 'icons/obj/tools_vr.dmi' //VOREStation Edit
+ icon_state = "rsf" //VOREStation Edit
opacity = 0
density = 0
anchored = 0.0
diff --git a/code/game/objects/items/weapons/inducer_vr.dm b/code/game/objects/items/weapons/inducer_vr.dm
new file mode 100644
index 0000000000..aec62a69be
--- /dev/null
+++ b/code/game/objects/items/weapons/inducer_vr.dm
@@ -0,0 +1,270 @@
+/obj/item/weapon/inducer
+ name = "industrial inducer"
+ desc = "A tool for inductively charging internal power cells."
+ icon = 'icons/obj/tools_vr.dmi'
+ icon_state = "inducer-engi"
+ item_state = "inducer-engi"
+ item_icons = list(
+ slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi',
+ slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi',
+ )
+ force = 7
+
+ var/powertransfer = 1000 //Transfer per time when charging something
+ var/cell_type = /obj/item/weapon/cell/high //Type of cell to spawn in it
+ var/charge_guns = FALSE //Can it charge guns?
+
+ var/datum/effect/effect/system/spark_spread/spark_system
+ var/obj/item/weapon/cell/cell
+ var/recharging = FALSE
+ var/opened = FALSE
+
+/obj/item/weapon/inducer/unloaded
+ cell_type = null
+ opened = TRUE
+
+/obj/item/weapon/inducer/Initialize()
+ . = ..()
+ if(!cell && cell_type)
+ cell = new cell_type
+
+/obj/item/weapon/inducer/proc/induce(var/obj/item/weapon/cell/target, coefficient)
+ var/totransfer = min(cell.charge,(powertransfer * coefficient))
+ var/transferred = target.give(totransfer)
+ cell.use(transferred)
+ cell.update_icon()
+ target.update_icon()
+
+/obj/item/weapon/inducer/get_cell()
+ return cell
+
+/obj/item/weapon/inducer/emp_act(severity)
+ . = ..()
+ if(cell)
+ cell.emp_act(severity)
+
+/obj/item/weapon/inducer/afterattack(atom/A, mob/living/carbon/user, proximity)
+ if(user.a_intent == I_HURT)
+ return ..()
+
+ if(cantbeused(user))
+ return
+
+ if(recharge(A, user))
+ return
+
+ return ..()
+
+/obj/item/weapon/inducer/proc/cantbeused(mob/user)
+ if(!user.IsAdvancedToolUser())
+ to_chat(user, "You don't have the dexterity to use [src]!")
+ return TRUE
+
+ if(!cell)
+ to_chat(user, "[src] doesn't have a power cell installed!")
+ return TRUE
+
+ if(!cell.charge)
+ to_chat(user, "[src]'s battery is dead!")
+ return TRUE
+ return FALSE
+
+
+/obj/item/weapon/inducer/attackby(obj/item/W, mob/user)
+ if(W.is_screwdriver())
+ playsound(src, W.usesound, 50, 1)
+ if(!opened)
+ to_chat(user, "You open the battery compartment.")
+ opened = TRUE
+ update_icon()
+ return
+ else
+ to_chat(user, "You close the battery compartment.")
+ opened = FALSE
+ update_icon()
+ return
+ if(istype(W, /obj/item/weapon/cell))
+ if(opened)
+ if(!cell)
+ user.drop_from_inventory(W)
+ W.forceMove(src)
+ to_chat(user, "You insert [W] into [src].")
+ cell = W
+ update_icon()
+ return
+ else
+ to_chat(user, "[src] already has \a [cell] installed!")
+ return
+
+ if(cantbeused(user))
+ return
+
+ if(recharge(W, user))
+ return
+
+ return ..()
+
+/obj/item/weapon/inducer/proc/recharge(atom/movable/A, mob/user)
+ if(!isturf(A) && user.loc == A)
+ return FALSE
+ if(recharging)
+ return TRUE
+ else
+ recharging = TRUE
+
+ if(istype(A, /obj/item/weapon/gun/energy) && !charge_guns)
+ to_chat(user, "Error unable to interface with device.")
+ return FALSE
+
+ //The cell we hopefully eventually find
+ var/obj/item/weapon/cell/C
+
+ //Synthetic humanoids
+ if(ishuman(A))
+ var/mob/living/carbon/human/H = A
+ if(H.isSynthetic())
+ C = new /obj/item/weapon/cell/standin(null, H) // o o f
+
+ //Borg frienbs
+ else if(isrobot(A))
+ var/mob/living/silicon/robot/R = A
+ C = R.cell
+
+ //Can set different coefficients per item if you want
+ var/coefficient = 1
+
+ //Last ditch effort
+ var/obj/O //For updating icons, just in case they have a battery meter icon
+ if(!C && isobj(A))
+ O = A
+ C = O.get_cell()
+
+ if(C)
+ var/done_any = FALSE
+
+ if(C.charge >= C.maxcharge)
+ to_chat(user, "[A] is fully charged ([round(C.charge)] / [C.maxcharge])!")
+ recharging = FALSE
+ return TRUE
+ user.visible_message("[user] starts recharging [A] with [src].", "You start recharging [A] with [src].")
+
+ var/datum/beam/charge_beam = user.Beam(A, icon_state = "rped_upgrade", time = 20 SECONDS)
+ var/filter = filter(type = "outline", size = 1, color = "#22AAFF")
+ A.filters += filter
+
+ spark_system = new /datum/effect/effect/system/spark_spread
+ spark_system.set_up(5, 0, get_turf(A))
+ spark_system.attach(A)
+
+ while(C.charge < C.maxcharge)
+ if(do_after(user, 2 SECONDS, target = user) && cell.charge)
+ done_any = TRUE
+ induce(C, coefficient)
+ spark_system.start()
+ if(O)
+ O.update_icon()
+ else
+ break
+
+ QDEL_NULL(charge_beam)
+ QDEL_NULL(spark_system)
+ if(A)
+ A.filters -= filter
+
+ if(done_any) // Only show a message if we succeeded at least once
+ user.visible_message("[user] recharged [A]!", "You recharged [A]!")
+
+ recharging = FALSE
+ return TRUE
+ else //Couldn't find a cell
+ to_chat(user, "Error unable to interface with device.")
+
+ recharging = FALSE
+
+/obj/item/weapon/inducer/attack_self(mob/user)
+ if(opened && cell)
+ user.visible_message("[user] removes [cell] from [src]!", "You remove [cell].")
+ cell.update_icon()
+ user.put_in_hands(cell)
+ cell = null
+ update_icon()
+
+/obj/item/weapon/inducer/examine(mob/living/M)
+ . = ..()
+ var/dat = ""
+ if(cell)
+ dat += "
Its display shows: [round(cell.charge)] / [cell.maxcharge]."
+ else
+ dat += "
Its display is dark."
+ if(opened)
+ dat += "
Its battery compartment is open."
+ to_chat(M, dat)
+
+/obj/item/weapon/inducer/update_icon()
+ ..()
+ cut_overlays()
+ if(opened)
+ if(!cell)
+ add_overlay("inducer-nobat")
+ else
+ add_overlay("inducer-bat")
+
+//////// Variants
+/obj/item/weapon/inducer/sci
+ name = "inducer"
+ desc = "A tool for inductively charging internal power cells. This one has a science color scheme, and is less potent than its engineering counterpart."
+ icon_state = "inducer-sci"
+ item_state = "inducer-sci"
+ cell_type = null
+ powertransfer = 500
+ opened = TRUE
+
+/obj/item/weapon/inducer/sci/Initialize()
+ . = ..()
+ update_icon() //To get the 'open' state applied
+
+/obj/item/weapon/inducer/syndicate
+ name = "suspicious inducer"
+ desc = "A tool for inductively charging internal power cells. This one has a suspicious colour scheme, and seems to be rigged to transfer charge at a much faster rate."
+ icon_state = "inducer-syndi"
+ item_state = "inducer-syndi"
+ powertransfer = 2000
+ cell_type = /obj/item/weapon/cell/super
+ charge_guns = TRUE
+
+/obj/item/weapon/inducer/hybrid
+ name = "hybrid-tech inducer"
+ desc = "A tool for inductively charging internal power cells. This one has some flashy bits and recharges devices slower, but seems to recharge itself between uses."
+ icon_state = "inducer-hybrid"
+ item_state = "inducer-hybrid"
+ powertransfer = 250
+ cell_type = /obj/item/weapon/cell/void
+ charge_guns = TRUE
+
+// A 'human stand-in' cell for recharging 'nutrition' on synthetic humans (wow this is terrible! \o/)
+/obj/item/weapon/cell/standin
+ name = "don't spawn this"
+ desc = "this is for weird code use, don't spawn it!!!"
+
+ charge = 100
+ maxcharge = 100
+
+ var/mob/living/carbon/human/hume
+
+/obj/item/weapon/cell/standin/New(newloc, var/mob/living/carbon/human/H)
+ ..()
+ hume = H
+ charge = H.nutrition
+ maxcharge = initial(H.nutrition)
+
+ QDEL_IN(src, 20 SECONDS)
+
+/obj/item/weapon/cell/standin/give(var/amount)
+ amount *= 0.05 // So 1000 becomes 50
+ ..(amount)
+ hume.nutrition += amount
+
+// Various sideways-defined get_cells
+/obj/mecha/get_cell()
+ return cell
+
diff --git a/code/modules/research/designs/misc_vr.dm b/code/modules/research/designs/misc_vr.dm
index 2b397185c3..d26f24ed59 100644
--- a/code/modules/research/designs/misc_vr.dm
+++ b/code/modules/research/designs/misc_vr.dm
@@ -2,7 +2,7 @@
name = "Bluespace jumpsuit"
id = "bsjumpsuit"
req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3, TECH_POWER = 2)
- materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000)
+ materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/clothing/under/bluespace
sort_string = "TAVAA"
@@ -10,7 +10,7 @@
name = "Size gun"
id = "sizegun"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
- materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "uranium" = 2000)
+ materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000)
build_path = /obj/item/weapon/gun/energy/sizegun
sort_string = "TAVAB"
@@ -18,6 +18,22 @@
name = "Body Snatcher"
id = "bodysnatcher"
req_tech = list(TECH_MAGNET = 3, TECH_BIO = 3, TECH_ILLEGAL = 2)
- materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000)
+ materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/device/bodysnatcher
- sort_string = "TBVAA"
\ No newline at end of file
+ sort_string = "TBVAA"
+
+/datum/design/item/general/inducer_sci
+ name = "Inducer (Scientific)"
+ id = "inducersci"
+ req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 5, TECH_POWER = 6)
+ materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_PHORON = 4000)
+ build_path = /obj/item/weapon/inducer/sci
+ sort_string = "TAVAB"
+
+/datum/design/item/general/inducer_eng
+ name = "Inducer (Industrial)"
+ id = "inducerind"
+ req_tech = list(TECH_BLUESPACE = 5, TECH_MATERIAL = 7, TECH_POWER = 7)
+ materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 2000)
+ build_path = /obj/item/weapon/inducer/unloaded
+ sort_string = "TAVAC"
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index 3837e13aae..1de0d5bed0 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -15,7 +15,26 @@
var/mat_efficiency = 1
var/speed = 1
- materials = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0, MAT_PLASTEEL = 0, "plastic" = 0, MAT_GRAPHITE = 0, "gold" = 0, "silver" = 0, "osmium" = 0, MAT_LEAD = 0, "phoron" = 0, "uranium" = 0, "diamond" = 0, MAT_DURASTEEL = 0, MAT_VERDANTIUM = 0, MAT_MORPHIUM = 0, MAT_METALHYDROGEN = 0, MAT_SUPERMATTER = 0)
+ //VOREStation Edit - Broke this into lines
+ materials = list(
+ DEFAULT_WALL_MATERIAL = 0,
+ "glass" = 0,
+ MAT_PLASTEEL = 0,
+ "plastic" = 0,
+ MAT_GRAPHITE = 0,
+ "gold" = 0,
+ "silver" = 0,
+ "osmium" = 0,
+ MAT_LEAD = 0,
+ "phoron" = 0,
+ "uranium" = 0,
+ "diamond" = 0,
+ MAT_DURASTEEL = 0,
+ MAT_VERDANTIUM = 0,
+ MAT_MORPHIUM = 0,
+ MAT_METALHYDROGEN = 0,
+ MAT_SUPERMATTER = 0,
+ MAT_TITANIUM = 0)
hidden_materials = list(MAT_PLASTEEL, MAT_DURASTEEL, MAT_GRAPHITE, MAT_VERDANTIUM, MAT_MORPHIUM, MAT_METALHYDROGEN, MAT_SUPERMATTER)
diff --git a/icons/effects/effects_rcd.dmi b/icons/effects/effects_rcd.dmi
new file mode 100644
index 0000000000..efb13bfb11
Binary files /dev/null and b/icons/effects/effects_rcd.dmi differ
diff --git a/icons/mob/items/lefthand_vr.dmi b/icons/mob/items/lefthand_vr.dmi
index 009e558532..c033b49117 100644
Binary files a/icons/mob/items/lefthand_vr.dmi and b/icons/mob/items/lefthand_vr.dmi differ
diff --git a/icons/mob/items/righthand_vr.dmi b/icons/mob/items/righthand_vr.dmi
index c9a7af5fb8..9a136dc19d 100644
Binary files a/icons/mob/items/righthand_vr.dmi and b/icons/mob/items/righthand_vr.dmi differ
diff --git a/icons/obj/tools_vr.dmi b/icons/obj/tools_vr.dmi
index 72316467dd..0b8f5f0490 100644
Binary files a/icons/obj/tools_vr.dmi and b/icons/obj/tools_vr.dmi differ
diff --git a/maps/tether/submaps/om_ships/aro2.dmm b/maps/tether/submaps/om_ships/aro2.dmm
index ae008df7eb..650bb8419e 100644
--- a/maps/tether/submaps/om_ships/aro2.dmm
+++ b/maps/tether/submaps/om_ships/aro2.dmm
@@ -1378,10 +1378,7 @@
/area/aro2/storage)
"cO" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/device/sleevemate,
/obj/item/device/universal_translator,
-/obj/item/weapon/cell/device/weapon/recharge/alien,
-/obj/item/device/perfect_tele/alien,
/turf/simulated/floor/tiled/techmaint,
/area/aro2/storage)
"cP" = (
@@ -1596,6 +1593,8 @@
pixel_y = 0;
report_danger_level = 0
},
+/obj/structure/table/rack/shelf/steel,
+/obj/item/device/sleevemate,
/turf/simulated/floor/tiled/techmaint,
/area/aro2/storage)
"dp" = (
@@ -2065,6 +2064,9 @@
name = "east bump";
pixel_x = 24
},
+/obj/structure/table/rack/shelf/steel,
+/obj/item/device/perfect_tele/alien,
+/obj/item/weapon/inducer/hybrid,
/turf/simulated/floor/tiled/techmaint,
/area/aro2/storage)
"ef" = (
diff --git a/vorestation.dme b/vorestation.dme
index 16d776ef7a..7a1b7c71fe 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1166,6 +1166,7 @@
#include "code\game\objects\items\weapons\handcuffs.dm"
#include "code\game\objects\items\weapons\handcuffs_vr.dm"
#include "code\game\objects\items\weapons\improvised_components.dm"
+#include "code\game\objects\items\weapons\inducer_vr.dm"
#include "code\game\objects\items\weapons\manuals.dm"
#include "code\game\objects\items\weapons\manuals_vr.dm"
#include "code\game\objects\items\weapons\mop.dm"
@@ -1174,6 +1175,7 @@
#include "code\game\objects\items\weapons\paiwire.dm"
#include "code\game\objects\items\weapons\policetape.dm"
#include "code\game\objects\items\weapons\RCD.dm"
+#include "code\game\objects\items\weapons\RCD_vr.dm"
#include "code\game\objects\items\weapons\RSF.dm"
#include "code\game\objects\items\weapons\scrolls.dm"
#include "code\game\objects\items\weapons\shields.dm"