diff --git a/code/game/objects/items/devices/translocator_vr.dm b/code/game/objects/items/devices/translocator_vr.dm
new file mode 100644
index 00000000000..a6b4b2583ea
--- /dev/null
+++ b/code/game/objects/items/devices/translocator_vr.dm
@@ -0,0 +1,499 @@
+//The perfect adminboos device?
+/obj/item/device/perfect_tele
+ name = "personal translocator"
+ desc = "Seems absurd, doesn't it? Yet, here we are. Generally considered dangerous contraband unless the user has permission from Central Command."
+ icon = 'icons/obj/device_alt.dmi'
+ icon_state = "hand_tele"
+ w_class = ITEMSIZE_SMALL
+ origin_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_ILLEGAL = 7)
+
+ var/cell_type = /obj/item/weapon/cell/device/weapon
+ var/obj/item/weapon/cell/power_source
+ var/charge_cost = 800 // cell/device/weapon has 2400
+ var/battery_lock = 0 //If set, weapon cannot switch batteries
+
+ var/list/beacons = list()
+ var/ready = 1
+ var/beacons_left = 3
+ var/failure_chance = 5 //Percent
+ var/obj/item/device/perfect_tele_beacon/destination
+ var/datum/effect/effect/system/spark_spread/spk
+ var/list/warned_users = list()
+ var/list/logged_events = list()
+
+/obj/item/device/perfect_tele/New()
+ ..()
+ flags |= NOBLUDGEON
+ if(cell_type)
+ power_source = new cell_type(src)
+ else
+ power_source = new /obj/item/weapon/cell/device(src)
+ spk = new(src)
+ spk.set_up(5, 0, src)
+ spk.attach(src)
+
+/obj/item/device/perfect_tele/Destroy()
+ // Must clear the beacon's backpointer or we won't GC. Someday maybe do something nicer even.
+ for(var/obj/item/device/perfect_tele_beacon/B in beacons)
+ B.tele_hand = null
+ beacons.Cut()
+ QDEL_NULL(power_source)
+ QDEL_NULL(spk)
+ return ..()
+
+/obj/item/device/perfect_tele/update_icon()
+ if(!power_source)
+ icon_state = "[initial(icon_state)]_o"
+ else if(ready && (power_source.check_charge(charge_cost) || power_source.fully_charged()))
+ icon_state = "[initial(icon_state)]"
+ else
+ icon_state = "[initial(icon_state)]_w"
+
+ ..()
+
+/obj/item/device/perfect_tele/attack_hand(mob/user)
+ if(user.get_inactive_hand() == src)
+ unload_ammo(user)
+ else
+ return ..()
+
+/obj/item/device/perfect_tele/proc/unload_ammo(mob/user)
+ if(battery_lock)
+ to_chat(user,"[src] does not have a battery port.")
+ return
+ if(user.get_inactive_hand() == src && power_source)
+ to_chat(user,"You eject \the [power_source] from \the [src].")
+ user.put_in_hands(power_source)
+ power_source = null
+ update_icon()
+ else
+ to_chat(user,"[src] does not have a power cell.")
+
+/obj/item/device/perfect_tele/attack_self(mob/user)
+ if(!(user.ckey in warned_users))
+ warned_users |= user.ckey
+ alert(user,"This device can be easily used to break ERP preferences due to the nature of teleporting \
+ and tele-vore. Make sure you carefully examine someone's OOC prefs before teleporting them if you are \
+ going to use this device for ERP purposes. This device records all warnings given and teleport events for \
+ admin review in case of pref-breaking, so just don't do it.","OOC WARNING")
+
+ var/choice = alert(user,"What do you want to do?","[src]","Create Beacon","Cancel","Target Beacon")
+ switch(choice)
+ if("Create Beacon")
+ if(beacons_left <= 0)
+ alert("The translocator can't support any more beacons!","Error")
+ return
+
+ var/new_name = html_encode(input(user,"New beacon's name (2-20 char):","[src]") as text|null)
+
+ if(length(new_name) > 20 || length(new_name) < 2)
+ alert("Entered name length invalid (must be longer than 2, no more than than 20).","Error")
+ return
+ if(new_name in beacons)
+ alert("No duplicate names, please. '[new_name]' exists already.","Error")
+ return
+
+ var/obj/item/device/perfect_tele_beacon/nb = new(get_turf(src))
+ nb.tele_name = new_name
+ nb.tele_hand = src
+ nb.creator = user.ckey
+ beacons[new_name] = nb
+ beacons_left--
+ if(isliving(user))
+ var/mob/living/L = user
+ L.put_in_any_hand_if_possible(nb)
+
+ if("Target Beacon")
+ if(!beacons.len)
+ to_chat(user,"\The [src] doesn't have any beacons!")
+ else
+ var/target = input("Which beacon do you target?","[src]") in beacons|null
+ if(target && (target in beacons))
+ destination = beacons[target]
+ to_chat(user,"Destination set to '[target]'.")
+ else
+ return
+
+/obj/item/device/perfect_tele/attackby(obj/W, mob/user)
+ if(istype(W,cell_type) && !power_source)
+ power_source = W
+ power_source.update_icon() //Why doesn't a cell do this already? :|
+ user.unEquip(power_source)
+ power_source.forceMove(src)
+ to_chat(user,"You insert \the [power_source] into \the [src].")
+ update_icon()
+
+ else if(istype(W,/obj/item/device/perfect_tele_beacon))
+ var/obj/item/device/perfect_tele_beacon/tb = W
+ if(tb.tele_name in beacons)
+ to_chat(user,"You re-insert \the [tb] into \the [src].")
+ beacons -= tb.tele_name
+ user.unEquip(tb)
+ qdel(tb)
+ beacons_left++
+ else
+ to_chat(user,"\The [tb] doesn't belong to \the [src].")
+ return
+ else
+ ..()
+
+/obj/item/device/perfect_tele/proc/teleport_checks(mob/living/target,mob/living/user)
+ //Uhhuh, need that power source
+ if(!power_source)
+ to_chat(user,"\The [src] has no power source!")
+ return FALSE
+
+ //Check for charge
+ if((!power_source.check_charge(charge_cost)) && (!power_source.fully_charged()))
+ to_chat(user,"\The [src] does not have enough power left!")
+ return FALSE
+
+ //Only mob/living need apply.
+ if(!istype(user) || !istype(target))
+ return FALSE
+
+ //No, you can't teleport buckled people.
+ if(target.buckled)
+ to_chat(user,"The target appears to be attached to something...")
+ return FALSE
+
+ //No, you can't teleport if it's not ready yet.
+ if(!ready)
+ to_chat(user,"\The [src] is still recharging!")
+ return FALSE
+
+ //No, you can't teleport if there's no destination.
+ if(!destination)
+ to_chat(user,"\The [src] doesn't have a current valid destination set!")
+ return FALSE
+
+ //No, you can't teleport if there's a jammer.
+ if(is_jammed(src) || is_jammed(destination))
+ to_chat(user,"\The [src] refuses to teleport you, due to strong interference!")
+ return FALSE
+
+ //No, you can't port to or from away missions. Stupidly complicated check.
+ var/turf/uT = get_turf(user)
+ var/turf/dT = get_turf(destination)
+ var/list/dat = list()
+ dat["z_level_detection"] = using_map.get_map_levels(uT.z)
+
+ if(!uT || !dT)
+ return FALSE
+
+ if( (uT.z != dT.z) && (!(dT.z in dat["z_level_detection"])) )
+ to_chat(user,"\The [src] can't teleport you that far!")
+ return FALSE
+
+ if(uT.block_tele || dT.block_tele)
+ to_chat(user,"Something is interfering with \the [src]!")
+ return FALSE
+
+ //Seems okay to me!
+ return TRUE
+
+/obj/item/device/perfect_tele/afterattack(mob/living/target, mob/living/user, proximity)
+ //No, you can't teleport people from over there.
+ if(!proximity)
+ return
+
+ if(!teleport_checks(target,user))
+ return //The checks proc can send them a message if it wants.
+
+ //Bzzt.
+ ready = 0
+ power_source.use(charge_cost)
+
+ //Failure chance
+ if(prob(failure_chance) && beacons.len >= 2)
+ var/list/wrong_choices = beacons - destination.tele_name
+ var/wrong_name = pick(wrong_choices)
+ destination = beacons[wrong_name]
+ to_chat(user,"\The [src] malfunctions and sends you to the wrong beacon!")
+
+ //Destination beacon vore checking
+ var/turf/dT = get_turf(destination)
+ var/atom/real_dest = dT
+
+ var/atom/real_loc = destination.loc
+ if(isbelly(real_loc))
+ real_dest = real_loc
+ if(isliving(real_loc))
+ var/mob/living/L = real_loc
+ if(L.vore_selected)
+ real_dest = L.vore_selected
+ else if(L.vore_organs.len)
+ real_dest = pick(L.vore_organs)
+
+ //Confirm televore
+ var/televored = FALSE
+ if(isbelly(real_dest))
+ var/obj/belly/B = real_dest
+ if(!target.can_be_drop_prey && B.owner != user)
+ to_chat(target,"\The [src] narrowly avoids teleporting you right into \a [lowertext(real_dest.name)]!")
+ real_dest = dT //Nevermind!
+ else
+ televored = TRUE
+ to_chat(target,"\The [src] teleports you right into \a [lowertext(real_dest.name)]!")
+
+ //Phase-out effect
+ phase_out(target,get_turf(target))
+
+ //Move them
+ target.forceMove(real_dest)
+
+ //Phase-in effect
+ phase_in(target,get_turf(target))
+
+ //And any friends!
+ for(var/obj/item/weapon/grab/G in target.contents)
+ if(G.affecting && (G.state >= GRAB_AGGRESSIVE))
+
+ //Phase-out effect for grabbed person
+ phase_out(G.affecting,get_turf(G.affecting))
+
+ //Move them, and televore if necessary
+ G.affecting.forceMove(real_dest)
+ if(televored)
+ to_chat(target,"\The [src] teleports you right into \a [lowertext(real_dest.name)]!")
+
+ //Phase-in effect for grabbed person
+ phase_in(G.affecting,get_turf(G.affecting))
+
+ update_icon()
+ spawn(30 SECONDS)
+ ready = 1
+ update_icon()
+
+ logged_events["[world.time]"] = "[user] teleported [target] to [real_dest] [televored ? "(Belly: [lowertext(real_dest.name)])" : null]"
+
+/obj/item/device/perfect_tele/proc/phase_out(var/mob/M,var/turf/T)
+
+ if(!M || !T)
+ return
+
+ spk.set_up(5, 0, M)
+ spk.attach(M)
+ playsound(T, "sparks", 50, 1)
+ anim(T,M,'icons/mob/mob.dmi',,"phaseout",,M.dir)
+
+/obj/item/device/perfect_tele/proc/phase_in(var/mob/M,var/turf/T)
+
+ if(!M || !T)
+ return
+
+ spk.start()
+ playsound(T, 'sound/effects/phasein.ogg', 25, 1)
+ playsound(T, 'sound/effects/sparks2.ogg', 50, 1)
+ anim(T,M,'icons/mob/mob.dmi',,"phasein",,M.dir)
+ spk.set_up(5, 0, src)
+ spk.attach(src)
+
+/obj/item/device/perfect_tele_beacon
+ name = "translocator beacon"
+ desc = "That's unusual."
+ icon = 'icons/obj/device_alt.dmi'
+ icon_state = "motion2"
+ w_class = ITEMSIZE_TINY
+
+ var/tele_name
+ var/obj/item/device/perfect_tele/tele_hand
+ var/creator
+ var/warned_users = list()
+ var/tele_network = null
+
+/obj/item/device/perfect_tele_beacon/New()
+ ..()
+ flags |= NOBLUDGEON
+
+/obj/item/device/perfect_tele_beacon/Destroy()
+ tele_name = null
+ tele_hand = null
+ return ..()
+
+/obj/item/device/perfect_tele_beacon/attack_hand(mob/user)
+ if((user.ckey != creator) && !(user.ckey in warned_users))
+ warned_users |= user.ckey
+ var/choice = alert(user,"This device is a translocator beacon. Having it on your person may mean that anyone \
+ who teleports to this beacon gets teleported into your selected vore-belly. If you are prey-only \
+ or don't wish to potentially have a random person teleported into you, it's suggested that you \
+ not carry this around.","OOC WARNING","Take It","Leave It")
+ if(choice == "Leave It")
+ return
+
+ ..()
+
+/obj/item/device/perfect_tele_beacon/stationary
+ name = "stationary translocator beacon"
+ icon = 'icons/obj/radio_vr.dmi'
+ icon_state = "floor_beacon"
+ w_class = ITEMSIZE_HUGE
+ anchored = 1
+
+GLOBAL_LIST_BOILERPLATE(premade_tele_beacons, /obj/item/device/perfect_tele_beacon/stationary)
+
+/obj/item/device/perfect_tele_beacon/attack_self(mob/user)
+ if(!isliving(user))
+ return
+ var/mob/living/L = user
+ var/confirm = alert(user, "You COULD eat the beacon...", "Eat beacon?", "Eat it!", "No, thanks.")
+ if(confirm == "Eat it!")
+ var/obj/belly/bellychoice = input("Which belly?","Select A Belly") as null|anything in L.vore_organs
+ if(bellychoice)
+ user.visible_message("[user] is trying to stuff \the [src] into [user.gender == MALE ? "his" : user.gender == FEMALE ? "her" : "their"] [bellychoice]!","You begin putting \the [src] into your [bellychoice]!")
+ if(do_after(user,5 SECONDS,src))
+ user.unEquip(src)
+ forceMove(bellychoice)
+ user.visible_message("[user] eats a telebeacon!","You eat the the beacon!")
+
+// A single-beacon variant for use by miners (or whatever)
+/obj/item/device/perfect_tele/one_beacon
+ name = "mini-translocator"
+ desc = "A more limited translocator with a single beacon, useful for some things, like setting the mining department on fire accidentally. Legal for use in the pursuit of NanoTrasen interests, namely mining and exploration."
+ icon_state = "minitrans"
+ beacons_left = 1 //Just one
+ cell_type = /obj/item/weapon/cell/device
+ origin_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5)
+
+/*
+/obj/item/device/perfect_tele/one_beacon/teleport_checks(mob/living/target,mob/living/user)
+ var/turf/T = get_turf(destination)
+ if(T && user.z != T.z)
+ to_chat(user,"\The [src] is too far away from the beacon. Try getting closer first!")
+ return FALSE
+ return ..()
+*/
+
+/obj/item/device/perfect_tele/alien
+ name = "alien translocator"
+ desc = "This strange device allows one to teleport people and objects across large distances."
+
+ cell_type = /obj/item/weapon/cell/device/weapon/recharge/alien
+ charge_cost = 400
+ beacons_left = 6
+ failure_chance = 0 //Percent
+
+/obj/item/device/perfect_tele/alien/teleport_checks(mob/living/target,mob/living/user)
+ //Uhhuh, need that power source
+ if(!power_source)
+ to_chat(user,"\The [src] has no power source!")
+ return FALSE
+
+ //Check for charge
+ if((!power_source.check_charge(charge_cost)) && (!power_source.fully_charged()))
+ to_chat(user,"\The [src] does not have enough power left!")
+ return FALSE
+
+ //Only mob/living need apply.
+ if(!istype(user) || !istype(target))
+ return FALSE
+
+ //No, you can't teleport buckled people.
+ if(target.buckled)
+ to_chat(user,"The target appears to be attached to something...")
+ return FALSE
+
+ //No, you can't teleport if it's not ready yet.
+ if(!ready)
+ to_chat(user,"\The [src] is still recharging!")
+ return FALSE
+
+ //No, you can't teleport if there's no destination.
+ if(!destination)
+ to_chat(user,"\The [src] doesn't have a current valid destination set!")
+ return FALSE
+
+ //Seems okay to me!
+ return TRUE
+
+/obj/item/device/perfect_tele/frontier
+ icon_state = "minitrans"
+ beacons_left = 1 //Just one
+ battery_lock = 1
+ unacidable = 1
+ var/loc_network = null
+ var/phase_power = 75
+ var/recharging = 0
+
+/obj/item/device/perfect_tele/frontier/unload_ammo(var/mob/user)
+ if(recharging)
+ return
+ recharging = 1
+ update_icon()
+ user.visible_message("[user] opens \the [src] and starts pumping the handle.", \
+ "You open \the [src] and start pumping the handle.")
+ while(recharging)
+ if(!do_after(user, 10, src))
+ break
+ playsound(get_turf(src),'sound/items/change_drill.ogg',25,1)
+ if(power_source.give(phase_power) < phase_power)
+ break
+
+ recharging = 0
+ update_icon()
+
+/obj/item/device/perfect_tele/frontier/update_icon()
+ if(recharging)
+ icon_state = "[initial(icon_state)]_o"
+ update_held_icon()
+ return
+ ..()
+
+/obj/item/device/perfect_tele/frontier/staff
+ name = "centcom translocator"
+ desc = "Similar to translocator technology, however, most of its destinations are hardcoded."
+ loc_network = "centcom"
+
+/obj/item/device/perfect_tele/frontier/staff/New()
+ ..()
+ for(var/obj/item/device/perfect_tele_beacon/stationary/nb in premade_tele_beacons)
+ if(nb.tele_network == loc_network)
+ beacons[nb.tele_name] = nb
+
+/obj/item/device/perfect_tele/frontier/staff/teleport_checks(mob/living/target,mob/living/user)
+ //Uhhuh, need that power source
+ if(!power_source)
+ to_chat(user,"\The [src] has no power source!")
+ return FALSE
+
+ //Check for charge
+ if((!power_source.check_charge(charge_cost)) && (!power_source.fully_charged()))
+ to_chat(user,"\The [src] does not have enough power left!")
+ return FALSE
+
+ //Only mob/living need apply.
+ if(!istype(user) || !istype(target))
+ return FALSE
+
+ //No, you can't teleport buckled people.
+ if(target.buckled)
+ to_chat(user,"The target appears to be attached to something...")
+ return FALSE
+
+ //No, you can't teleport if it's not ready yet.
+ if(!ready)
+ to_chat(user,"\The [src] is still recharging!")
+ return FALSE
+
+ //No, you can't teleport if there's no destination.
+ if(!destination)
+ to_chat(user,"\The [src] doesn't have a current valid destination set!")
+ return FALSE
+
+ //No, you can't teleport if there's a jammer.
+ if(is_jammed(src) || is_jammed(destination))
+ to_chat(user,"\The [src] refuses to teleport you, due to strong interference!")
+ return FALSE
+
+ //Can port to and from away areas (required for this to work) but teleporter blockers block it
+ var/turf/uT = get_turf(user)
+ var/turf/dT = get_turf(destination)
+ if(!uT || !dT)
+ return FALSE
+
+ if(uT.block_tele || dT.block_tele)
+ to_chat(user,"Something is interfering with \the [src]!")
+ return FALSE
+
+ //Seems okay to me!
+ return TRUE
diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm
index 25dfc5d6c7e..3541ddca4f4 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -1235,394 +1235,6 @@
slot_flags = SLOT_TIE
slot = ACCESSORY_SLOT_DECOR
-//The perfect adminboos device?
-/obj/item/device/perfect_tele
- name = "personal translocator"
- desc = "Seems absurd, doesn't it? Yet, here we are. Generally considered dangerous contraband unless the user has permission from Central Command."
- icon = 'icons/obj/device_alt.dmi'
- icon_state = "hand_tele"
- w_class = ITEMSIZE_SMALL
- origin_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_ILLEGAL = 7)
-
- var/cell_type = /obj/item/weapon/cell/device/weapon
- var/obj/item/weapon/cell/power_source
- var/charge_cost = 800 // cell/device/weapon has 2400
-
- var/list/beacons = list()
- var/ready = 1
- var/beacons_left = 3
- var/failure_chance = 5 //Percent
- var/obj/item/device/perfect_tele_beacon/destination
- var/datum/effect/effect/system/spark_spread/spk
- var/list/warned_users = list()
- var/list/logged_events = list()
-
-/obj/item/device/perfect_tele/New()
- ..()
- flags |= NOBLUDGEON
- if(cell_type)
- power_source = new cell_type(src)
- else
- power_source = new /obj/item/weapon/cell/device(src)
- spk = new(src)
- spk.set_up(5, 0, src)
- spk.attach(src)
-
-/obj/item/device/perfect_tele/Destroy()
- // Must clear the beacon's backpointer or we won't GC. Someday maybe do something nicer even.
- for(var/obj/item/device/perfect_tele_beacon/B in beacons)
- B.tele_hand = null
- beacons.Cut()
- QDEL_NULL(power_source)
- QDEL_NULL(spk)
- return ..()
-
-/obj/item/device/perfect_tele/update_icon()
- if(!power_source)
- icon_state = "[initial(icon_state)]_o"
- else if(ready && (power_source.check_charge(charge_cost) || power_source.fully_charged()))
- icon_state = "[initial(icon_state)]"
- else
- icon_state = "[initial(icon_state)]_w"
-
- ..()
-
-/obj/item/device/perfect_tele/attack_hand(mob/user)
- if(user.get_inactive_hand() == src && power_source)
- to_chat(user,"You eject \the [power_source] from \the [src].")
- user.put_in_hands(power_source)
- power_source = null
- update_icon()
- else
- return ..()
-
-/obj/item/device/perfect_tele/attack_self(mob/user)
- if(!(user.ckey in warned_users))
- warned_users |= user.ckey
- alert(user,"This device can be easily used to break ERP preferences due to the nature of teleporting \
- and tele-vore. Make sure you carefully examine someone's OOC prefs before teleporting them if you are \
- going to use this device for ERP purposes. This device records all warnings given and teleport events for \
- admin review in case of pref-breaking, so just don't do it.","OOC WARNING")
-
- var/choice = alert(user,"What do you want to do?","[src]","Create Beacon","Cancel","Target Beacon")
- switch(choice)
- if("Create Beacon")
- if(beacons_left <= 0)
- alert("The translocator can't support any more beacons!","Error")
- return
-
- var/new_name = html_encode(input(user,"New beacon's name (2-20 char):","[src]") as text|null)
-
- if(length(new_name) > 20 || length(new_name) < 2)
- alert("Entered name length invalid (must be longer than 2, no more than than 20).","Error")
- return
- if(new_name in beacons)
- alert("No duplicate names, please. '[new_name]' exists already.","Error")
- return
-
- var/obj/item/device/perfect_tele_beacon/nb = new(get_turf(src))
- nb.tele_name = new_name
- nb.tele_hand = src
- nb.creator = user.ckey
- beacons[new_name] = nb
- beacons_left--
- if(isliving(user))
- var/mob/living/L = user
- L.put_in_any_hand_if_possible(nb)
-
- if("Target Beacon")
- if(!beacons.len)
- to_chat(user,"\The [src] doesn't have any beacons!")
- else
- var/target = input("Which beacon do you target?","[src]") in beacons|null
- if(target && (target in beacons))
- destination = beacons[target]
- to_chat(user,"Destination set to '[target]'.")
- else
- return
-
-/obj/item/device/perfect_tele/attackby(obj/W, mob/user)
- if(istype(W,cell_type) && !power_source)
- power_source = W
- power_source.update_icon() //Why doesn't a cell do this already? :|
- user.unEquip(power_source)
- power_source.forceMove(src)
- to_chat(user,"You insert \the [power_source] into \the [src].")
- update_icon()
-
- else if(istype(W,/obj/item/device/perfect_tele_beacon))
- var/obj/item/device/perfect_tele_beacon/tb = W
- if(tb.tele_name in beacons)
- to_chat(user,"You re-insert \the [tb] into \the [src].")
- beacons -= tb.tele_name
- user.unEquip(tb)
- qdel(tb)
- beacons_left++
- else
- to_chat(user,"\The [tb] doesn't belong to \the [src].")
- return
- else
- ..()
-
-/obj/item/device/perfect_tele/proc/teleport_checks(mob/living/target,mob/living/user)
- //Uhhuh, need that power source
- if(!power_source)
- to_chat(user,"\The [src] has no power source!")
- return FALSE
-
- //Check for charge
- if((!power_source.check_charge(charge_cost)) && (!power_source.fully_charged()))
- to_chat(user,"\The [src] does not have enough power left!")
- return FALSE
-
- //Only mob/living need apply.
- if(!istype(user) || !istype(target))
- return FALSE
-
- //No, you can't teleport buckled people.
- if(target.buckled)
- to_chat(user,"The target appears to be attached to something...")
- return FALSE
-
- //No, you can't teleport if it's not ready yet.
- if(!ready)
- to_chat(user,"\The [src] is still recharging!")
- return FALSE
-
- //No, you can't teleport if there's no destination.
- if(!destination)
- to_chat(user,"\The [src] doesn't have a current valid destination set!")
- return FALSE
-
- //No, you can't teleport if there's a jammer.
- if(is_jammed(src) || is_jammed(destination))
- to_chat(user,"\The [src] refuses to teleport you, due to strong interference!")
- return FALSE
-
- //No, you can't port to or from away missions. Stupidly complicated check.
- var/turf/uT = get_turf(user)
- var/turf/dT = get_turf(destination)
- var/list/dat = list()
- dat["z_level_detection"] = using_map.get_map_levels(uT.z)
-
- if(!uT || !dT)
- return FALSE
-
- if( (uT.z != dT.z) && (!(dT.z in dat["z_level_detection"])) )
- to_chat(user,"\The [src] can't teleport you that far!")
- return FALSE
-
- if(uT.block_tele || dT.block_tele)
- to_chat(user,"Something is interfering with \the [src]!")
- return FALSE
-
- //Seems okay to me!
- return TRUE
-
-/obj/item/device/perfect_tele/afterattack(mob/living/target, mob/living/user, proximity)
- //No, you can't teleport people from over there.
- if(!proximity)
- return
-
- if(!teleport_checks(target,user))
- return //The checks proc can send them a message if it wants.
-
- //Bzzt.
- ready = 0
- power_source.use(charge_cost)
-
- //Failure chance
- if(prob(failure_chance) && beacons.len >= 2)
- var/list/wrong_choices = beacons - destination.tele_name
- var/wrong_name = pick(wrong_choices)
- destination = beacons[wrong_name]
- to_chat(user,"\The [src] malfunctions and sends you to the wrong beacon!")
-
- //Destination beacon vore checking
- var/turf/dT = get_turf(destination)
- var/atom/real_dest = dT
-
- var/atom/real_loc = destination.loc
- if(isbelly(real_loc))
- real_dest = real_loc
- if(isliving(real_loc))
- var/mob/living/L = real_loc
- if(L.vore_selected)
- real_dest = L.vore_selected
- else if(L.vore_organs.len)
- real_dest = pick(L.vore_organs)
-
- //Confirm televore
- var/televored = FALSE
- if(isbelly(real_dest))
- var/obj/belly/B = real_dest
- if(!target.can_be_drop_prey && B.owner != user)
- to_chat(target,"\The [src] narrowly avoids teleporting you right into \a [lowertext(real_dest.name)]!")
- real_dest = dT //Nevermind!
- else
- televored = TRUE
- to_chat(target,"\The [src] teleports you right into \a [lowertext(real_dest.name)]!")
-
- //Phase-out effect
- phase_out(target,get_turf(target))
-
- //Move them
- target.forceMove(real_dest)
-
- //Phase-in effect
- phase_in(target,get_turf(target))
-
- //And any friends!
- for(var/obj/item/weapon/grab/G in target.contents)
- if(G.affecting && (G.state >= GRAB_AGGRESSIVE))
-
- //Phase-out effect for grabbed person
- phase_out(G.affecting,get_turf(G.affecting))
-
- //Move them, and televore if necessary
- G.affecting.forceMove(real_dest)
- if(televored)
- to_chat(target,"\The [src] teleports you right into \a [lowertext(real_dest.name)]!")
-
- //Phase-in effect for grabbed person
- phase_in(G.affecting,get_turf(G.affecting))
-
- update_icon()
- spawn(30 SECONDS)
- ready = 1
- update_icon()
-
- logged_events["[world.time]"] = "[user] teleported [target] to [real_dest] [televored ? "(Belly: [lowertext(real_dest.name)])" : null]"
-
-/obj/item/device/perfect_tele/proc/phase_out(var/mob/M,var/turf/T)
-
- if(!M || !T)
- return
-
- spk.set_up(5, 0, M)
- spk.attach(M)
- playsound(T, "sparks", 50, 1)
- anim(T,M,'icons/mob/mob.dmi',,"phaseout",,M.dir)
-
-/obj/item/device/perfect_tele/proc/phase_in(var/mob/M,var/turf/T)
-
- if(!M || !T)
- return
-
- spk.start()
- playsound(T, 'sound/effects/phasein.ogg', 25, 1)
- playsound(T, 'sound/effects/sparks2.ogg', 50, 1)
- anim(T,M,'icons/mob/mob.dmi',,"phasein",,M.dir)
- spk.set_up(5, 0, src)
- spk.attach(src)
-
-/obj/item/device/perfect_tele_beacon
- name = "translocator beacon"
- desc = "That's unusual."
- icon = 'icons/obj/device_alt.dmi'
- icon_state = "motion2"
- w_class = ITEMSIZE_TINY
-
- var/tele_name
- var/obj/item/device/perfect_tele/tele_hand
- var/creator
- var/warned_users = list()
-
-/obj/item/device/perfect_tele_beacon/New()
- ..()
- flags |= NOBLUDGEON
-
-/obj/item/device/perfect_tele_beacon/Destroy()
- tele_name = null
- tele_hand = null
- return ..()
-
-/obj/item/device/perfect_tele_beacon/attack_hand(mob/user)
- if((user.ckey != creator) && !(user.ckey in warned_users))
- warned_users |= user.ckey
- var/choice = alert(user,"This device is a translocator beacon. Having it on your person may mean that anyone \
- who teleports to this beacon gets teleported into your selected vore-belly. If you are prey-only \
- or don't wish to potentially have a random person teleported into you, it's suggested that you \
- not carry this around.","OOC WARNING","Take It","Leave It")
- if(choice == "Leave It")
- return
-
- ..()
-
-/obj/item/device/perfect_tele_beacon/attack_self(mob/user)
- if(!isliving(user))
- return
- var/mob/living/L = user
- var/confirm = alert(user, "You COULD eat the beacon...", "Eat beacon?", "Eat it!", "No, thanks.")
- if(confirm == "Eat it!")
- var/obj/belly/bellychoice = input("Which belly?","Select A Belly") as null|anything in L.vore_organs
- if(bellychoice)
- user.visible_message("[user] is trying to stuff \the [src] into [user.gender == MALE ? "his" : user.gender == FEMALE ? "her" : "their"] [bellychoice]!","You begin putting \the [src] into your [bellychoice]!")
- if(do_after(user,5 SECONDS,src))
- user.unEquip(src)
- forceMove(bellychoice)
- user.visible_message("[user] eats a telebeacon!","You eat the the beacon!")
-
-// A single-beacon variant for use by miners (or whatever)
-/obj/item/device/perfect_tele/one_beacon
- name = "mini-translocator"
- desc = "A more limited translocator with a single beacon, useful for some things, like setting the mining department on fire accidentally. Legal for use in the pursuit of NanoTrasen interests, namely mining and exploration."
- icon_state = "minitrans"
- beacons_left = 1 //Just one
- cell_type = /obj/item/weapon/cell/device
- origin_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5)
-
-/*
-/obj/item/device/perfect_tele/one_beacon/teleport_checks(mob/living/target,mob/living/user)
- var/turf/T = get_turf(destination)
- if(T && user.z != T.z)
- to_chat(user,"\The [src] is too far away from the beacon. Try getting closer first!")
- return FALSE
- return ..()
-*/
-
-/obj/item/device/perfect_tele/admin
- name = "alien translocator"
- desc = "This strange device allows one to teleport people and objects across large distances."
-
- cell_type = /obj/item/weapon/cell/device/weapon/recharge/alien
- charge_cost = 400
- beacons_left = 6
- failure_chance = 0 //Percent
-
-/obj/item/device/perfect_tele/admin/teleport_checks(mob/living/target,mob/living/user)
- //Uhhuh, need that power source
- if(!power_source)
- to_chat(user,"\The [src] has no power source!")
- return FALSE
-
- //Check for charge
- if((!power_source.check_charge(charge_cost)) && (!power_source.fully_charged()))
- to_chat(user,"\The [src] does not have enough power left!")
- return FALSE
-
- //Only mob/living need apply.
- if(!istype(user) || !istype(target))
- return FALSE
-
- //No, you can't teleport buckled people.
- if(target.buckled)
- to_chat(user,"The target appears to be attached to something...")
- return FALSE
-
- //No, you can't teleport if it's not ready yet.
- if(!ready)
- to_chat(user,"\The [src] is still recharging!")
- return FALSE
-
- //No, you can't teleport if there's no destination.
- if(!destination)
- to_chat(user,"\The [src] doesn't have a current valid destination set!")
- return FALSE
-
- //Seems okay to me!
- return TRUE
-
//InterroLouis: Ruda Lizden
/obj/item/clothing/accessory/badge/holo/detective/ruda
name = "Hisstective's Badge"
diff --git a/icons/obj/radio_vr.dmi b/icons/obj/radio_vr.dmi
index 77d695cf23c..88d6011a7fd 100644
Binary files a/icons/obj/radio_vr.dmi and b/icons/obj/radio_vr.dmi differ
diff --git a/maps/tether/tether-10-colony.dmm b/maps/tether/tether-10-colony.dmm
index a461b3926bc..b89733b8467 100644
--- a/maps/tether/tether-10-colony.dmm
+++ b/maps/tether/tether-10-colony.dmm
@@ -3355,6 +3355,14 @@
name = "plating"
},
/area/centcom/control)
+"gi" = (
+/obj/structure/table/woodentable,
+/obj/item/modular_computer/laptop/preset/custom_loadout/elite,
+/obj/machinery/status_display{
+ pixel_y = -29
+ },
+/turf/simulated/floor/wood,
+/area/houseboat)
"gj" = (
/obj/machinery/computer/HolodeckControl/holodorm/one,
/obj/effect/floor_decal/spline/plain{
@@ -4482,6 +4490,11 @@
},
/turf/unsimulated/floor/steel,
/area/centcom/evac)
+"iR" = (
+/obj/structure/table/steel_reinforced,
+/obj/item/weapon/storage/box/gloves,
+/turf/simulated/floor/tiled/white,
+/area/houseboat)
"iT" = (
/obj/structure/table/rack,
/obj/item/clothing/under/color/red,
@@ -4715,9 +4728,7 @@
/turf/unsimulated/floor/steel,
/area/centcom/evac)
"jt" = (
-/obj/structure/table/rack/shelf,
-/obj/item/device/defib_kit/compact/combat/loaded,
-/obj/item/device/defib_kit/compact/combat/loaded,
+/obj/structure/closet/secure_closet/medical3,
/turf/simulated/floor/tiled/white,
/area/houseboat)
"ju" = (
@@ -5739,6 +5750,27 @@
},
/turf/unsimulated/floor/steel,
/area/centcom/security)
+"lk" = (
+/obj/structure/table/rack/shelf/steel,
+/obj/item/weapon/storage/box/evidence,
+/obj/item/weapon/storage/box/handcuffs{
+ pixel_x = 6;
+ pixel_y = -2
+ },
+/obj/item/clothing/accessory/storage/pouches/large/blue,
+/obj/item/clothing/accessory/storage/pouches/large/blue,
+/obj/item/clothing/accessory/storage/pouches/large/blue,
+/obj/item/clothing/accessory/storage/pouches/large/blue,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
+"lm" = (
+/obj/structure/table/woodentable,
+/obj/item/modular_computer/laptop/preset/custom_loadout/elite,
+/obj/machinery/status_display{
+ pixel_y = 29
+ },
+/turf/simulated/floor/wood,
+/area/houseboat)
"lo" = (
/obj/item/weapon/stool/padded,
/turf/unsimulated/floor/steel{
@@ -16133,7 +16165,6 @@
/turf/simulated/floor/bluegrid,
/area/houseboat)
"Du" = (
-/obj/structure/table/rack/shelf,
/obj/item/weapon/gun/energy/gun,
/obj/item/weapon/gun/energy/gun,
/obj/item/weapon/gun/energy/gun,
@@ -16146,6 +16177,7 @@
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/cell/device/weapon,
+/obj/structure/closet/secure_closet/guncabinet,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"Dx" = (
@@ -16157,11 +16189,7 @@
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/specialops/centcom)
"Dy" = (
-/obj/structure/table/rack/shelf,
-/obj/item/device/healthanalyzer/advanced,
-/obj/item/device/healthanalyzer/advanced,
-/obj/item/device/healthanalyzer/advanced,
-/obj/item/device/healthanalyzer/advanced,
+/obj/structure/closet/secure_closet/sar,
/turf/simulated/floor/tiled/white,
/area/houseboat)
"DB" = (
@@ -16191,6 +16219,13 @@
/obj/machinery/cell_charger,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"DQ" = (
+/obj/structure/closet/wardrobe/ert,
+/obj/item/weapon/storage/box/survival/comp{
+ starts_with = list(/obj/item/weapon/tool/prybar/red,/obj/item/clothing/glasses/goggles,/obj/item/weapon/reagent_containers/hypospray/autoinjector,/obj/item/stack/medical/bruise_pack,/obj/item/device/flashlight/glowstick,/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency/oxygen/engi)
+ },
+/turf/simulated/floor/wood,
+/area/houseboat)
"DT" = (
/obj/structure/table/rack/shelf,
/obj/item/rig_module/device/drill,
@@ -16224,8 +16259,14 @@
/area/houseboat)
"Ec" = (
/obj/structure/table/rack/shelf,
-/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
-/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
+/obj/item/device/healthanalyzer/advanced,
+/obj/item/device/healthanalyzer/advanced,
+/obj/item/device/healthanalyzer/advanced,
+/obj/item/device/healthanalyzer/advanced,
+/obj/item/weapon/reagent_containers/hypospray,
+/obj/item/weapon/reagent_containers/hypospray,
+/obj/item/weapon/reagent_containers/hypospray,
+/obj/item/weapon/reagent_containers/hypospray,
/turf/simulated/floor/tiled/white,
/area/houseboat)
"En" = (
@@ -16272,6 +16313,14 @@
},
/turf/simulated/floor/tiled/steel_grid,
/area/houseboat)
+"EH" = (
+/obj/structure/table/rack/shelf/steel,
+/obj/item/clothing/glasses/hud/security,
+/obj/item/clothing/glasses/hud/security,
+/obj/item/clothing/glasses/hud/security,
+/obj/item/clothing/glasses/hud/security,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"EI" = (
/obj/structure/table/rack,
/obj/item/weapon/gun/launcher/rocket,
@@ -16322,6 +16371,17 @@
"Fg" = (
/turf/simulated/floor/tiled/steel_grid,
/area/houseboat)
+"Fh" = (
+/obj/structure/table/steel_reinforced,
+/obj/machinery/chemical_dispenser/bar_alc/full,
+/turf/simulated/floor/wood,
+/area/houseboat)
+"Fi" = (
+/obj/structure/bed/chair/comfy/black{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"Fj" = (
/obj/machinery/power/emitter,
/turf/unsimulated/floor{
@@ -16329,7 +16389,6 @@
},
/area/centcom/control)
"Fl" = (
-/obj/structure/table/rack/shelf,
/obj/item/weapon/gun/energy/laser,
/obj/item/weapon/gun/energy/laser,
/obj/item/weapon/gun/energy/laser,
@@ -16342,6 +16401,7 @@
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/cell/device/weapon,
+/obj/structure/closet/secure_closet/guncabinet,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"Fo" = (
@@ -16447,6 +16507,10 @@
name = "Holodeck Projector Floor"
},
/area/houseboat)
+"Gd" = (
+/obj/structure/bed/chair/office/dark,
+/turf/simulated/floor/wood,
+/area/houseboat)
"Ge" = (
/obj/machinery/seed_storage/xenobotany,
/turf/simulated/floor/tiled/techmaint,
@@ -16478,8 +16542,11 @@
icon_state = "dark"
},
/area/centcom/control)
+"Gp" = (
+/obj/machinery/chem_master/condimaster,
+/turf/simulated/floor/tiled/white,
+/area/houseboat)
"Gs" = (
-/obj/structure/table/rack/shelf,
/obj/item/ammo_magazine/m9mm/large/preban,
/obj/item/ammo_magazine/m9mm/large/preban,
/obj/item/ammo_magazine/m9mm/large/preban,
@@ -16492,17 +16559,13 @@
/obj/item/weapon/gun/projectile/p92x,
/obj/item/weapon/gun/projectile/p92x,
/obj/item/weapon/gun/projectile/p92x,
+/obj/structure/closet/secure_closet/guncabinet,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"Gu" = (
/obj/machinery/door/airlock/highsecurity,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
-"Gy" = (
-/obj/machinery/cooker/candy,
-/obj/structure/table/steel_reinforced,
-/turf/simulated/floor/tiled/white,
-/area/houseboat)
"GB" = (
/obj/structure/table/steel_reinforced,
/obj/item/device/camera,
@@ -16540,6 +16603,10 @@
},
/turf/unsimulated/floor/steel,
/area/centcom/living)
+"GX" = (
+/obj/machinery/vending/fitness,
+/turf/simulated/floor/wood,
+/area/houseboat)
"GY" = (
/obj/structure/bed/chair/shuttle{
dir = 8
@@ -16739,7 +16806,6 @@
/turf/simulated/floor/tiled/white,
/area/centcom/medical)
"Iv" = (
-/obj/structure/table/rack/shelf,
/obj/item/weapon/gun/energy/frontier/locked/carbine,
/obj/item/weapon/gun/energy/frontier/locked/carbine,
/obj/item/weapon/gun/energy/frontier/locked/carbine,
@@ -16748,6 +16814,7 @@
/obj/item/weapon/gun/energy/frontier/locked/holdout,
/obj/item/weapon/gun/energy/frontier/locked/holdout,
/obj/item/weapon/gun/energy/frontier/locked/holdout,
+/obj/structure/closet/secure_closet/guncabinet,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"Ix" = (
@@ -16786,7 +16853,6 @@
/turf/simulated/floor/tiled/white,
/area/houseboat)
"ID" = (
-/obj/structure/table/rack/shelf,
/obj/item/weapon/storage/box/flashshells,
/obj/item/weapon/storage/box/flashshells,
/obj/item/weapon/storage/box/stunshells,
@@ -16805,6 +16871,7 @@
/obj/item/weapon/storage/box/shotgunshells/large,
/obj/item/weapon/gun/projectile/shotgun/pump/combat,
/obj/item/weapon/gun/projectile/shotgun/pump/combat,
+/obj/structure/closet/secure_closet/guncabinet,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"IH" = (
@@ -16836,6 +16903,12 @@
},
/turf/unsimulated/floor/steel,
/area/centcom/evac)
+"Je" = (
+/obj/structure/bed/chair/comfy/black{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"Jk" = (
/obj/machinery/computer/gyrotron_control,
/turf/simulated/floor/tiled/steel_grid,
@@ -16907,6 +16980,13 @@
icon_state = "dark"
},
/area/centcom/specops)
+"JM" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/table/bench/steel,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"JN" = (
/obj/structure/table/steel_reinforced,
/obj/item/weapon/storage/box/pillbottles,
@@ -16915,10 +16995,22 @@
/obj/item/weapon/storage/box/syringes,
/obj/item/weapon/storage/box/syringes,
/obj/item/weapon/tool/screwdriver,
+/obj/item/weapon/storage/box/pillbottles,
+/obj/item/weapon/storage/box/pillbottles,
/turf/simulated/floor/tiled/white,
/area/houseboat)
"JR" = (
/obj/structure/table/rack/shelf,
+/obj/item/clothing/accessory/storage/white_vest,
+/obj/item/clothing/accessory/storage/white_vest,
+/obj/item/clothing/accessory/storage/white_vest,
+/obj/item/clothing/accessory/storage/white_vest,
+/obj/item/clothing/accessory/storage/white_drop_pouches,
+/obj/item/clothing/accessory/storage/white_drop_pouches,
+/obj/item/clothing/accessory/storage/white_drop_pouches,
+/obj/item/clothing/accessory/storage/white_drop_pouches,
+/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
+/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
/turf/simulated/floor/tiled/white,
/area/houseboat)
"JV" = (
@@ -17100,6 +17192,22 @@
},
/turf/unsimulated/floor/steel,
/area/centcom/living)
+"KP" = (
+/obj/machinery/biogenerator,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
+"KV" = (
+/obj/structure/table/rack/shelf/steel,
+/obj/item/weapon/storage/box/flashbangs{
+ pixel_x = -2;
+ pixel_y = -2
+ },
+/obj/item/weapon/cell/device/weapon,
+/obj/item/weapon/cell/device/weapon,
+/obj/item/weapon/cell/device/weapon,
+/obj/item/weapon/cell/device/weapon,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"KY" = (
/obj/effect/floor_decal/derelict/d15,
/turf/unsimulated/floor/steel,
@@ -17127,6 +17235,14 @@
/obj/structure/table/steel_reinforced,
/turf/simulated/floor/tiled/white,
/area/houseboat)
+"Ll" = (
+/obj/structure/closet/secure_closet/detective,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
+"Lo" = (
+/obj/machinery/vending/snack,
+/turf/simulated/floor/wood,
+/area/houseboat)
"Ls" = (
/obj/machinery/disposal,
/turf/simulated/floor/tiled/white,
@@ -17186,6 +17302,16 @@
/obj/structure/table/steel_reinforced,
/turf/simulated/floor/tiled/white,
/area/houseboat)
+"Lz" = (
+/obj/structure/closet/crate/freezer/rations,
+/obj/random/mre,
+/obj/random/mre,
+/obj/random/mre,
+/obj/random/mre,
+/obj/random/mre,
+/obj/random/mre,
+/turf/simulated/floor/wood,
+/area/houseboat)
"LD" = (
/obj/machinery/portable_atmospherics/powered/scrubber,
/turf/unsimulated/floor{
@@ -17278,6 +17404,15 @@
},
/turf/simulated/floor/carpet/blue,
/area/houseboat)
+"Ml" = (
+/obj/structure/closet/secure_closet/personal,
+/turf/simulated/floor/wood,
+/area/houseboat)
+"Mr" = (
+/obj/structure/table/steel_reinforced,
+/obj/machinery/chemical_dispenser/bar_coffee/full,
+/turf/simulated/floor/wood,
+/area/houseboat)
"Mt" = (
/obj/structure/table/rack,
/obj/item/weapon/extinguisher/mini,
@@ -17292,6 +17427,12 @@
"Mu" = (
/turf/simulated/floor/carpet/blue,
/area/houseboat)
+"Mv" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 1
+ },
+/turf/simulated/floor/wood,
+/area/houseboat)
"Mw" = (
/obj/machinery/shield_gen/external,
/turf/unsimulated/floor{
@@ -17323,27 +17464,63 @@
stripe_color = "#45b3d8"
},
/area/houseboat)
+"ML" = (
+/obj/machinery/vending/dinnerware,
+/turf/simulated/floor/wood,
+/area/houseboat)
"MO" = (
/obj/machinery/chem_master,
/turf/simulated/floor/tiled/white,
/area/houseboat)
+"MP" = (
+/obj/structure/closet/secure_closet/nanotrasen_commander,
+/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
+"MT" = (
+/obj/structure/table/steel_reinforced,
+/obj/item/weapon/book/manual/chef_recipes,
+/obj/item/weapon/reagent_containers/food/condiment/enzyme{
+ layer = 5
+ },
+/obj/item/weapon/reagent_containers/food/condiment/enzyme{
+ layer = 5
+ },
+/obj/item/weapon/material/knife/butch,
+/obj/item/weapon/material/kitchen/rollingpin,
+/turf/simulated/floor/tiled/white,
+/area/houseboat)
"MX" = (
/obj/effect/floor_decal/industrial/warning{
dir = 4
},
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"MZ" = (
+/obj/structure/table/steel_reinforced,
+/obj/machinery/reagentgrinder,
+/obj/item/weapon/storage/box/beakers,
+/turf/simulated/floor/tiled/white,
+/area/houseboat)
"Nd" = (
/obj/effect/floor_decal/industrial/warning/dust/corner,
/obj/machinery/light/flamp/noshade,
/turf/unsimulated/floor/steel,
/area/centcom/evac)
+"Ng" = (
+/obj/machinery/vending/fitness,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"Nh" = (
/obj/effect/floor_decal/spline/plain{
dir = 4
},
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"Ni" = (
+/obj/machinery/vending/cola,
+/turf/simulated/floor/wood,
+/area/houseboat)
"Nj" = (
/obj/structure/table/steel_reinforced,
/obj/item/device/defib_kit/compact/combat/loaded,
@@ -17369,6 +17546,10 @@
},
/turf/simulated/floor/tiled/white,
/area/houseboat)
+"Nw" = (
+/obj/machinery/vending/hydronutrients,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"Nx" = (
/obj/structure/table/rack,
/obj/item/weapon/plastique,
@@ -17391,6 +17572,22 @@
},
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"ND" = (
+/obj/structure/table/rack/shelf,
+/obj/item/clothing/accessory/storage/black_vest,
+/obj/item/clothing/accessory/storage/black_vest,
+/obj/item/clothing/accessory/storage/black_vest,
+/obj/item/clothing/accessory/storage/black_vest,
+/obj/item/clothing/accessory/storage/black_drop_pouches,
+/obj/item/clothing/accessory/storage/black_drop_pouches,
+/obj/item/clothing/accessory/storage/black_drop_pouches,
+/obj/item/clothing/accessory/storage/black_drop_pouches,
+/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
+/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
+/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
+/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"NE" = (
/obj/structure/table/steel_reinforced,
/obj/machinery/door/window/westleft,
@@ -17426,9 +17623,9 @@
"NO" = (
/obj/item/weapon/gun/energy/gun/nuclear,
/obj/item/weapon/gun/energy/gun/nuclear,
-/obj/structure/table/rack/shelf,
/obj/item/weapon/gun/energy/gun/nuclear,
/obj/item/weapon/gun/energy/gun/nuclear,
+/obj/structure/closet/secure_closet/guncabinet,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"NR" = (
@@ -17588,8 +17785,20 @@
"OW" = (
/obj/machinery/cooker/fryer,
/obj/structure/table/steel_reinforced,
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
/turf/simulated/floor/tiled/white,
/area/houseboat)
+"OX" = (
+/obj/structure/sink/kitchen,
+/turf/simulated/shuttle/wall/voidcraft/blue{
+ hard_corner = 1;
+ icon_state = "void-hc";
+ name = "small craft wall hc";
+ stripe_color = "#45b3d8"
+ },
+/area/houseboat)
"Pc" = (
/obj/machinery/status_display{
pixel_y = 29
@@ -17610,8 +17819,14 @@
/area/centcom/evac)
"Pm" = (
/obj/structure/table/rack/shelf,
-/obj/item/weapon/rig/ert/medical,
-/obj/item/weapon/rig/ert/medical,
+/obj/item/weapon/storage/belt/medical/emt,
+/obj/item/weapon/storage/belt/medical/emt,
+/obj/item/weapon/storage/belt/medical/emt,
+/obj/item/weapon/storage/belt/medical/emt,
+/obj/item/weapon/storage/belt/medical/emt,
+/obj/item/weapon/storage/belt/medical/emt,
+/obj/item/device/defib_kit/compact/combat/loaded,
+/obj/item/device/defib_kit/compact/combat/loaded,
/turf/simulated/floor/tiled/white,
/area/houseboat)
"Po" = (
@@ -17662,16 +17877,30 @@
/obj/item/weapon/storage/backpack/ert/engineer,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"Pu" = (
+/obj/structure/table/steel_reinforced,
+/obj/item/device/retail_scanner/security,
+/obj/item/device/retail_scanner/security,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"Pz" = (
/obj/structure/closet/crate/secure/weapon,
/obj/item/weapon/rig/ert/assetprotection,
/obj/item/weapon/rig/ert/assetprotection,
/obj/item/clothing/glasses/thermal,
/obj/item/clothing/glasses/thermal,
-/obj/item/weapon/gun/energy/protector,
-/obj/item/weapon/gun/energy/protector,
-/obj/item/weapon/cell/device/weapon,
-/obj/item/weapon/cell/device/weapon,
+/obj/item/clothing/suit/armor/pcarrier/merc,
+/obj/item/clothing/suit/armor/pcarrier/merc,
+/obj/item/clothing/head/helmet/merc,
+/obj/item/clothing/head/helmet/merc,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
+"PC" = (
+/obj/structure/table/rack/shelf,
+/obj/item/clothing/suit/armor/pcarrier/blue/sol,
+/obj/item/clothing/suit/armor/pcarrier/blue/sol,
+/obj/item/clothing/suit/armor/pcarrier/blue/sol,
+/obj/item/clothing/suit/armor/pcarrier/blue/sol,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"PI" = (
@@ -17696,6 +17925,9 @@
"PO" = (
/obj/machinery/cooker/oven,
/obj/structure/table/steel_reinforced,
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
/turf/simulated/floor/tiled/white,
/area/houseboat)
"PP" = (
@@ -17703,9 +17935,10 @@
icon_state = "dark"
},
/area/centcom/control)
-"PQ" = (
-/obj/machinery/vending/dinnerware,
-/turf/simulated/floor/tiled/white,
+"PS" = (
+/obj/structure/table/steel_reinforced,
+/obj/machinery/chemical_dispenser/bar_soft/full,
+/turf/simulated/floor/wood,
/area/houseboat)
"PY" = (
/obj/structure/shuttle/engine/propulsion{
@@ -17734,6 +17967,10 @@
},
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"Qw" = (
+/obj/machinery/door/airlock/voidcraft/vertical,
+/turf/simulated/floor/tiled/white,
+/area/houseboat)
"Qy" = (
/obj/structure/closet/crate/freezer,
/turf/simulated/floor/tiled/white,
@@ -17792,6 +18029,8 @@
/obj/item/weapon/storage/firstaid/adv{
pixel_x = -2
},
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/glucose,
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/glucose,
/turf/simulated/floor/tiled/white,
/area/houseboat)
"QQ" = (
@@ -17827,7 +18066,6 @@
},
/area/centcom/specops)
"Rg" = (
-/obj/structure/closet/secure_closet/personal,
/obj/machinery/button/remote/airlock{
id = "dorm1";
name = "Room 1 Lock";
@@ -17885,7 +18123,6 @@
/turf/simulated/floor/tiled/white,
/area/houseboat)
"RC" = (
-/obj/structure/table/rack/shelf,
/obj/item/ammo_magazine/m9mm/compact,
/obj/item/ammo_magazine/m9mm/compact,
/obj/item/ammo_magazine/m9mm/compact,
@@ -17904,6 +18141,7 @@
/obj/item/weapon/gun/projectile/pistol,
/obj/item/weapon/gun/projectile/pistol,
/obj/item/weapon/gun/projectile/pistol,
+/obj/structure/closet/secure_closet/guncabinet,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"RD" = (
@@ -17940,7 +18178,6 @@
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"RI" = (
-/obj/structure/table/rack/shelf,
/obj/item/ammo_magazine/m545/ap,
/obj/item/ammo_magazine/m545/ap,
/obj/item/ammo_magazine/m545/ap,
@@ -17961,6 +18198,7 @@
/obj/item/weapon/gun/projectile/automatic/sts35,
/obj/item/weapon/gun/projectile/automatic/sts35,
/obj/item/weapon/gun/projectile/automatic/sts35,
+/obj/structure/closet/secure_closet/guncabinet,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"RJ" = (
@@ -17991,6 +18229,10 @@
icon_state = "dark"
},
/area/centcom/control)
+"RZ" = (
+/obj/machinery/vending/coffee,
+/turf/simulated/floor/wood,
+/area/houseboat)
"Sc" = (
/obj/machinery/atm{
pixel_x = 0;
@@ -18015,6 +18257,8 @@
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/cell/device/weapon,
+/obj/item/weapon/gun/energy/protector,
+/obj/item/weapon/gun/energy/protector,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"Sg" = (
@@ -18064,6 +18308,22 @@
},
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"SE" = (
+/obj/machinery/vending/sovietsoda,
+/turf/simulated/floor/wood,
+/area/houseboat)
+"SG" = (
+/obj/structure/table/steel_reinforced,
+/obj/item/clothing/accessory/badge/holo/cord,
+/obj/item/clothing/accessory/badge/holo/cord,
+/obj/item/clothing/accessory/badge/holo/cord,
+/obj/item/clothing/accessory/badge/holo/cord,
+/obj/item/clothing/accessory/badge/holo,
+/obj/item/clothing/accessory/badge/holo,
+/obj/item/clothing/accessory/badge/holo,
+/obj/item/clothing/accessory/badge/holo,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"SJ" = (
/obj/structure/closet/crate/secure/weapon,
/obj/item/weapon/storage/box/frags,
@@ -18106,6 +18366,9 @@
"SW" = (
/obj/machinery/cooker/grill,
/obj/structure/table/steel_reinforced,
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
/turf/simulated/floor/tiled/white,
/area/houseboat)
"SY" = (
@@ -18118,7 +18381,6 @@
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"Ta" = (
-/obj/structure/table/rack/shelf,
/obj/item/ammo_magazine/m9mmp90,
/obj/item/ammo_magazine/m9mmp90,
/obj/item/ammo_magazine/m9mmp90,
@@ -18137,6 +18399,7 @@
/obj/item/ammo_magazine/m9mmt/rubber,
/obj/item/ammo_magazine/m9mmt/rubber,
/obj/item/ammo_magazine/m9mmt/rubber,
+/obj/structure/closet/secure_closet/guncabinet,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"Te" = (
@@ -18160,7 +18423,10 @@
},
/area/houseboat)
"Tn" = (
-/obj/machinery/biogenerator,
+/obj/machinery/cooker/cereal,
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 9
+ },
/turf/simulated/floor/tiled/white,
/area/houseboat)
"Tp" = (
@@ -18187,13 +18453,13 @@
},
/area/centcom/specops)
"Tz" = (
-/obj/structure/closet/secure_closet/warden,
/obj/item/weapon/gun/projectile/shotgun/pump/combat{
ammo_type = /obj/item/ammo_casing/a12g/beanbag;
desc = "Built for close quarters combat, the Hesphaistos Industries KS-40 is widely regarded as a weapon of choice for repelling boarders. This one has 'Property of the Warden' inscribed on the stock.";
name = "warden's shotgun"
},
/obj/item/weapon/book/manual/security_space_law,
+/obj/structure/closet/secure_closet/nanotrasen_warden,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"TC" = (
@@ -18308,6 +18574,11 @@
},
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"UA" = (
+/obj/item/device/holowarrant,
+/obj/structure/closet/secure_closet/nanotrasen_security,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"UC" = (
/obj/structure/table/steel_reinforced,
/obj/item/stack/cable_coil,
@@ -18413,6 +18684,30 @@
},
/obj/item/device/survivalcapsule/military,
/obj/item/device/survivalcapsule/military,
+/obj/item/weapon/storage/secure/briefcase/money{
+ desc = "An sleek tidy briefcase.";
+ name = "secure briefcase"
+ },
+/obj/item/weapon/storage/secure/briefcase/money{
+ desc = "An sleek tidy briefcase.";
+ name = "secure briefcase"
+ },
+/obj/item/weapon/storage/secure/briefcase/money{
+ desc = "An sleek tidy briefcase.";
+ name = "secure briefcase"
+ },
+/obj/item/weapon/storage/secure/briefcase/money{
+ desc = "An sleek tidy briefcase.";
+ name = "secure briefcase"
+ },
+/obj/item/weapon/storage/secure/briefcase/money{
+ desc = "An sleek tidy briefcase.";
+ name = "secure briefcase"
+ },
+/obj/item/weapon/storage/secure/briefcase/money{
+ desc = "An sleek tidy briefcase.";
+ name = "secure briefcase"
+ },
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"UY" = (
@@ -18442,6 +18737,10 @@
},
/turf/simulated/floor/plating,
/area/houseboat)
+"UZ" = (
+/obj/machinery/vending/coffee,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"Vd" = (
/obj/item/weapon/reagent_containers/glass/bucket,
/obj/item/weapon/reagent_containers/glass/bucket,
@@ -18468,6 +18767,10 @@
/obj/effect/floor_decal/derelict/d16,
/turf/unsimulated/floor/steel,
/area/centcom/evac)
+"Vp" = (
+/obj/structure/table/bench/steel,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"Vq" = (
/turf/unsimulated/wall/planetary/virgo3b,
/area/centcom/bathroom)
@@ -18551,6 +18854,17 @@
/obj/machinery/mineral/equipment_vendor/survey,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"Wb" = (
+/obj/structure/table/steel_reinforced,
+/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{
+ pixel_x = 3
+ },
+/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{
+ pixel_x = -3;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/white,
+/area/houseboat)
"Wc" = (
/obj/machinery/organ_printer/flesh,
/turf/simulated/floor/tiled/white,
@@ -18575,6 +18889,14 @@
/obj/machinery/suit_cycler,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"Ws" = (
+/obj/structure/table/rack/shelf,
+/obj/item/clothing/head/helmet/solgov,
+/obj/item/clothing/head/helmet/solgov,
+/obj/item/clothing/head/helmet/solgov,
+/obj/item/clothing/head/helmet/solgov,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"WI" = (
/turf/simulated/floor/wood,
/area/houseboat)
@@ -18659,6 +18981,18 @@
},
/turf/simulated/floor/reinforced/airless,
/area/houseboat)
+"Xr" = (
+/obj/machinery/cooker/candy,
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/white,
+/area/houseboat)
+"Xs" = (
+/obj/item/weapon/bedsheet/captaindouble,
+/obj/structure/bed/double,
+/turf/simulated/floor/wood,
+/area/houseboat)
"Xu" = (
/obj/structure/closet{
name = "materials"
@@ -18728,6 +19062,15 @@
/obj/machinery/smartfridge,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"XP" = (
+/obj/machinery/vending/nifsoft_shop{
+ categories = 111;
+ emagged = 1;
+ name = "Hacked NIFSoft Shop";
+ prices = list()
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"XR" = (
/obj/structure/table/steel_reinforced,
/obj/fiftyspawner/steel,
@@ -18745,6 +19088,23 @@
name = "Holodeck Projector Floor"
},
/area/houseboat)
+"XU" = (
+/obj/structure/table/rack/shelf/steel,
+/obj/item/weapon/storage/lockbox,
+/obj/item/clothing/mask/gas{
+ pixel_x = -3;
+ pixel_y = -3
+ },
+/obj/item/clothing/mask/gas{
+ pixel_x = -3;
+ pixel_y = -3
+ },
+/obj/item/clothing/mask/gas{
+ pixel_x = -3;
+ pixel_y = -3
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"XX" = (
/obj/structure/closet/crate/secure/weapon,
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hybrid_combat,
@@ -18850,10 +19210,13 @@
/obj/item/device/multitool,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
-"Yt" = (
-/obj/machinery/cooker/cereal,
-/obj/structure/table/steel_reinforced,
-/turf/simulated/floor/tiled/white,
+"Ys" = (
+/obj/structure/window/reinforced{
+ dir = 4;
+ health = 1e+006
+ },
+/obj/structure/table/bench/steel,
+/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"Yv" = (
/obj/structure/table/rack/shelf,
@@ -18864,6 +19227,10 @@
/obj/item/clothing/mask/breath,
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
+"Yz" = (
+/obj/structure/closet/wardrobe/red,
+/turf/simulated/floor/tiled/techmaint,
+/area/houseboat)
"YE" = (
/obj/machinery/shieldwallgen,
/turf/unsimulated/floor{
@@ -18944,6 +19311,10 @@
/area/centcom/specops)
"Zz" = (
/obj/effect/floor_decal/industrial/hatch/yellow,
+/obj/item/device/perfect_tele_beacon/stationary{
+ tele_name = "Mothership";
+ tele_network = "centcom"
+ },
/turf/simulated/floor/tiled/techmaint,
/area/houseboat)
"ZC" = (
@@ -18961,13 +19332,7 @@
/turf/unsimulated/floor/steel,
/area/centcom/evac)
"ZK" = (
-/obj/structure/table/rack/shelf,
-/obj/item/weapon/storage/belt/medical/emt,
-/obj/item/weapon/storage/belt/medical/emt,
-/obj/item/weapon/storage/belt/medical/emt,
-/obj/item/weapon/storage/belt/medical/emt,
-/obj/item/weapon/storage/belt/medical/emt,
-/obj/item/weapon/storage/belt/medical/emt,
+/obj/structure/closet/secure_closet/CMO,
/turf/simulated/floor/tiled/white,
/area/houseboat)
"ZL" = (
@@ -18976,6 +19341,19 @@
name = "outer hull"
},
/area/space)
+"ZN" = (
+/obj/item/device/perfect_tele_beacon/stationary{
+ tele_name = "CentCom";
+ tele_network = "centcom"
+ },
+/turf/unsimulated/floor{
+ icon_state = "dark"
+ },
+/area/centcom/specops)
+"ZP" = (
+/obj/machinery/disposal,
+/turf/simulated/floor/wood,
+/area/houseboat)
"ZQ" = (
/obj/effect/floor_decal/steeldecal/steel_decals9{
dir = 1
@@ -20192,11 +20570,13 @@ MJ
MJ
UL
Yc
-LE
+Yc
Fx
Gu
Fx
MJ
+MJ
+MJ
ZL
OF
OF
@@ -20267,8 +20647,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(10,1,1) = {"
OF
@@ -20338,6 +20716,8 @@ lE
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -20409,8 +20789,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(11,1,1) = {"
OF
@@ -20447,7 +20825,7 @@ MJ
Ey
OV
OV
-Li
+iR
MJ
OV
OV
@@ -20480,6 +20858,8 @@ lE
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -20551,8 +20931,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(12,1,1) = {"
OF
@@ -20622,6 +21000,8 @@ Sg
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -20693,8 +21073,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(13,1,1) = {"
OF
@@ -20764,6 +21142,8 @@ Dq
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -20835,8 +21215,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(14,1,1) = {"
OF
@@ -20857,7 +21235,7 @@ Fx
MJ
MJ
Ge
-Dn
+Nw
MJ
MJ
Fx
@@ -20867,8 +21245,8 @@ MJ
MJ
MJ
MJ
-Yc
-Yc
+Ml
+Xs
MJ
OP
DK
@@ -20906,6 +21284,8 @@ XD
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -20977,8 +21357,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(15,1,1) = {"
OF
@@ -20995,12 +21373,12 @@ Fx
WI
WI
WI
-WI
+RZ
MJ
-Vd
+KP
Yc
Yc
-LE
+Dn
MJ
YV
Yc
@@ -21009,8 +21387,8 @@ MJ
Yc
Yc
MJ
-Yc
-Yc
+lm
+Mv
MJ
MO
YY
@@ -21046,7 +21424,6 @@ Dq
XD
Dq
MJ
-Yc
MJ
MJ
MJ
@@ -21055,8 +21432,9 @@ MJ
MJ
MJ
MJ
-OF
-OF
+MJ
+MJ
+MJ
OF
OF
OF
@@ -21137,12 +21515,12 @@ Gu
WI
WI
WI
-WI
+GX
MJ
-Uw
+Vd
Yc
Yc
-Uw
+LE
MJ
Kh
Yc
@@ -21151,8 +21529,8 @@ MJ
Yc
Yc
MJ
-Yc
-Yc
+DQ
+WI
MJ
NY
Gh
@@ -21194,6 +21572,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Gu
Lu
cJ
@@ -21261,8 +21641,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(17,1,1) = {"
OF
@@ -21279,7 +21657,7 @@ Fx
WI
WI
WI
-WI
+Ni
MJ
Uw
Yc
@@ -21294,7 +21672,7 @@ Yc
MJ
MJ
MJ
-Fg
+Qw
Fx
MJ
MJ
@@ -21308,7 +21686,7 @@ Xe
Li
OV
MJ
-OV
+GN
OV
OV
Ls
@@ -21336,6 +21714,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Fx
MJ
MJ
@@ -21403,8 +21783,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(18,1,1) = {"
OF
@@ -21421,7 +21799,7 @@ WI
WI
WI
WI
-WI
+Lo
MJ
Uw
Yc
@@ -21471,7 +21849,9 @@ Yc
Yc
Yc
Yc
-MJ
+Yc
+Yc
+Yc
Yc
Yc
Yc
@@ -21545,8 +21925,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(19,1,1) = {"
OF
@@ -21563,7 +21941,7 @@ WI
WI
WI
WI
-WI
+SE
MJ
Uw
Yc
@@ -21588,8 +21966,8 @@ Yc
Yc
Yc
MJ
-Yc
-Yc
+Xs
+Ml
MJ
Ol
Yc
@@ -21597,8 +21975,8 @@ Yc
Yc
RU
MJ
-Yc
-Yc
+Xs
+Ml
MJ
Yc
Yc
@@ -21613,7 +21991,9 @@ Yc
Yc
Yc
Yc
-MJ
+Yc
+Yc
+Yc
Yc
Yc
Yc
@@ -21687,8 +22067,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(20,1,1) = {"
OF
@@ -21701,11 +22079,11 @@ OF
OF
ZL
LR
-Sx
WI
WI
WI
WI
+Lz
MJ
Uw
Yc
@@ -21730,8 +22108,8 @@ Fx
Yc
Yc
MJ
-Yc
-Yc
+Gd
+gi
MJ
Yc
Yc
@@ -21739,8 +22117,8 @@ Yc
Yc
Yc
MJ
-Yc
-Yc
+lm
+Mv
MJ
Yc
Yc
@@ -21754,7 +22132,7 @@ MJ
MJ
Fx
Yc
-Yc
+Je
MJ
Yc
Yc
@@ -21762,6 +22140,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -21829,8 +22209,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(21,1,1) = {"
OF
@@ -21849,7 +22227,7 @@ Mu
Mu
Mu
Fx
-Fx
+OX
Yc
Yc
Fx
@@ -21872,8 +22250,8 @@ MJ
Yc
Yc
MJ
-Yc
-Yc
+WI
+DQ
MJ
QA
QA
@@ -21881,8 +22259,8 @@ QA
QA
QA
MJ
-Yc
-Yc
+DQ
+WI
MJ
Yc
Yc
@@ -21896,7 +22274,7 @@ Fg
Fg
MJ
Yc
-Yc
+RU
MJ
Yc
Yc
@@ -21904,6 +22282,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -21971,8 +22351,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(22,1,1) = {"
OF
@@ -22014,7 +22392,7 @@ MJ
Yc
Yc
MJ
-Yc
+Qw
MJ
MJ
MJ
@@ -22024,7 +22402,7 @@ MJ
MJ
MJ
MJ
-Yc
+Qw
MJ
Yc
Yc
@@ -22038,7 +22416,7 @@ Mf
Mf
MJ
Yc
-Yc
+Fi
MJ
Yc
Yc
@@ -22046,6 +22424,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -22113,8 +22493,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(23,1,1) = {"
OF
@@ -22180,6 +22558,8 @@ Ft
Xj
MJ
Yc
+Ng
+MJ
Yc
Yc
Yc
@@ -22255,8 +22635,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(24,1,1) = {"
OF
@@ -22322,6 +22700,8 @@ EG
iA
MJ
Yc
+UZ
+MJ
Yc
Yc
Yc
@@ -22397,8 +22777,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(25,1,1) = {"
OF
@@ -22440,7 +22818,7 @@ MJ
Yc
Yc
MJ
-Yc
+Qw
MJ
MJ
MJ
@@ -22450,7 +22828,7 @@ MJ
MJ
MJ
MJ
-Yc
+Qw
MJ
Yc
Yc
@@ -22464,7 +22842,7 @@ GY
GY
MJ
Yc
-Yc
+Je
MJ
Yc
Yc
@@ -22472,6 +22850,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -22539,8 +22919,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(26,1,1) = {"
OF
@@ -22559,7 +22937,7 @@ Mu
Mu
Mu
Fx
-Fx
+OX
Yc
Yc
XN
@@ -22582,8 +22960,8 @@ MJ
Yc
Yc
MJ
-Yc
-Yc
+WI
+DQ
MJ
Yc
Yc
@@ -22591,8 +22969,8 @@ MJ
Yc
Yc
MJ
-Yc
-Yc
+DQ
+WI
MJ
Yc
Yc
@@ -22606,7 +22984,7 @@ Fg
Fg
MJ
Yc
-Yc
+RU
MJ
Yc
Yc
@@ -22614,6 +22992,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -22681,8 +23061,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(27,1,1) = {"
OF
@@ -22699,9 +23077,9 @@ WI
WI
WI
WI
-WI
+ML
MJ
-Hp
+Gp
OV
OV
OV
@@ -22724,8 +23102,8 @@ Fx
Yc
Yc
MJ
-Yc
-Yc
+Gd
+gi
MJ
Yc
Yc
@@ -22733,8 +23111,8 @@ MJ
Yc
Yc
MJ
-Yc
-Yc
+lm
+Mv
MJ
Yc
Yc
@@ -22748,7 +23126,7 @@ MJ
MJ
Fx
Yc
-Yc
+Fi
MJ
Yc
Yc
@@ -22756,6 +23134,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -22823,8 +23203,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(28,1,1) = {"
OF
@@ -22841,9 +23219,9 @@ WI
WI
WI
WI
-WI
+Fh
MJ
-PQ
+Hp
OV
OV
Tn
@@ -22866,8 +23244,8 @@ Yc
Yc
Yc
MJ
-Yc
-Yc
+Xs
+Ml
MJ
Yc
Yc
@@ -22875,8 +23253,8 @@ MJ
Yc
Yc
MJ
-Yc
-Yc
+Ml
+Xs
MJ
Yc
Yc
@@ -22891,7 +23269,9 @@ Yc
Yc
Yc
Yc
-MJ
+Yc
+Yc
+Yc
Yc
Yc
Yc
@@ -22965,8 +23345,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(29,1,1) = {"
OF
@@ -22979,7 +23357,7 @@ OF
OF
HQ
MJ
-WI
+Sx
WI
WI
WI
@@ -23033,7 +23411,9 @@ Yc
Yc
Yc
Yc
-MJ
+Yc
+Yc
+Yc
Yc
Yc
Yc
@@ -23107,8 +23487,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(30,1,1) = {"
OF
@@ -23125,9 +23503,9 @@ Fx
WI
WI
WI
-WI
+PS
MJ
-Li
+Wb
OV
OV
PO
@@ -23140,7 +23518,7 @@ Yc
MJ
MJ
MJ
-Yc
+Qw
Fx
MJ
MJ
@@ -23182,6 +23560,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Fx
MJ
MJ
@@ -23249,8 +23629,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(31,1,1) = {"
OF
@@ -23267,9 +23645,9 @@ Gu
WI
WI
WI
-WI
+Mr
MJ
-Li
+MT
OV
OV
SW
@@ -23281,12 +23659,12 @@ MJ
Yc
Yc
MJ
-Yc
-Yc
+DQ
+WI
MJ
Yc
-Yc
-Yc
+EH
+XU
Yc
Yc
Yc
@@ -23324,6 +23702,8 @@ Yc
Yc
Yc
Yc
+Yc
+Yc
Gu
VJ
cJ
@@ -23391,8 +23771,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(32,1,1) = {"
OF
@@ -23409,12 +23787,12 @@ Fx
WI
WI
WI
-WI
+ZP
MJ
-NU
+MZ
OV
OV
-TO
+Xr
MJ
YV
Yc
@@ -23423,12 +23801,12 @@ MJ
Yc
Yc
MJ
-Yc
-Yc
+lm
+Mv
MJ
Yc
-Yc
-Yc
+Ll
+MP
Yc
MJ
MJ
@@ -23460,7 +23838,6 @@ gj
Nh
PI
MJ
-Yc
MJ
MJ
MJ
@@ -23469,8 +23846,9 @@ MJ
MJ
MJ
MJ
-OF
-OF
+MJ
+MJ
+MJ
OF
OF
OF
@@ -23554,8 +23932,8 @@ UI
Fx
MJ
MJ
-Gy
-Yt
+TO
+NU
MJ
MJ
Fx
@@ -23565,14 +23943,14 @@ MJ
MJ
MJ
MJ
-Yc
-Yc
+Ml
+Xs
MJ
Yc
Yc
Yc
Yc
-Yc
+ND
MJ
Yc
MJ
@@ -23604,6 +23982,8 @@ XT
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -23675,8 +24055,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(34,1,1) = {"
OF
@@ -23710,11 +24088,11 @@ MJ
MJ
MJ
MJ
+Ys
+Ys
+Vp
Yc
-Yc
-Yc
-Yc
-Yc
+Yz
MJ
Yc
MJ
@@ -23746,6 +24124,8 @@ XT
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -23817,8 +24197,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(35,1,1) = {"
OF
@@ -23849,12 +24227,12 @@ OF
OF
OF
MJ
-Yc
-Yc
-Yc
-Yc
-Yc
-Yc
+lk
+KV
+MJ
+JM
+JM
+Vp
Yc
Yc
Yc
@@ -23888,6 +24266,8 @@ XT
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -23959,8 +24339,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(36,1,1) = {"
OF
@@ -23991,14 +24369,14 @@ OF
OF
OF
MJ
+Zg
Yc
Yc
Yc
Yc
Yc
Yc
-Yc
-Yc
+Pu
MJ
Yc
MJ
@@ -24014,7 +24392,7 @@ EC
TE
EQ
MJ
-Yc
+XP
Yc
Yc
Yc
@@ -24030,6 +24408,8 @@ FY
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -24101,8 +24481,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(37,1,1) = {"
OF
@@ -24133,14 +24511,14 @@ OF
OF
OF
MJ
+Ws
+PC
+MJ
+UA
+UA
+UA
Yc
-Yc
-Yc
-Yc
-Yc
-Yc
-Yc
-Yc
+SG
MJ
Yc
MJ
@@ -24172,6 +24550,8 @@ XT
MJ
Yc
Yc
+Yc
+Yc
Xq
iJ
OF
@@ -24243,8 +24623,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(38,1,1) = {"
OF
@@ -24314,6 +24692,8 @@ XT
Fx
Gu
Fx
+MJ
+MJ
Fx
ZL
OF
@@ -24385,8 +24765,6 @@ OF
OF
OF
OF
-OF
-OF
"}
(39,1,1) = {"
OF
@@ -38197,7 +38575,7 @@ co
ah
cF
aG
-aG
+ZN
dm
dU
eh
diff --git a/vorestation.dme b/vorestation.dme
index d03d45e439e..f04f6930755 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1011,6 +1011,7 @@
#include "code\game\objects\items\devices\traitordevices.dm"
#include "code\game\objects\items\devices\transfer_valve.dm"
#include "code\game\objects\items\devices\translator.dm"
+#include "code\game\objects\items\devices\translocator_vr.dm"
#include "code\game\objects\items\devices\tvcamera.dm"
#include "code\game\objects\items\devices\uplink.dm"
#include "code\game\objects\items\devices\uplink_random_lists.dm"