From aa25f5ebbd350811c59f13e0b050ee60d7eea347 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 27 Nov 2019 15:50:54 -0500 Subject: [PATCH] More Updates --- .../objects/items/devices/translocator_vr.dm | 499 +++++++++++ .../vore/fluffstuff/custom_items_vr.dm | 388 --------- icons/obj/radio_vr.dmi | Bin 27557 -> 28381 bytes maps/tether/tether-10-colony.dmm | 812 +++++++++++++----- vorestation.dme | 1 + 5 files changed, 1095 insertions(+), 605 deletions(-) create mode 100644 code/game/objects/items/devices/translocator_vr.dm 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 77d695cf23c0dc554621007c2cf92f435befbb2b..88d6011a7fd9d214046631c0b801eb98b2b3fa3b 100644 GIT binary patch delta 6802 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 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"