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"