@@ -95,14 +95,14 @@ obj/var/phoronproof = 0
|
|||||||
return
|
return
|
||||||
|
|
||||||
//Burn skin if exposed.
|
//Burn skin if exposed.
|
||||||
if(vsc.plc.SKIN_BURNS)
|
if(vsc.plc.SKIN_BURNS && (species.breath_type != "phoron"))
|
||||||
if(!pl_head_protected() || !pl_suit_protected())
|
if(!pl_head_protected() || !pl_suit_protected())
|
||||||
burn_skin(0.75)
|
burn_skin(0.75)
|
||||||
if(prob(20)) src << "<span class='danger'>Your skin burns!</span>"
|
if(prob(20)) src << "<span class='danger'>Your skin burns!</span>"
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
//Burn eyes if exposed.
|
//Burn eyes if exposed.
|
||||||
if(vsc.plc.EYE_BURNS)
|
if(vsc.plc.EYE_BURNS && (species.breath_type != "phoron"))
|
||||||
if(!head)
|
if(!head)
|
||||||
if(!wear_mask)
|
if(!wear_mask)
|
||||||
burn_eyes()
|
burn_eyes()
|
||||||
@@ -118,22 +118,12 @@ obj/var/phoronproof = 0
|
|||||||
burn_eyes()
|
burn_eyes()
|
||||||
|
|
||||||
//Genetic Corruption
|
//Genetic Corruption
|
||||||
if(vsc.plc.GENETIC_CORRUPTION)
|
if(vsc.plc.GENETIC_CORRUPTION && (species.breath_type != "phoron"))
|
||||||
if(rand(1,10000) < vsc.plc.GENETIC_CORRUPTION)
|
if(rand(1,10000) < vsc.plc.GENETIC_CORRUPTION)
|
||||||
randmutb(src)
|
randmutb(src)
|
||||||
src << "<span class='danger'>High levels of toxins cause you to spontaneously mutate!</span>"
|
src << "<span class='danger'>High levels of toxins cause you to spontaneously mutate!</span>"
|
||||||
domutcheck(src,null)
|
domutcheck(src,null)
|
||||||
|
|
||||||
/mob/living/carbon/human/vox/pl_effects()
|
|
||||||
//Handles all the bad things phoron can do to Vox.
|
|
||||||
|
|
||||||
//Contamination
|
|
||||||
if(vsc.plc.CLOTH_CONTAMINATION) contaminate()
|
|
||||||
|
|
||||||
//Anything else requires them to not be dead.
|
|
||||||
if(stat >= 2)
|
|
||||||
return
|
|
||||||
|
|
||||||
/mob/living/carbon/human/proc/burn_eyes()
|
/mob/living/carbon/human/proc/burn_eyes()
|
||||||
var/obj/item/organ/internal/eyes/E = internal_organs_by_name[O_EYES]
|
var/obj/item/organ/internal/eyes/E = internal_organs_by_name[O_EYES]
|
||||||
if(E)
|
if(E)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
name = "All robolimb blueprints"
|
name = "All robolimb blueprints"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/disk/limb/bishop,
|
/obj/item/weapon/disk/limb/bishop,
|
||||||
/obj/item/weapon/disk/limb/hesphiastos,
|
/obj/item/weapon/disk/limb/hephaestus,
|
||||||
/obj/item/weapon/disk/limb/morpheus,
|
/obj/item/weapon/disk/limb/morpheus,
|
||||||
/obj/item/weapon/disk/limb/veymed,
|
/obj/item/weapon/disk/limb/veymed,
|
||||||
/obj/item/weapon/disk/limb/wardtakahashi,
|
/obj/item/weapon/disk/limb/wardtakahashi,
|
||||||
@@ -68,6 +68,13 @@
|
|||||||
containername = "Robolimb blueprints (Xion)"
|
containername = "Robolimb blueprints (Xion)"
|
||||||
access = access_robotics
|
access = access_robotics
|
||||||
|
|
||||||
|
/datum/supply_packs/robotics/robolimbs/hephaestus
|
||||||
|
name = "Hephaistos robolimb blueprints"
|
||||||
|
contains = list(/obj/item/weapon/disk/limb/hephaestus)
|
||||||
|
containertype = /obj/structure/closet/crate/secure/gear
|
||||||
|
containername = "Robolimb blueprints (Hephaestus)"
|
||||||
|
access = access_robotics
|
||||||
|
|
||||||
/datum/supply_packs/robotics/robolimbs/wardtakahashi
|
/datum/supply_packs/robotics/robolimbs/wardtakahashi
|
||||||
name = "Ward-Takahashi robolimb blueprints"
|
name = "Ward-Takahashi robolimb blueprints"
|
||||||
contains = list(/obj/item/weapon/disk/limb/wardtakahashi)
|
contains = list(/obj/item/weapon/disk/limb/wardtakahashi)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
name = "Advanced Robolimb Blueprints"
|
name = "Advanced Robolimb Blueprints"
|
||||||
contains = list(
|
contains = list(
|
||||||
/obj/item/weapon/disk/limb/bishop,
|
/obj/item/weapon/disk/limb/bishop,
|
||||||
/obj/item/weapon/disk/limb/hesphiastos,
|
/obj/item/weapon/disk/limb/hephaestus,
|
||||||
/obj/item/weapon/disk/limb/morpheus,
|
/obj/item/weapon/disk/limb/morpheus,
|
||||||
/obj/item/weapon/disk/limb/veymed,
|
/obj/item/weapon/disk/limb/veymed,
|
||||||
/obj/item/weapon/disk/limb/wardtakahashi,
|
/obj/item/weapon/disk/limb/wardtakahashi,
|
||||||
|
|||||||
@@ -125,7 +125,16 @@
|
|||||||
if(A:lying) continue
|
if(A:lying) continue
|
||||||
src.throw_impact(A,speed)
|
src.throw_impact(A,speed)
|
||||||
if(isobj(A))
|
if(isobj(A))
|
||||||
if(A.density && !A.throwpass) // **TODO: Better behaviour for windows which are dense, but shouldn't always stop movement
|
if(!A.density || A.throwpass)
|
||||||
|
continue
|
||||||
|
// Special handling of windows, which are dense but block only from some directions
|
||||||
|
if(istype(A, /obj/structure/window))
|
||||||
|
var/obj/structure/window/W = A
|
||||||
|
if (!W.is_full_window() && !(turn(src.last_move, 180) & A.dir))
|
||||||
|
continue
|
||||||
|
// Same thing for (closed) windoors, which have the same problem
|
||||||
|
else if(istype(A, /obj/machinery/door/window) && !(turn(src.last_move, 180) & A.dir))
|
||||||
|
continue
|
||||||
src.throw_impact(A,speed)
|
src.throw_impact(A,speed)
|
||||||
|
|
||||||
/atom/movable/proc/throw_at(atom/target, range, speed, thrower)
|
/atom/movable/proc/throw_at(atom/target, range, speed, thrower)
|
||||||
|
|||||||
@@ -350,6 +350,11 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
|
|||||||
M << "<br>"
|
M << "<br>"
|
||||||
M.add_ion_law("THE STATION IS [who2pref] [who2]")
|
M.add_ion_law("THE STATION IS [who2pref] [who2]")
|
||||||
|
|
||||||
|
if(botEmagChance)
|
||||||
|
for(var/mob/living/bot/bot in machines)
|
||||||
|
if(prob(botEmagChance))
|
||||||
|
bot.emag_act(1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
var/apcnum = 0
|
var/apcnum = 0
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ update_flag
|
|||||||
"\[N2O\]" = "redws", \
|
"\[N2O\]" = "redws", \
|
||||||
"\[N2\]" = "red", \
|
"\[N2\]" = "red", \
|
||||||
"\[O2\]" = "blue", \
|
"\[O2\]" = "blue", \
|
||||||
"\[Phoron\]" = "purple", \
|
"\[Phoron\]" = "orangeps", \
|
||||||
"\[CO2\]" = "black", \
|
"\[CO2\]" = "black", \
|
||||||
"\[Air\]" = "grey", \
|
"\[Air\]" = "grey", \
|
||||||
"\[CAUTION\]" = "yellow", \
|
"\[CAUTION\]" = "yellow", \
|
||||||
|
|||||||
@@ -1,52 +1,45 @@
|
|||||||
// Navigation beacon for AI robots
|
// Navigation beacon for AI robots
|
||||||
// Functions as a transponder: looks for incoming signal matching
|
// Functions as a transponder: looks for incoming signal matching
|
||||||
|
|
||||||
var/global/list/navbeacons // no I don't like putting this in, but it will do for now
|
var/global/list/navbeacons = list() // no I don't like putting this in, but it will do for now
|
||||||
|
|
||||||
/obj/machinery/navbeacon
|
/obj/machinery/navbeacon
|
||||||
icon = 'icons/obj/objects.dmi'
|
icon = 'icons/obj/objects.dmi'
|
||||||
icon_state = "navbeacon0-f"
|
icon_state = "navbeacon0-f"
|
||||||
name = "navigation beacon"
|
name = "navigation beacon"
|
||||||
desc = "A radio beacon used for bot navigation."
|
desc = "A beacon used for bot navigation."
|
||||||
level = 1 // underfloor
|
level = 1 // underfloor
|
||||||
layer = 2.5
|
layer = 2.5
|
||||||
anchored = 1
|
anchored = 1
|
||||||
var/open = 0 // true if cover is open
|
var/open = 0 // true if cover is open
|
||||||
var/locked = 1 // true if controls are locked
|
var/locked = 1 // true if controls are locked
|
||||||
var/freq = 1445 // radio frequency
|
var/freq = null // DEPRECATED we don't use radios anymore!
|
||||||
var/location = "" // location response text
|
var/location = "" // location response text
|
||||||
var/list/codes // assoc. list of transponder codes
|
var/codes_txt // DEPRECATED codes as set on map: "tag1;tag2" or "tag1=value;tag2=value"
|
||||||
var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value"
|
var/list/codes = list() // assoc. list of transponder codes
|
||||||
req_access = list(access_engine)
|
req_access = list(access_engine)
|
||||||
|
|
||||||
/obj/machinery/navbeacon/New()
|
/obj/machinery/navbeacon/New()
|
||||||
..()
|
..()
|
||||||
|
set_codes_from_txt(codes_txt)
|
||||||
set_codes()
|
if(freq)
|
||||||
|
warning("[src] at [x],[y],[z] has deprecated var freq=[freq]. Replace it with proper type.")
|
||||||
|
|
||||||
var/turf/T = loc
|
var/turf/T = loc
|
||||||
hide(!T.is_plating())
|
hide(!T.is_plating())
|
||||||
|
|
||||||
// add beacon to MULE bot beacon list
|
|
||||||
if(freq == 1400)
|
|
||||||
if(!navbeacons)
|
|
||||||
navbeacons = new()
|
|
||||||
navbeacons += src
|
navbeacons += src
|
||||||
|
|
||||||
|
|
||||||
spawn(5) // must wait for map loading to finish
|
|
||||||
if(radio_controller)
|
|
||||||
radio_controller.add_object(src, freq, RADIO_NAVBEACONS)
|
|
||||||
|
|
||||||
// set the transponder codes assoc list from codes_txt
|
// set the transponder codes assoc list from codes_txt
|
||||||
/obj/machinery/navbeacon/proc/set_codes()
|
// DEPRECATED - This is kept only for compatibilty with old map files! Do not use this!
|
||||||
|
// Instead, you should replace the map instance with one of the appropriate navbeacon subtypes.
|
||||||
|
// See the bottom of this file for a list of subtypes, make your own examples if your map needs more
|
||||||
|
/obj/machinery/navbeacon/proc/set_codes_from_txt()
|
||||||
if(!codes_txt)
|
if(!codes_txt)
|
||||||
return
|
return
|
||||||
|
warning("[src] at [x],[y],[z] in [get_area(src)] is using the deprecated 'codes_txt' mapping method. Replace it with proper type.")
|
||||||
|
|
||||||
codes = new()
|
codes = list()
|
||||||
|
|
||||||
var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons
|
var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons
|
||||||
|
|
||||||
for(var/e in entries)
|
for(var/e in entries)
|
||||||
var/index = findtext(e, "=") // format is "key=value"
|
var/index = findtext(e, "=") // format is "key=value"
|
||||||
if(index)
|
if(index)
|
||||||
@@ -56,6 +49,8 @@ var/global/list/navbeacons // no I don't like putting this in, but it will do
|
|||||||
else
|
else
|
||||||
codes[e] = "1"
|
codes[e] = "1"
|
||||||
|
|
||||||
|
/obj/machinery/navbeacon/hides_under_flooring()
|
||||||
|
return 1
|
||||||
|
|
||||||
// called when turf state changes
|
// called when turf state changes
|
||||||
// hide the object if turf is intact
|
// hide the object if turf is intact
|
||||||
@@ -73,38 +68,6 @@ var/global/list/navbeacons // no I don't like putting this in, but it will do
|
|||||||
else
|
else
|
||||||
icon_state = "[state]"
|
icon_state = "[state]"
|
||||||
|
|
||||||
|
|
||||||
// look for a signal of the form "findbeacon=X"
|
|
||||||
// where X is any
|
|
||||||
// or the location
|
|
||||||
// or one of the set transponder keys
|
|
||||||
// if found, return a signal
|
|
||||||
/obj/machinery/navbeacon/receive_signal(datum/signal/signal)
|
|
||||||
|
|
||||||
var/request = signal.data["findbeacon"]
|
|
||||||
if(request && ((request in codes) || request == "any" || request == location))
|
|
||||||
spawn(1)
|
|
||||||
post_signal()
|
|
||||||
|
|
||||||
// return a signal giving location and transponder codes
|
|
||||||
|
|
||||||
/obj/machinery/navbeacon/proc/post_signal()
|
|
||||||
|
|
||||||
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
|
|
||||||
|
|
||||||
if(!frequency) return
|
|
||||||
|
|
||||||
var/datum/signal/signal = new()
|
|
||||||
signal.source = src
|
|
||||||
signal.transmission_method = 1
|
|
||||||
signal.data["beacon"] = location
|
|
||||||
|
|
||||||
for(var/key in codes)
|
|
||||||
signal.data[key] = codes[key]
|
|
||||||
|
|
||||||
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/navbeacon/attackby(var/obj/item/I, var/mob/user)
|
/obj/machinery/navbeacon/attackby(var/obj/item/I, var/mob/user)
|
||||||
var/turf/T = loc
|
var/turf/T = loc
|
||||||
if(!T.is_plating())
|
if(!T.is_plating())
|
||||||
@@ -117,7 +80,7 @@ var/global/list/navbeacons // no I don't like putting this in, but it will do
|
|||||||
|
|
||||||
updateicon()
|
updateicon()
|
||||||
|
|
||||||
else if(istype(I, /obj/item/weapon/card/id)||istype(I, /obj/item/device/pda))
|
else if(I.GetID())
|
||||||
if(open)
|
if(open)
|
||||||
if(allowed(user))
|
if(allowed(user))
|
||||||
locked = !locked
|
locked = !locked
|
||||||
@@ -153,8 +116,7 @@ var/global/list/navbeacons // no I don't like putting this in, but it will do
|
|||||||
|
|
||||||
if(locked && !ai)
|
if(locked && !ai)
|
||||||
t = {"<TT><B>Navigation Beacon</B><HR><BR>
|
t = {"<TT><B>Navigation Beacon</B><HR><BR>
|
||||||
<i>(swipe card to unlock controls)</i><BR>
|
<i>(swipe card to unlock controls)</i><BR><HR>
|
||||||
Frequency: [format_frequency(freq)]<BR><HR>
|
|
||||||
Location: [location ? location : "(none)"]</A><BR>
|
Location: [location ? location : "(none)"]</A><BR>
|
||||||
Transponder Codes:<UL>"}
|
Transponder Codes:<UL>"}
|
||||||
|
|
||||||
@@ -165,14 +127,7 @@ Transponder Codes:<UL>"}
|
|||||||
else
|
else
|
||||||
|
|
||||||
t = {"<TT><B>Navigation Beacon</B><HR><BR>
|
t = {"<TT><B>Navigation Beacon</B><HR><BR>
|
||||||
<i>(swipe card to lock controls)</i><BR>
|
<i>(swipe card to lock controls)</i><BR><HR>
|
||||||
Frequency:
|
|
||||||
<A href='byond://?src=\ref[src];freq=-10'>-</A>
|
|
||||||
<A href='byond://?src=\ref[src];freq=-2'>-</A>
|
|
||||||
[format_frequency(freq)]
|
|
||||||
<A href='byond://?src=\ref[src];freq=2'>+</A>
|
|
||||||
<A href='byond://?src=\ref[src];freq=10'>+</A><BR>
|
|
||||||
<HR>
|
|
||||||
Location: <A href='byond://?src=\ref[src];locedit=1'>[location ? location : "(none)"]</A><BR>
|
Location: <A href='byond://?src=\ref[src];locedit=1'>[location ? location : "(none)"]</A><BR>
|
||||||
Transponder Codes:<UL>"}
|
Transponder Codes:<UL>"}
|
||||||
|
|
||||||
@@ -195,11 +150,7 @@ Transponder Codes:<UL>"}
|
|||||||
if(open && !locked)
|
if(open && !locked)
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
|
|
||||||
if(href_list["freq"])
|
if(href_list["locedit"])
|
||||||
freq = sanitize_frequency(freq + text2num(href_list["freq"]))
|
|
||||||
updateDialog()
|
|
||||||
|
|
||||||
else if(href_list["locedit"])
|
|
||||||
var/newloc = sanitize(input("Enter New Location", "Navigation Beacon", location) as text|null)
|
var/newloc = sanitize(input("Enter New Location", "Navigation Beacon", location) as text|null)
|
||||||
if(newloc)
|
if(newloc)
|
||||||
location = newloc
|
location = newloc
|
||||||
@@ -248,6 +199,41 @@ Transponder Codes:<UL>"}
|
|||||||
|
|
||||||
/obj/machinery/navbeacon/Destroy()
|
/obj/machinery/navbeacon/Destroy()
|
||||||
navbeacons.Remove(src)
|
navbeacons.Remove(src)
|
||||||
if(radio_controller)
|
..()
|
||||||
radio_controller.remove_object(src, freq)
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Nav Beacon Mapping
|
||||||
|
// These subtypes are what you should actually put into maps! they will make your life much easier.
|
||||||
|
//
|
||||||
|
// Developer Note: navbeacons do not HAVE to use these subtypes. They are purely for mapping convenience.
|
||||||
|
// You can feel free to construct them in-game as just /obj/machinery/navbeacon and they will work just
|
||||||
|
// fine, and you can define your own specific types for every instance on map if you want (BayStation does)
|
||||||
|
// This design is a compromise that means you can do mapping without every single one being its own type
|
||||||
|
// but with it still being easy to map ~ Leshana
|
||||||
|
//
|
||||||
|
|
||||||
|
// Mulebot delivery destinations
|
||||||
|
|
||||||
|
/obj/machinery/navbeacon/delivery/north
|
||||||
|
codes = list("delivery" = 1, "dir" = NORTH)
|
||||||
|
|
||||||
|
/obj/machinery/navbeacon/delivery/south
|
||||||
|
codes = list("delivery" = 1, "dir" = SOUTH)
|
||||||
|
|
||||||
|
/obj/machinery/navbeacon/delivery/east
|
||||||
|
codes = list("delivery" = 1, "dir" = EAST)
|
||||||
|
|
||||||
|
/obj/machinery/navbeacon/delivery/west
|
||||||
|
codes = list("delivery" = 1, "dir" = WEST)
|
||||||
|
|
||||||
|
|
||||||
|
// For part of the patrol route
|
||||||
|
// You MUST set "location"
|
||||||
|
// You MUST set "next_patrol"
|
||||||
|
/obj/machinery/navbeacon/patrol
|
||||||
|
var/next_patrol
|
||||||
|
|
||||||
|
/obj/machinery/navbeacon/patrol/New()
|
||||||
|
codes = list("patrol" = 1, "next_patrol" = next_patrol)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ steam.start() -- spawns the effect
|
|||||||
spawn(0)
|
spawn(0)
|
||||||
var/turf/T = get_turf(src.holder)
|
var/turf/T = get_turf(src.holder)
|
||||||
if(T != src.oldposition)
|
if(T != src.oldposition)
|
||||||
if(istype(T, /turf/simulated))
|
if(isturf(T))
|
||||||
var/obj/effect/effect/ion_trails/I = PoolOrNew(/obj/effect/effect/ion_trails, src.oldposition)
|
var/obj/effect/effect/ion_trails/I = PoolOrNew(/obj/effect/effect/ion_trails, src.oldposition)
|
||||||
src.oldposition = T
|
src.oldposition = T
|
||||||
I.set_dir(src.holder.dir)
|
I.set_dir(src.holder.dir)
|
||||||
|
|||||||
@@ -213,6 +213,17 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
|||||||
update_icon()
|
update_icon()
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
|
// Proc: MouseDrop()
|
||||||
|
//Same thing PDAs do
|
||||||
|
/obj/item/device/communicator/MouseDrop(obj/over_object as obj)
|
||||||
|
var/mob/M = usr
|
||||||
|
if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
|
||||||
|
return
|
||||||
|
if(!istype(over_object, /obj/screen))
|
||||||
|
return attack_self(M)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
// Proc: attack_ghost()
|
// Proc: attack_ghost()
|
||||||
// Parameters: 1 (user - the ghost clicking on the device)
|
// Parameters: 1 (user - the ghost clicking on the device)
|
||||||
// Description: Recreates the known_devices list, so that the ghost looking at the device can see themselves, then calls ..() so that NanoUI appears.
|
// Description: Recreates the known_devices list, so that the ghost looking at the device can see themselves, then calls ..() so that NanoUI appears.
|
||||||
|
|||||||
@@ -104,7 +104,6 @@
|
|||||||
name = "phoron tank"
|
name = "phoron tank"
|
||||||
desc = "Contains dangerous phoron. Do not inhale. Warning: extremely flammable."
|
desc = "Contains dangerous phoron. Do not inhale. Warning: extremely flammable."
|
||||||
icon_state = "phoron_vox"
|
icon_state = "phoron_vox"
|
||||||
item_state = "oxygen_fr"
|
|
||||||
gauge_icon = null
|
gauge_icon = null
|
||||||
flags = CONDUCT
|
flags = CONDUCT
|
||||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||||
|
|||||||
@@ -86,6 +86,12 @@
|
|||||||
"admin","ponies","heresy","meow","Pun Pun","monkey","Ian","moron","pizza","message","spam",\
|
"admin","ponies","heresy","meow","Pun Pun","monkey","Ian","moron","pizza","message","spam",\
|
||||||
"director", "Hello", "Hi!"," ","nuke","crate","dwarf","xeno")
|
"director", "Hello", "Hi!"," ","nuke","crate","dwarf","xeno")
|
||||||
|
|
||||||
|
/datum/event/ionstorm/tick()
|
||||||
|
if(botEmagChance)
|
||||||
|
for(var/mob/living/bot/bot in world)
|
||||||
|
if(prob(botEmagChance))
|
||||||
|
bot.emag_act(1)
|
||||||
|
|
||||||
/datum/event/ionstorm/end()
|
/datum/event/ionstorm/end()
|
||||||
spawn(rand(5000,8000))
|
spawn(rand(5000,8000))
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
var/turf/obstacle = null
|
var/turf/obstacle = null
|
||||||
|
|
||||||
var/wait_if_pulled = 0 // Only applies to moving to the target
|
var/wait_if_pulled = 0 // Only applies to moving to the target
|
||||||
var/will_patrol = 0 // Not a setting - whether or no this type of bots patrols at all
|
var/will_patrol = 0 // If set to 1, will patrol, duh
|
||||||
var/patrol_speed = 1 // How many times per tick we move when patrolling
|
var/patrol_speed = 1 // How many times per tick we move when patrolling
|
||||||
var/target_speed = 2 // Ditto for chasing the target
|
var/target_speed = 2 // Ditto for chasing the target
|
||||||
var/min_target_dist = 1 // How close we try to get to the target
|
var/min_target_dist = 1 // How close we try to get to the target
|
||||||
@@ -49,7 +49,11 @@
|
|||||||
access_scanner.req_access = req_access.Copy()
|
access_scanner.req_access = req_access.Copy()
|
||||||
access_scanner.req_one_access = req_one_access.Copy()
|
access_scanner.req_one_access = req_one_access.Copy()
|
||||||
|
|
||||||
turn_on()
|
// Make sure mapped in units start turned on.
|
||||||
|
/mob/living/bot/initialize()
|
||||||
|
..()
|
||||||
|
if(on)
|
||||||
|
turn_on() // Update lights and other stuff
|
||||||
|
|
||||||
/mob/living/bot/Life()
|
/mob/living/bot/Life()
|
||||||
..()
|
..()
|
||||||
@@ -61,6 +65,7 @@
|
|||||||
paralysis = 0
|
paralysis = 0
|
||||||
|
|
||||||
if(on && !client && !busy)
|
if(on && !client && !busy)
|
||||||
|
spawn(0)
|
||||||
handleAI()
|
handleAI()
|
||||||
|
|
||||||
/mob/living/bot/updatehealth()
|
/mob/living/bot/updatehealth()
|
||||||
@@ -145,20 +150,18 @@
|
|||||||
handleRangedTarget()
|
handleRangedTarget()
|
||||||
if(!wait_if_pulled || !pulledby)
|
if(!wait_if_pulled || !pulledby)
|
||||||
for(var/i = 1 to target_speed)
|
for(var/i = 1 to target_speed)
|
||||||
|
sleep(20 / (target_speed + 1))
|
||||||
stepToTarget()
|
stepToTarget()
|
||||||
if(i < target_speed)
|
|
||||||
sleep(20 / target_speed)
|
|
||||||
if(max_frustration && frustration > max_frustration * target_speed)
|
if(max_frustration && frustration > max_frustration * target_speed)
|
||||||
handleFrustrated(1)
|
handleFrustrated(1)
|
||||||
else
|
else
|
||||||
resetTarget()
|
resetTarget()
|
||||||
lookForTargets()
|
lookForTargets()
|
||||||
if(will_patrol && !pulledby && !target)
|
if(will_patrol && !pulledby && !target)
|
||||||
if(patrol_path.len)
|
if(patrol_path && patrol_path.len)
|
||||||
for(var/i = 1 to patrol_speed)
|
for(var/i = 1 to patrol_speed)
|
||||||
|
sleep(20 / (patrol_speed + 1))
|
||||||
handlePatrol()
|
handlePatrol()
|
||||||
if(i < patrol_speed)
|
|
||||||
sleep(20 / patrol_speed)
|
|
||||||
if(max_frustration && frustration > max_frustration * patrol_speed)
|
if(max_frustration && frustration > max_frustration * patrol_speed)
|
||||||
handleFrustrated(0)
|
handleFrustrated(0)
|
||||||
else
|
else
|
||||||
@@ -219,6 +222,25 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/bot/proc/getPatrolTurf()
|
/mob/living/bot/proc/getPatrolTurf()
|
||||||
|
var/minDist = INFINITY
|
||||||
|
var/obj/machinery/navbeacon/targ = locate() in get_turf(src)
|
||||||
|
|
||||||
|
if(!targ)
|
||||||
|
for(var/obj/machinery/navbeacon/N in navbeacons)
|
||||||
|
if(!N.codes["patrol"])
|
||||||
|
continue
|
||||||
|
if(get_dist(src, N) < minDist)
|
||||||
|
minDist = get_dist(src, N)
|
||||||
|
targ = N
|
||||||
|
|
||||||
|
if(targ && targ.codes["next_patrol"])
|
||||||
|
for(var/obj/machinery/navbeacon/N in navbeacons)
|
||||||
|
if(N.location == targ.codes["next_patrol"])
|
||||||
|
targ = N
|
||||||
|
break
|
||||||
|
|
||||||
|
if(targ)
|
||||||
|
return get_turf(targ)
|
||||||
return null
|
return null
|
||||||
|
|
||||||
/mob/living/bot/proc/handleIdle()
|
/mob/living/bot/proc/handleIdle()
|
||||||
@@ -255,15 +277,16 @@
|
|||||||
on = 1
|
on = 1
|
||||||
set_light(light_strength)
|
set_light(light_strength)
|
||||||
update_icons()
|
update_icons()
|
||||||
|
resetTarget()
|
||||||
|
patrol_path = list()
|
||||||
|
ignore_list = list()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/mob/living/bot/proc/turn_off()
|
/mob/living/bot/proc/turn_off()
|
||||||
on = 0
|
on = 0
|
||||||
|
busy = 0 // If ever stuck... reboot!
|
||||||
set_light(0)
|
set_light(0)
|
||||||
update_icons()
|
update_icons()
|
||||||
resetTarget()
|
|
||||||
patrol_path = list()
|
|
||||||
ignore_list = list()
|
|
||||||
|
|
||||||
/mob/living/bot/proc/explode()
|
/mob/living/bot/proc/explode()
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
var/cleaning = 0
|
var/cleaning = 0
|
||||||
var/screwloose = 0
|
var/screwloose = 0
|
||||||
var/oddbutton = 0
|
var/oddbutton = 0
|
||||||
var/should_patrol = 0
|
|
||||||
var/blood = 1
|
var/blood = 1
|
||||||
var/list/target_types = list()
|
var/list/target_types = list()
|
||||||
|
|
||||||
@@ -32,9 +31,11 @@
|
|||||||
if(oddbutton && prob(5)) // Make a big mess
|
if(oddbutton && prob(5)) // Make a big mess
|
||||||
visible_message("Something flies out of [src]. He seems to be acting oddly.")
|
visible_message("Something flies out of [src]. He seems to be acting oddly.")
|
||||||
var/obj/effect/decal/cleanable/blood/gibs/gib = new /obj/effect/decal/cleanable/blood/gibs(loc)
|
var/obj/effect/decal/cleanable/blood/gibs/gib = new /obj/effect/decal/cleanable/blood/gibs(loc)
|
||||||
ignore_list += gib
|
// TODO - I have a feeling weakrefs will not work in ignore_list, verify this ~Leshana
|
||||||
|
var/weakref/g = weakref(gib)
|
||||||
|
ignore_list += g
|
||||||
spawn(600)
|
spawn(600)
|
||||||
ignore_list -= gib
|
ignore_list -= g
|
||||||
|
|
||||||
/mob/living/bot/cleanbot/lookForTargets()
|
/mob/living/bot/cleanbot/lookForTargets()
|
||||||
for(var/obj/effect/decal/cleanable/D in view(world.view, src)) // There was some odd code to make it start with nearest decals, it's unnecessary, this works
|
for(var/obj/effect/decal/cleanable/D in view(world.view, src)) // There was some odd code to make it start with nearest decals, it's unnecessary, this works
|
||||||
@@ -110,7 +111,7 @@
|
|||||||
dat += "Maintenance panel is [open ? "opened" : "closed"]"
|
dat += "Maintenance panel is [open ? "opened" : "closed"]"
|
||||||
if(!locked || issilicon(user))
|
if(!locked || issilicon(user))
|
||||||
dat += "<BR>Cleans Blood: <A href='?src=\ref[src];operation=blood'>[blood ? "Yes" : "No"]</A><BR>"
|
dat += "<BR>Cleans Blood: <A href='?src=\ref[src];operation=blood'>[blood ? "Yes" : "No"]</A><BR>"
|
||||||
dat += "<BR>Patrol station: <A href='?src=\ref[src];operation=patrol'>[should_patrol ? "Yes" : "No"]</A><BR>"
|
dat += "<BR>Patrol station: <A href='?src=\ref[src];operation=patrol'>[will_patrol ? "Yes" : "No"]</A><BR>"
|
||||||
if(open && !locked)
|
if(open && !locked)
|
||||||
dat += "Odd looking screw twiddled: <A href='?src=\ref[src];operation=screw'>[screwloose ? "Yes" : "No"]</A><BR>"
|
dat += "Odd looking screw twiddled: <A href='?src=\ref[src];operation=screw'>[screwloose ? "Yes" : "No"]</A><BR>"
|
||||||
dat += "Weird button pressed: <A href='?src=\ref[src];operation=oddbutton'>[oddbutton ? "Yes" : "No"]</A>"
|
dat += "Weird button pressed: <A href='?src=\ref[src];operation=oddbutton'>[oddbutton ? "Yes" : "No"]</A>"
|
||||||
@@ -134,7 +135,7 @@
|
|||||||
blood = !blood
|
blood = !blood
|
||||||
get_targets()
|
get_targets()
|
||||||
if("patrol")
|
if("patrol")
|
||||||
should_patrol = !should_patrol
|
will_patrol = !will_patrol
|
||||||
patrol_path = null
|
patrol_path = null
|
||||||
if("screw")
|
if("screw")
|
||||||
screwloose = !screwloose
|
screwloose = !screwloose
|
||||||
|
|||||||
@@ -170,7 +170,7 @@
|
|||||||
visible_message("<span class='notice'>[src] starts [T.dead? "removing the plant from" : "harvesting"] \the [A].</span>")
|
visible_message("<span class='notice'>[src] starts [T.dead? "removing the plant from" : "harvesting"] \the [A].</span>")
|
||||||
|
|
||||||
busy = 1
|
busy = 1
|
||||||
if(do_after(src, 30))
|
if(do_after(src, 30, A))
|
||||||
visible_message("<span class='notice'>[src] [T.dead? "removes the plant from" : "harvests"] \the [A].</span>")
|
visible_message("<span class='notice'>[src] [T.dead? "removes the plant from" : "harvests"] \the [A].</span>")
|
||||||
T.attack_hand(src)
|
T.attack_hand(src)
|
||||||
if(FARMBOT_WATER)
|
if(FARMBOT_WATER)
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
visible_message("<span class='notice'>[src] starts watering \the [A].</span>")
|
visible_message("<span class='notice'>[src] starts watering \the [A].</span>")
|
||||||
|
|
||||||
busy = 1
|
busy = 1
|
||||||
if(do_after(src, 30))
|
if(do_after(src, 30, A))
|
||||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||||
visible_message("<span class='notice'>[src] waters \the [A].</span>")
|
visible_message("<span class='notice'>[src] waters \the [A].</span>")
|
||||||
tank.reagents.trans_to(T, 100 - T.waterlevel)
|
tank.reagents.trans_to(T, 100 - T.waterlevel)
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
visible_message("<span class='notice'>[src] starts fertilizing \the [A].</span>")
|
visible_message("<span class='notice'>[src] starts fertilizing \the [A].</span>")
|
||||||
|
|
||||||
busy = 1
|
busy = 1
|
||||||
if(do_after(src, 30))
|
if(do_after(src, 30, A))
|
||||||
|
|
||||||
visible_message("<span class='notice'>[src] fertilizes \the [A].</span>")
|
visible_message("<span class='notice'>[src] fertilizes \the [A].</span>")
|
||||||
T.reagents.add_reagent("ammonia", 10)
|
T.reagents.add_reagent("ammonia", 10)
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
// Configure whether or not floorbot will fix hull breaches.
|
||||||
|
// This can be a problem if it tries to pave over space or shuttles. That should be fixed but...
|
||||||
|
// If it can see space outside windows, it can be laggy since it keeps wondering if it should fix them.
|
||||||
|
// Therefore that functionality is disabled for now. But it can be turned on by uncommenting this.
|
||||||
|
// #define FLOORBOT_PATCHES_HOLES 1
|
||||||
|
|
||||||
/mob/living/bot/floorbot
|
/mob/living/bot/floorbot
|
||||||
name = "Floorbot"
|
name = "Floorbot"
|
||||||
desc = "A little floor repairing robot, he looks so excited!"
|
desc = "A little floor repairing robot, he looks so excited!"
|
||||||
@@ -25,7 +31,7 @@
|
|||||||
|
|
||||||
/mob/living/bot/floorbot/attack_hand(var/mob/user)
|
/mob/living/bot/floorbot/attack_hand(var/mob/user)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
var/dat
|
var/list/dat = list()
|
||||||
dat += "<TT><B>Automatic Station Floor Repairer v1.0</B></TT><BR><BR>"
|
dat += "<TT><B>Automatic Station Floor Repairer v1.0</B></TT><BR><BR>"
|
||||||
dat += "Status: <A href='?src=\ref[src];operation=start'>[src.on ? "On" : "Off"]</A><BR>"
|
dat += "Status: <A href='?src=\ref[src];operation=start'>[src.on ? "On" : "Off"]</A><BR>"
|
||||||
dat += "Maintenance panel is [open ? "opened" : "closed"]<BR>"
|
dat += "Maintenance panel is [open ? "opened" : "closed"]<BR>"
|
||||||
@@ -41,9 +47,9 @@
|
|||||||
else
|
else
|
||||||
bmode = "Disabled"
|
bmode = "Disabled"
|
||||||
dat += "<BR><BR>Bridge Mode : <A href='?src=\ref[src];operation=bridgemode'>[bmode]</A><BR>"
|
dat += "<BR><BR>Bridge Mode : <A href='?src=\ref[src];operation=bridgemode'>[bmode]</A><BR>"
|
||||||
|
var/datum/browser/popup = new(user, "autorepair", "Repairbot v1.1 controls")
|
||||||
user << browse("<HEAD><TITLE>Repairbot v1.0 controls</TITLE></HEAD>[dat]", "window=autorepair")
|
popup.set_content(jointext(dat,null))
|
||||||
onclose(user, "autorepair")
|
popup.open()
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/bot/floorbot/emag_act(var/remaining_charges, var/mob/user)
|
/mob/living/bot/floorbot/emag_act(var/remaining_charges, var/mob/user)
|
||||||
@@ -115,8 +121,9 @@
|
|||||||
target = T
|
target = T
|
||||||
return
|
return
|
||||||
T = get_step(T, targetdirection)
|
T = get_step(T, targetdirection)
|
||||||
|
return // In bridge mode we don't want to step off that line even to eat plates!
|
||||||
|
|
||||||
else // Fixing floors
|
#ifdef FLOORBOT_PATCHES_HOLES
|
||||||
for(var/turf/space/T in view(src)) // Breaches are of higher priority
|
for(var/turf/space/T in view(src)) // Breaches are of higher priority
|
||||||
if(confirmTarget(T))
|
if(confirmTarget(T))
|
||||||
target = T
|
target = T
|
||||||
@@ -126,8 +133,8 @@
|
|||||||
if(confirmTarget(T))
|
if(confirmTarget(T))
|
||||||
target = T
|
target = T
|
||||||
return
|
return
|
||||||
|
#endif
|
||||||
if(improvefloors)
|
// Look for broken floors even if we aren't improvefloors
|
||||||
for(var/turf/simulated/floor/T in view(src))
|
for(var/turf/simulated/floor/T in view(src))
|
||||||
if(confirmTarget(T))
|
if(confirmTarget(T))
|
||||||
target = T
|
target = T
|
||||||
@@ -148,7 +155,11 @@
|
|||||||
if(istype(A, /obj/item/stack/material/steel))
|
if(istype(A, /obj/item/stack/material/steel))
|
||||||
return (amount < maxAmount && maketiles)
|
return (amount < maxAmount && maketiles)
|
||||||
|
|
||||||
if(A.loc.name == "Space")
|
// Don't pave over all of space, build there only if in bridge mode
|
||||||
|
if(!targetdirection && istype(A.loc, /area/space)) // Note name == "Space" does not work!
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if(istype(A.loc, /area/shuttle)) // Do NOT mess with shuttle drop zones
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(emagged)
|
if(emagged)
|
||||||
@@ -157,14 +168,16 @@
|
|||||||
if(!amount)
|
if(!amount)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
#ifdef FLOORBOT_PATCHES_HOLES
|
||||||
if(istype(A, /turf/space))
|
if(istype(A, /turf/space))
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
if(istype(A, /turf/simulated/mineral/floor))
|
if(istype(A, /turf/simulated/mineral/floor))
|
||||||
return 1
|
return 1
|
||||||
|
#endif
|
||||||
|
|
||||||
var/turf/simulated/floor/T = A
|
var/turf/simulated/floor/T = A
|
||||||
return (istype(T) && improvefloors && !T.flooring && (get_turf(T) == loc || prob(40)))
|
return (istype(T) && (T.broken || T.burnt || (improvefloors && !T.flooring)) && (get_turf(T) == loc || prob(40)))
|
||||||
|
|
||||||
/mob/living/bot/floorbot/UnarmedAttack(var/atom/A, var/proximity)
|
/mob/living/bot/floorbot/UnarmedAttack(var/atom/A, var/proximity)
|
||||||
if(!..())
|
if(!..())
|
||||||
@@ -181,12 +194,12 @@
|
|||||||
busy = 1
|
busy = 1
|
||||||
update_icons()
|
update_icons()
|
||||||
if(F.flooring)
|
if(F.flooring)
|
||||||
visible_message("<span class='warning'>[src] begins to tear the floor tile from the floor!</span>")
|
visible_message("<span class='warning'>\The [src] begins to tear the floor tile from the floor!</span>")
|
||||||
if(do_after(src, 50))
|
if(do_after(src, 50))
|
||||||
F.break_tile_to_plating()
|
F.break_tile_to_plating()
|
||||||
addTiles(1)
|
addTiles(1)
|
||||||
else
|
else
|
||||||
visible_message("<span class='danger'>[src] begins to tear through the floor!</span>")
|
visible_message("<span class='danger'>\The [src] begins to tear through the floor!</span>")
|
||||||
if(do_after(src, 150)) // Extra time because this can and will kill.
|
if(do_after(src, 150)) // Extra time because this can and will kill.
|
||||||
F.ReplaceWithLattice()
|
F.ReplaceWithLattice()
|
||||||
addTiles(1)
|
addTiles(1)
|
||||||
@@ -201,7 +214,7 @@
|
|||||||
return
|
return
|
||||||
busy = 1
|
busy = 1
|
||||||
update_icons()
|
update_icons()
|
||||||
visible_message("<span class='notice'>[src] begins to repair the hole.</span>")
|
visible_message("<span class='notice'>\The [src] begins to repair the hole.</span>")
|
||||||
if(do_after(src, 50))
|
if(do_after(src, 50))
|
||||||
if(A && (locate(/obj/structure/lattice, A) && building == 1 || !locate(/obj/structure/lattice, A) && building == 2)) // Make sure that it still needs repairs
|
if(A && (locate(/obj/structure/lattice, A) && building == 1 || !locate(/obj/structure/lattice, A) && building == 2)) // Make sure that it still needs repairs
|
||||||
var/obj/item/I
|
var/obj/item/I
|
||||||
@@ -215,10 +228,20 @@
|
|||||||
update_icons()
|
update_icons()
|
||||||
else if(istype(A, /turf/simulated/floor))
|
else if(istype(A, /turf/simulated/floor))
|
||||||
var/turf/simulated/floor/F = A
|
var/turf/simulated/floor/F = A
|
||||||
if(!F.flooring && amount)
|
if(F.broken || F.burnt)
|
||||||
busy = 1
|
busy = 1
|
||||||
update_icons()
|
update_icons()
|
||||||
visible_message("<span class='notice'>[src] begins to improve the floor.</span>")
|
visible_message("<span class='notice'>\The [src] begins to remove the broken floor.</span>")
|
||||||
|
if(do_after(src, 50, F))
|
||||||
|
if(F.broken || F.burnt)
|
||||||
|
F.make_plating()
|
||||||
|
target = null
|
||||||
|
busy = 0
|
||||||
|
update_icons()
|
||||||
|
else if(!F.flooring && amount)
|
||||||
|
busy = 1
|
||||||
|
update_icons()
|
||||||
|
visible_message("<span class='notice'>\The [src] begins to improve the floor.</span>")
|
||||||
if(do_after(src, 50))
|
if(do_after(src, 50))
|
||||||
if(!F.flooring)
|
if(!F.flooring)
|
||||||
F.set_flooring(get_flooring_data(floor_build_type))
|
F.set_flooring(get_flooring_data(floor_build_type))
|
||||||
@@ -228,7 +251,7 @@
|
|||||||
update_icons()
|
update_icons()
|
||||||
else if(istype(A, /obj/item/stack/tile/floor) && amount < maxAmount)
|
else if(istype(A, /obj/item/stack/tile/floor) && amount < maxAmount)
|
||||||
var/obj/item/stack/tile/floor/T = A
|
var/obj/item/stack/tile/floor/T = A
|
||||||
visible_message("<span class='notice'>[src] begins to collect tiles.</span>")
|
visible_message("<span class='notice'>\The [src] begins to collect tiles.</span>")
|
||||||
busy = 1
|
busy = 1
|
||||||
update_icons()
|
update_icons()
|
||||||
if(do_after(src, 20))
|
if(do_after(src, 20))
|
||||||
@@ -242,7 +265,7 @@
|
|||||||
else if(istype(A, /obj/item/stack/material) && amount + 4 <= maxAmount)
|
else if(istype(A, /obj/item/stack/material) && amount + 4 <= maxAmount)
|
||||||
var/obj/item/stack/material/M = A
|
var/obj/item/stack/material/M = A
|
||||||
if(M.get_material_name() == DEFAULT_WALL_MATERIAL)
|
if(M.get_material_name() == DEFAULT_WALL_MATERIAL)
|
||||||
visible_message("<span class='notice'>[src] begins to make tiles.</span>")
|
visible_message("<span class='notice'>\The [src] begins to make tiles.</span>")
|
||||||
busy = 1
|
busy = 1
|
||||||
update_icons()
|
update_icons()
|
||||||
if(do_after(50))
|
if(do_after(50))
|
||||||
@@ -252,7 +275,7 @@
|
|||||||
|
|
||||||
/mob/living/bot/floorbot/explode()
|
/mob/living/bot/floorbot/explode()
|
||||||
turn_off()
|
turn_off()
|
||||||
visible_message("<span class='danger'>[src] blows apart!</span>")
|
visible_message("<span class='danger'>\The [src] blows apart!</span>")
|
||||||
var/turf/Tsec = get_turf(src)
|
var/turf/Tsec = get_turf(src)
|
||||||
|
|
||||||
var/obj/item/weapon/storage/toolbox/mechanical/N = new /obj/item/weapon/storage/toolbox/mechanical(Tsec)
|
var/obj/item/weapon/storage/toolbox/mechanical/N = new /obj/item/weapon/storage/toolbox/mechanical(Tsec)
|
||||||
|
|||||||
@@ -130,10 +130,7 @@
|
|||||||
|
|
||||||
if("sethome")
|
if("sethome")
|
||||||
var/new_dest
|
var/new_dest
|
||||||
var/list/beaconlist = new()
|
var/list/beaconlist = GetBeaconList()
|
||||||
for(var/obj/machinery/navbeacon/N in navbeacons)
|
|
||||||
beaconlist.Add(N.location)
|
|
||||||
beaconlist[N.location] = N
|
|
||||||
if(beaconlist.len)
|
if(beaconlist.len)
|
||||||
new_dest = input("Select new home tag", "Mulebot [suffix ? "([suffix])" : ""]", null) in null|beaconlist
|
new_dest = input("Select new home tag", "Mulebot [suffix ? "([suffix])" : ""]", null) in null|beaconlist
|
||||||
else
|
else
|
||||||
@@ -168,10 +165,7 @@
|
|||||||
targetName = "Home"
|
targetName = "Home"
|
||||||
if("SetD")
|
if("SetD")
|
||||||
var/new_dest
|
var/new_dest
|
||||||
var/list/beaconlist = new()
|
var/list/beaconlist = GetBeaconList()
|
||||||
for(var/obj/machinery/navbeacon/N in navbeacons)
|
|
||||||
beaconlist.Add(N.location)
|
|
||||||
beaconlist[N.location] = N
|
|
||||||
if(beaconlist.len)
|
if(beaconlist.len)
|
||||||
new_dest = input("Select new destination tag", "Mulebot [suffix ? "([suffix])" : ""]") in null|beaconlist
|
new_dest = input("Select new destination tag", "Mulebot [suffix ? "([suffix])" : ""]") in null|beaconlist
|
||||||
else
|
else
|
||||||
@@ -285,6 +279,15 @@
|
|||||||
new /obj/effect/decal/cleanable/blood/oil(Tsec)
|
new /obj/effect/decal/cleanable/blood/oil(Tsec)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
/mob/living/bot/mulebot/proc/GetBeaconList()
|
||||||
|
var/list/beaconlist = list()
|
||||||
|
for(var/obj/machinery/navbeacon/N in navbeacons)
|
||||||
|
if(!N.codes["delivery"])
|
||||||
|
continue
|
||||||
|
beaconlist.Add(N.location)
|
||||||
|
beaconlist[N.location] = N
|
||||||
|
return beaconlist
|
||||||
|
|
||||||
/mob/living/bot/mulebot/proc/load(var/atom/movable/C)
|
/mob/living/bot/mulebot/proc/load(var/atom/movable/C)
|
||||||
if(busy || load || get_dist(C, src) > 1 || !isturf(C.loc))
|
if(busy || load || get_dist(C, src) > 1 || !isturf(C.loc))
|
||||||
return
|
return
|
||||||
@@ -304,11 +307,11 @@
|
|||||||
|
|
||||||
busy = 1
|
busy = 1
|
||||||
|
|
||||||
C.loc = loc
|
C.forceMove(loc)
|
||||||
sleep(2)
|
sleep(2)
|
||||||
if(C.loc != loc) //To prevent you from going onto more than one bot.
|
if(C.loc != loc) //To prevent you from going onto more than one bot.
|
||||||
return
|
return
|
||||||
C.loc = src
|
C.forceMove(src)
|
||||||
load = C
|
load = C
|
||||||
|
|
||||||
C.pixel_y += 9
|
C.pixel_y += 9
|
||||||
@@ -325,7 +328,7 @@
|
|||||||
busy = 1
|
busy = 1
|
||||||
overlays.Cut()
|
overlays.Cut()
|
||||||
|
|
||||||
load.loc = loc
|
load.forceMove(loc)
|
||||||
load.pixel_y -= 9
|
load.pixel_y -= 9
|
||||||
load.layer = initial(load.layer)
|
load.layer = initial(load.layer)
|
||||||
|
|
||||||
@@ -338,7 +341,7 @@
|
|||||||
if(AM == botcard || AM == access_scanner)
|
if(AM == botcard || AM == access_scanner)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
AM.loc = loc
|
AM.forceMove(loc)
|
||||||
AM.layer = initial(AM.layer)
|
AM.layer = initial(AM.layer)
|
||||||
AM.pixel_y = initial(AM.pixel_y)
|
AM.pixel_y = initial(AM.pixel_y)
|
||||||
busy = 0
|
busy = 0
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
|
#define SECBOT_WAIT_TIME 5 //number of in-game seconds to wait for someone to surrender
|
||||||
|
#define SECBOT_THREAT_ARREST 4 //threat level at which we decide to arrest someone
|
||||||
|
#define SECBOT_THREAT_ATTACK 8 //threat level at which was assume immediate danger and attack right away
|
||||||
|
|
||||||
/mob/living/bot/secbot
|
/mob/living/bot/secbot
|
||||||
name = "Securitron"
|
name = "Securitron"
|
||||||
desc = "A little security robot. He looks less than thrilled."
|
desc = "A little security robot. He looks less than thrilled."
|
||||||
icon_state = "secbot0"
|
icon_state = "secbot0"
|
||||||
maxHealth = 100
|
maxHealth = 100
|
||||||
health = 100
|
health = 100
|
||||||
req_one_access = list(access_robotics, access_security, access_forensics_lockers)
|
req_one_access = list(access_security, access_forensics_lockers)
|
||||||
botcard_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels)
|
botcard_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels)
|
||||||
patrol_speed = 2
|
patrol_speed = 2
|
||||||
target_speed = 3
|
target_speed = 3
|
||||||
@@ -14,18 +18,17 @@
|
|||||||
var/check_arrest = 1 // If true, arrests people who are set to arrest.
|
var/check_arrest = 1 // If true, arrests people who are set to arrest.
|
||||||
var/arrest_type = 0 // If true, doesn't handcuff. You monster.
|
var/arrest_type = 0 // If true, doesn't handcuff. You monster.
|
||||||
var/declare_arrests = 0 // If true, announces arrests over sechuds.
|
var/declare_arrests = 0 // If true, announces arrests over sechuds.
|
||||||
var/auto_patrol = 0 // If true, patrols on its own
|
|
||||||
|
|
||||||
var/is_ranged = 0
|
var/is_ranged = 0
|
||||||
var/awaiting_surrender = 0
|
var/awaiting_surrender = 0
|
||||||
|
|
||||||
var/list/threat_found_sounds = new('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg')
|
var/list/threat_found_sounds = list('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg')
|
||||||
var/list/preparing_arrest_sounds = new('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg')
|
var/list/preparing_arrest_sounds = list('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/bcreep.ogg')
|
||||||
|
|
||||||
/mob/living/bot/secbot/beepsky
|
/mob/living/bot/secbot/beepsky
|
||||||
name = "Officer Beepsky"
|
name = "Officer Beepsky"
|
||||||
desc = "It's Officer Beep O'sky! Powered by a potato and a shot of whiskey."
|
desc = "It's Officer Beep O'sky! Powered by a potato and a shot of whiskey."
|
||||||
auto_patrol = 1
|
will_patrol = 1
|
||||||
|
|
||||||
/mob/living/bot/secbot/update_icons()
|
/mob/living/bot/secbot/update_icons()
|
||||||
if(on && busy)
|
if(on && busy)
|
||||||
@@ -40,7 +43,7 @@
|
|||||||
|
|
||||||
/mob/living/bot/secbot/attack_hand(var/mob/user)
|
/mob/living/bot/secbot/attack_hand(var/mob/user)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
var/dat
|
var/list/dat = list()
|
||||||
dat += "<TT><B>Automatic Security Unit</B></TT><BR><BR>"
|
dat += "<TT><B>Automatic Security Unit</B></TT><BR><BR>"
|
||||||
dat += "Status: <A href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</A><BR>"
|
dat += "Status: <A href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</A><BR>"
|
||||||
dat += "Behaviour controls are [locked ? "locked" : "unlocked"]<BR>"
|
dat += "Behaviour controls are [locked ? "locked" : "unlocked"]<BR>"
|
||||||
@@ -51,10 +54,10 @@
|
|||||||
dat += "Check Arrest Status: <A href='?src=\ref[src];operation=ignorearr'>[check_arrest ? "Yes" : "No"]</A><BR>"
|
dat += "Check Arrest Status: <A href='?src=\ref[src];operation=ignorearr'>[check_arrest ? "Yes" : "No"]</A><BR>"
|
||||||
dat += "Operating Mode: <A href='?src=\ref[src];operation=switchmode'>[arrest_type ? "Detain" : "Arrest"]</A><BR>"
|
dat += "Operating Mode: <A href='?src=\ref[src];operation=switchmode'>[arrest_type ? "Detain" : "Arrest"]</A><BR>"
|
||||||
dat += "Report Arrests: <A href='?src=\ref[src];operation=declarearrests'>[declare_arrests ? "Yes" : "No"]</A><BR>"
|
dat += "Report Arrests: <A href='?src=\ref[src];operation=declarearrests'>[declare_arrests ? "Yes" : "No"]</A><BR>"
|
||||||
dat += "Auto Patrol: <A href='?src=\ref[src];operation=patrol'>[auto_patrol ? "On" : "Off"]</A>"
|
dat += "Auto Patrol: <A href='?src=\ref[src];operation=patrol'>[will_patrol ? "On" : "Off"]</A>"
|
||||||
user << browse("<HEAD><TITLE>Securitron controls</TITLE></HEAD>[dat]", "window=autosec")
|
var/datum/browser/popup = new(user, "autosec", "Securitron controls")
|
||||||
onclose(user, "autosec")
|
popup.set_content(jointext(dat,null))
|
||||||
return
|
popup.open()
|
||||||
|
|
||||||
/mob/living/bot/secbot/Topic(href, href_list)
|
/mob/living/bot/secbot/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
@@ -80,7 +83,7 @@
|
|||||||
if("switchmode")
|
if("switchmode")
|
||||||
arrest_type = !arrest_type
|
arrest_type = !arrest_type
|
||||||
if("patrol")
|
if("patrol")
|
||||||
auto_patrol = !auto_patrol
|
will_patrol = !will_patrol
|
||||||
if("declarearrests")
|
if("declarearrests")
|
||||||
declare_arrests = !declare_arrests
|
declare_arrests = !declare_arrests
|
||||||
attack_hand(usr)
|
attack_hand(usr)
|
||||||
@@ -99,10 +102,46 @@
|
|||||||
|
|
||||||
/mob/living/bot/secbot/attackby(var/obj/item/O, var/mob/user)
|
/mob/living/bot/secbot/attackby(var/obj/item/O, var/mob/user)
|
||||||
var/curhealth = health
|
var/curhealth = health
|
||||||
..()
|
. = ..()
|
||||||
if(health < curhealth)
|
if(health < curhealth)
|
||||||
target = user
|
react_to_attack(user)
|
||||||
awaiting_surrender = 5
|
|
||||||
|
/mob/living/bot/secbot/bullet_act(var/obj/item/projectile/P)
|
||||||
|
var/curhealth = health
|
||||||
|
var/mob/shooter = P.firer
|
||||||
|
. = ..()
|
||||||
|
//if we already have a target just ignore to avoid lots of checking
|
||||||
|
if(!target && health < curhealth && shooter && (shooter in view(world.view, src)))
|
||||||
|
react_to_attack(shooter)
|
||||||
|
|
||||||
|
/mob/living/bot/secbot/proc/react_to_attack(mob/attacker)
|
||||||
|
if(!target)
|
||||||
|
playsound(src.loc, pick(threat_found_sounds), 50)
|
||||||
|
broadcast_security_hud_message("[src] was attacked by a hostile <b>[target_name(attacker)]</b> in <b>[get_area(src)]</b>.", src)
|
||||||
|
target = attacker
|
||||||
|
awaiting_surrender = INFINITY // Don't try and wait for surrender
|
||||||
|
|
||||||
|
// Say "freeze!" and demand surrender
|
||||||
|
/mob/living/bot/secbot/proc/demand_surrender(mob/target, var/threat)
|
||||||
|
var/suspect_name = target_name(target)
|
||||||
|
if(declare_arrests)
|
||||||
|
broadcast_security_hud_message("[src] is [arrest_type ? "detaining" : "arresting"] a level [threat] suspect <b>[suspect_name]</b> in <b>[get_area(src)]</b>.", src)
|
||||||
|
say("Down on the floor, [suspect_name]! You have [SECBOT_WAIT_TIME] seconds to comply.")
|
||||||
|
playsound(src.loc, pick(preparing_arrest_sounds), 50)
|
||||||
|
// Register to be told when the target moves
|
||||||
|
moved_event.register(target, src, /mob/living/bot/secbot/proc/target_moved)
|
||||||
|
|
||||||
|
// Callback invoked if the registered target moves
|
||||||
|
/mob/living/bot/secbot/proc/target_moved(atom/movable/moving_instance, atom/old_loc, atom/new_loc)
|
||||||
|
if(get_dist(get_turf(src), get_turf(target)) >= 1)
|
||||||
|
awaiting_surrender = INFINITY // Done waiting!
|
||||||
|
moved_event.unregister(moving_instance, src)
|
||||||
|
|
||||||
|
/mob/living/bot/secbot/resetTarget()
|
||||||
|
..()
|
||||||
|
moved_event.unregister(target, src)
|
||||||
|
awaiting_surrender = -1
|
||||||
|
walk_to(src, 0)
|
||||||
|
|
||||||
/mob/living/bot/secbot/startPatrol()
|
/mob/living/bot/secbot/startPatrol()
|
||||||
if(!locked) // Stop running away when we set you up
|
if(!locked) // Stop running away when we set you up
|
||||||
@@ -112,8 +151,7 @@
|
|||||||
/mob/living/bot/secbot/confirmTarget(var/atom/A)
|
/mob/living/bot/secbot/confirmTarget(var/atom/A)
|
||||||
if(!..())
|
if(!..())
|
||||||
return 0
|
return 0
|
||||||
|
return (check_threat(A) >= SECBOT_THREAT_ARREST)
|
||||||
return (check_threat(A) > 3)
|
|
||||||
|
|
||||||
/mob/living/bot/secbot/lookForTargets()
|
/mob/living/bot/secbot/lookForTargets()
|
||||||
for(var/mob/living/M in view(src))
|
for(var/mob/living/M in view(src))
|
||||||
@@ -127,23 +165,17 @@
|
|||||||
custom_emote(1, "points at [M.name]!")
|
custom_emote(1, "points at [M.name]!")
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/bot/secbot/calcTargetPath()
|
|
||||||
..()
|
|
||||||
if(awaiting_surrender != -1)
|
|
||||||
awaiting_surrender = 5 // This implies that a) we have already approached the target and b) it has moved after the warning
|
|
||||||
|
|
||||||
/mob/living/bot/secbot/handleAdjacentTarget()
|
/mob/living/bot/secbot/handleAdjacentTarget()
|
||||||
if(awaiting_surrender < 5 && ishuman(target) && !target:lying)
|
var/mob/living/carbon/human/H = target
|
||||||
if(awaiting_surrender == -1)
|
var/threat = check_threat(target)
|
||||||
say("Down on the floor, [target]! You have five seconds to comply.")
|
if(awaiting_surrender < SECBOT_WAIT_TIME && istype(H) && !H.lying && threat < SECBOT_THREAT_ATTACK)
|
||||||
|
if(awaiting_surrender == -1) // On first tick of awaiting...
|
||||||
|
demand_surrender(target, threat)
|
||||||
++awaiting_surrender
|
++awaiting_surrender
|
||||||
else
|
else
|
||||||
|
if(declare_arrests)
|
||||||
|
broadcast_security_hud_message("[src] is [arrest_type ? "detaining" : "arresting"] a level [threat] suspect <b>[target_name(target)]</b> in <b>[get_area(src)]</b>.", src)
|
||||||
UnarmedAttack(target)
|
UnarmedAttack(target)
|
||||||
if(ishuman(target) && declare_arrests)
|
|
||||||
var/area/location = get_area(src)
|
|
||||||
broadcast_security_hud_message("[src] is [arrest_type ? "detaining" : "arresting"] a level [check_threat(target)] suspect <b>[target]</b> in <b>[location]</b>.", src)
|
|
||||||
|
|
||||||
// say("Engaging patrol mode.")
|
|
||||||
|
|
||||||
/mob/living/bot/secbot/UnarmedAttack(var/mob/M, var/proximity)
|
/mob/living/bot/secbot/UnarmedAttack(var/mob/M, var/proximity)
|
||||||
if(!..())
|
if(!..())
|
||||||
@@ -170,17 +202,15 @@
|
|||||||
spawn(2)
|
spawn(2)
|
||||||
busy = 0
|
busy = 0
|
||||||
update_icons()
|
update_icons()
|
||||||
visible_message("<span class='warning'>[C] was prodded by [src] with a stun baton!</span>")
|
visible_message("<span class='warning'>\The [C] was prodded by \the [src] with a stun baton!</span>")
|
||||||
else
|
else
|
||||||
playsound(loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2)
|
playsound(loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2)
|
||||||
visible_message("<span class='warning'>[src] is trying to put handcuffs on [C]!</span>")
|
visible_message("<span class='warning'>\The [src] is trying to put handcuffs on \the [C]!</span>")
|
||||||
busy = 1
|
busy = 1
|
||||||
if(do_mob(src, C, 60))
|
if(do_mob(src, C, 60))
|
||||||
if(!C.handcuffed)
|
if(!C.handcuffed)
|
||||||
C.handcuffed = new /obj/item/weapon/handcuffs(C)
|
C.handcuffed = new /obj/item/weapon/handcuffs(C)
|
||||||
C.update_inv_handcuffed()
|
C.update_inv_handcuffed()
|
||||||
if(preparing_arrest_sounds.len)
|
|
||||||
playsound(loc, pick(preparing_arrest_sounds), 50, 0)
|
|
||||||
busy = 0
|
busy = 0
|
||||||
else if(istype(M, /mob/living/simple_animal))
|
else if(istype(M, /mob/living/simple_animal))
|
||||||
var/mob/living/simple_animal/S = M
|
var/mob/living/simple_animal/S = M
|
||||||
@@ -193,7 +223,8 @@
|
|||||||
spawn(2)
|
spawn(2)
|
||||||
busy = 0
|
busy = 0
|
||||||
update_icons()
|
update_icons()
|
||||||
visible_message("<span class='warning'>[M] was beaten by [src] with a stun baton!</span>")
|
visible_message("<span class='warning'>\The [M] was beaten by \the [src] with a stun baton!</span>")
|
||||||
|
|
||||||
|
|
||||||
/mob/living/bot/secbot/explode()
|
/mob/living/bot/secbot/explode()
|
||||||
visible_message("<span class='warning'>[src] blows apart!</span>")
|
visible_message("<span class='warning'>[src] blows apart!</span>")
|
||||||
@@ -215,11 +246,17 @@
|
|||||||
new /obj/effect/decal/cleanable/blood/oil(Tsec)
|
new /obj/effect/decal/cleanable/blood/oil(Tsec)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/bot/secbot/proc/target_name(mob/living/T)
|
||||||
|
if(ishuman(T))
|
||||||
|
var/mob/living/carbon/human/H = T
|
||||||
|
return H.get_id_name("unidentified person")
|
||||||
|
return "unidentified lifeform"
|
||||||
|
|
||||||
/mob/living/bot/secbot/proc/check_threat(var/mob/living/M)
|
/mob/living/bot/secbot/proc/check_threat(var/mob/living/M)
|
||||||
if(!M || !istype(M) || M.stat == DEAD || src == M)
|
if(!M || !istype(M) || M.stat == DEAD || src == M)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(emagged)
|
if(emagged && !M.incapacitated()) //check incapacitated so emagged secbots don't keep attacking the same target forever
|
||||||
return 10
|
return 10
|
||||||
|
|
||||||
return M.assess_perp(access_scanner, 0, idcheck, check_records, check_arrest)
|
return M.assess_perp(access_scanner, 0, idcheck, check_records, check_arrest)
|
||||||
|
|||||||
@@ -190,6 +190,7 @@ var/global/list/robot_modules = list(
|
|||||||
|
|
||||||
/obj/item/weapon/robot_module/robot/medical/surgeon/New()
|
/obj/item/weapon/robot_module/robot/medical/surgeon/New()
|
||||||
..()
|
..()
|
||||||
|
src.modules += new /obj/item/borg/sight/hud/med(src)
|
||||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||||
src.modules += new /obj/item/weapon/reagent_containers/borghypo(src)
|
src.modules += new /obj/item/weapon/reagent_containers/borghypo(src)
|
||||||
src.modules += new /obj/item/weapon/surgical/scalpel(src)
|
src.modules += new /obj/item/weapon/surgical/scalpel(src)
|
||||||
|
|||||||
@@ -70,30 +70,30 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
|||||||
parts = list(BP_HEAD)
|
parts = list(BP_HEAD)
|
||||||
monitor_styles = standard_monitor_styles
|
monitor_styles = standard_monitor_styles
|
||||||
|
|
||||||
/datum/robolimb/hesphiastos
|
/datum/robolimb/hephaestus
|
||||||
company = "Hesphiastos"
|
company = "Hephaestus"
|
||||||
desc = "This limb has a militaristic black and green casing with gold stripes."
|
desc = "This limb has a militaristic black and green casing with gold stripes."
|
||||||
icon = 'icons/mob/human_races/cyberlimbs/hesphiastos/hesphiastos_main.dmi'
|
icon = 'icons/mob/human_races/cyberlimbs/hephaestus/hephaestus_main.dmi'
|
||||||
unavailable_to_build = 1
|
unavailable_to_build = 1
|
||||||
|
|
||||||
/datum/robolimb/hesphiastos_alt1
|
/datum/robolimb/hephaestus_alt1
|
||||||
company = "Hesphiastos - Frontier"
|
company = "Hephaistos - Frontier"
|
||||||
desc = "A rugged prosthetic head featuring the standard Hesphiastos theme, a visor and an external display."
|
desc = "A rugged prosthetic head featuring the standard Hephaestus theme, a visor and an external display."
|
||||||
icon = 'icons/mob/human_races/cyberlimbs/hesphiastos/hesphiastos_alt1.dmi'
|
icon = 'icons/mob/human_races/cyberlimbs/hephaestus/hephaestus_alt1.dmi'
|
||||||
unavailable_to_build = 1
|
unavailable_to_build = 1
|
||||||
parts = list(BP_HEAD)
|
parts = list(BP_HEAD)
|
||||||
monitor_styles = "blank=hesphiastos_alt_off;\
|
monitor_styles = "blank=hephaestus_alt_off;\
|
||||||
pink=hesphiastos_alt_pink;\
|
pink=hephaestus_alt_pink;\
|
||||||
orange=hesphiastos_alt_orange;\
|
orange=hephaestus_alt_orange;\
|
||||||
goggles=hesphiastos_alt_goggles;\
|
goggles=hephaestus_alt_goggles;\
|
||||||
scroll=hesphiastos_alt_scroll;\
|
scroll=hephaestus_alt_scroll;\
|
||||||
rgb=hesphiastos_alt_rgb;\
|
rgb=hephaestus_alt_rgb;\
|
||||||
rainbow=hesphiastos_alt_rainbow"
|
rainbow=hephaestus_alt_rainbow"
|
||||||
|
|
||||||
/datum/robolimb/hesphiastos_monitor
|
/datum/robolimb/hephaistos_monitor
|
||||||
company = "Hesphiastos Monitor"
|
company = "Hephaestus Monitor"
|
||||||
desc = "Hesphiastos' unique spin on a popular prosthetic head model. It looks rugged and sturdy."
|
desc = "Hephaestus' unique spin on a popular prosthetic head model. It looks rugged and sturdy."
|
||||||
icon = 'icons/mob/human_races/cyberlimbs/hesphiastos/hesphiastos_monitor.dmi'
|
icon = 'icons/mob/human_races/cyberlimbs/hephaestus/hephaestus_monitor.dmi'
|
||||||
unavailable_to_build = 1
|
unavailable_to_build = 1
|
||||||
parts = list(BP_HEAD)
|
parts = list(BP_HEAD)
|
||||||
monitor_styles = standard_monitor_styles
|
monitor_styles = standard_monitor_styles
|
||||||
@@ -190,8 +190,8 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
|||||||
/obj/item/weapon/disk/limb/bishop
|
/obj/item/weapon/disk/limb/bishop
|
||||||
company = "Bishop"
|
company = "Bishop"
|
||||||
|
|
||||||
/obj/item/weapon/disk/limb/hesphiastos
|
/obj/item/weapon/disk/limb/hephaestus
|
||||||
company = "Hesphiastos"
|
company = "Hephaestus"
|
||||||
|
|
||||||
/obj/item/weapon/disk/limb/morpheus
|
/obj/item/weapon/disk/limb/morpheus
|
||||||
company = "Morpheus"
|
company = "Morpheus"
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
if(current_size >= STAGE_THREE)
|
if(current_size >= STAGE_THREE)
|
||||||
var/list/handlist = list(l_hand, r_hand)
|
var/list/handlist = list(l_hand, r_hand)
|
||||||
for(var/obj/item/hand in handlist)
|
for(var/obj/item/hand in handlist)
|
||||||
if(prob(current_size*5) && hand.w_class >= ((11-current_size)/2) && u_equip(hand))
|
if(prob(current_size*5) && hand.w_class >= ((11-current_size)/2) && unEquip(hand))
|
||||||
step_towards(hand, src)
|
step_towards(hand, src)
|
||||||
src << "<span class = 'warning'>The [S] pulls \the [hand] from your grip!</span>"
|
src << "<span class = 'warning'>The [S] pulls \the [hand] from your grip!</span>"
|
||||||
apply_effect(current_size * 3, IRRADIATE)
|
apply_effect(current_size * 3, IRRADIATE)
|
||||||
|
|||||||
@@ -298,7 +298,7 @@
|
|||||||
if(target && prob(60))
|
if(target && prob(60))
|
||||||
movement_dir = get_dir(src,target) //moves to a singulo beacon, if there is one
|
movement_dir = get_dir(src,target) //moves to a singulo beacon, if there is one
|
||||||
|
|
||||||
if(current_size >= 9)//The superlarge one does not care about things in its way
|
if(current_size >= STAGE_FIVE)//The superlarge one does not care about things in its way
|
||||||
spawn(0)
|
spawn(0)
|
||||||
step(src, movement_dir)
|
step(src, movement_dir)
|
||||||
spawn(1)
|
spawn(1)
|
||||||
@@ -319,17 +319,17 @@
|
|||||||
var/steps = 0
|
var/steps = 0
|
||||||
if(!step)
|
if(!step)
|
||||||
switch(current_size)
|
switch(current_size)
|
||||||
if(1)
|
if(STAGE_ONE)
|
||||||
steps = 1
|
steps = 1
|
||||||
if(3)
|
if(STAGE_TWO)
|
||||||
steps = 3//Yes this is right
|
steps = 3//Yes this is right
|
||||||
if(5)
|
if(STAGE_THREE)
|
||||||
steps = 3
|
steps = 3
|
||||||
if(7)
|
if(STAGE_FOUR)
|
||||||
steps = 4
|
steps = 4
|
||||||
if(9)
|
if(STAGE_FIVE)
|
||||||
steps = 5
|
steps = 5
|
||||||
if(11)
|
if(STAGE_SUPER)
|
||||||
steps = 6
|
steps = 6
|
||||||
else
|
else
|
||||||
steps = step
|
steps = step
|
||||||
@@ -397,7 +397,7 @@
|
|||||||
mezzer()
|
mezzer()
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
if(current_size == 11)
|
if(current_size == STAGE_SUPER)
|
||||||
smwave()
|
smwave()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -429,18 +429,18 @@
|
|||||||
if(M.stat == CONSCIOUS)
|
if(M.stat == CONSCIOUS)
|
||||||
if (istype(M,/mob/living/carbon/human))
|
if (istype(M,/mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = M
|
var/mob/living/carbon/human/H = M
|
||||||
if(istype(H.glasses,/obj/item/clothing/glasses/meson) && current_size != 11)
|
if(istype(H.glasses,/obj/item/clothing/glasses/meson) && current_size != STAGE_SUPER)
|
||||||
H << "<span class=\"notice\">You look directly into The [src.name], good thing you had your protective eyewear on!</span>"
|
H << "<span class=\"notice\">You look directly into The [src.name], good thing you had your protective eyewear on!</span>"
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
H << "<span class=\"warning\">You look directly into The [src.name], but your eyewear does absolutely nothing to protect you from it!</span>"
|
H << "<span class=\"warning\">You look directly into The [src.name], but your eyewear does absolutely nothing to protect you from it!</span>"
|
||||||
M << "<span class='danger'>You look directly into The [src.name] and feel [current_size == 11 ? "helpless" : "weak"].</span>"
|
M << "<span class='danger'>You look directly into The [src.name] and feel [current_size == STAGE_SUPER ? "helpless" : "weak"].</span>"
|
||||||
M.apply_effect(3, STUN)
|
M.apply_effect(3, STUN)
|
||||||
for(var/mob/O in viewers(M, null))
|
for(var/mob/O in viewers(M, null))
|
||||||
O.show_message(text("<span class='danger'>[] stares blankly at The []!</span>", M, src), 1)
|
O.show_message(text("<span class='danger'>[] stares blankly at The []!</span>", M, src), 1)
|
||||||
|
|
||||||
/obj/singularity/proc/emp_area()
|
/obj/singularity/proc/emp_area()
|
||||||
if(current_size != 11)
|
if(current_size != STAGE_SUPER)
|
||||||
empulse(src, 4, 6, 8, 10)
|
empulse(src, 4, 6, 8, 10)
|
||||||
else
|
else
|
||||||
empulse(src, 12, 14, 16, 18)
|
empulse(src, 12, 14, 16, 18)
|
||||||
@@ -467,15 +467,15 @@
|
|||||||
overlays = 0
|
overlays = 0
|
||||||
move_self = 0
|
move_self = 0
|
||||||
switch (current_size)
|
switch (current_size)
|
||||||
if(1)
|
if(STAGE_ONE)
|
||||||
overlays += image('icons/obj/singularity.dmi',"chain_s1")
|
overlays += image('icons/obj/singularity.dmi',"chain_s1")
|
||||||
if(3)
|
if(STAGE_TWO)
|
||||||
overlays += image('icons/effects/96x96.dmi',"chain_s3")
|
overlays += image('icons/effects/96x96.dmi',"chain_s3")
|
||||||
if(5)
|
if(STAGE_THREE)
|
||||||
overlays += image('icons/effects/160x160.dmi',"chain_s5")
|
overlays += image('icons/effects/160x160.dmi',"chain_s5")
|
||||||
if(7)
|
if(STAGE_FOUR)
|
||||||
overlays += image('icons/effects/224x224.dmi',"chain_s7")
|
overlays += image('icons/effects/224x224.dmi',"chain_s7")
|
||||||
if(9)
|
if(STAGE_FIVE)
|
||||||
overlays += image('icons/effects/288x288.dmi',"chain_s9")
|
overlays += image('icons/effects/288x288.dmi',"chain_s9")
|
||||||
|
|
||||||
/obj/singularity/proc/on_release()
|
/obj/singularity/proc/on_release()
|
||||||
|
|||||||
36
html/changelogs/Anewbe - Communicator Drag.yml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
################################
|
||||||
|
# Example Changelog File
|
||||||
|
#
|
||||||
|
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||||
|
#
|
||||||
|
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||||
|
# When it is, any changes listed below will disappear.
|
||||||
|
#
|
||||||
|
# Valid Prefixes:
|
||||||
|
# bugfix
|
||||||
|
# wip (For works in progress)
|
||||||
|
# tweak
|
||||||
|
# soundadd
|
||||||
|
# sounddel
|
||||||
|
# rscadd (general adding of nice things)
|
||||||
|
# rscdel (general deleting of nice things)
|
||||||
|
# imageadd
|
||||||
|
# imagedel
|
||||||
|
# maptweak
|
||||||
|
# spellcheck (typo fixes)
|
||||||
|
# experiment
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Your name.
|
||||||
|
author: Anewbe
|
||||||
|
|
||||||
|
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||||
|
delete-after: True
|
||||||
|
|
||||||
|
# Any changes you've made. See valid prefix list above.
|
||||||
|
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||||
|
# SCREW THIS UP AND IT WON'T WORK.
|
||||||
|
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||||
|
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||||
|
changes:
|
||||||
|
- rscadd: "You can now click+drag communicators to access them."
|
||||||
37
html/changelogs/Anewbe - Hephaestus Industries.yml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
################################
|
||||||
|
# Example Changelog File
|
||||||
|
#
|
||||||
|
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||||
|
#
|
||||||
|
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||||
|
# When it is, any changes listed below will disappear.
|
||||||
|
#
|
||||||
|
# Valid Prefixes:
|
||||||
|
# bugfix
|
||||||
|
# wip (For works in progress)
|
||||||
|
# tweak
|
||||||
|
# soundadd
|
||||||
|
# sounddel
|
||||||
|
# rscadd (general adding of nice things)
|
||||||
|
# rscdel (general deleting of nice things)
|
||||||
|
# imageadd
|
||||||
|
# imagedel
|
||||||
|
# maptweak
|
||||||
|
# spellcheck (typo fixes)
|
||||||
|
# experiment
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Your name.
|
||||||
|
author: Anewbe
|
||||||
|
|
||||||
|
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||||
|
delete-after: True
|
||||||
|
|
||||||
|
# Any changes you've made. See valid prefix list above.
|
||||||
|
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||||
|
# SCREW THIS UP AND IT WON'T WORK.
|
||||||
|
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||||
|
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||||
|
changes:
|
||||||
|
- rscadd: "Hephaistos Industries prosthetic disks can now be ordered again."
|
||||||
|
- wip: "Hephaistos Industries is the correct spelling for that company, per the wiki. Please submit a bug report if you find any references that don't match."
|
||||||
37
html/changelogs/Atermonera - Surgeonborg.yml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
################################
|
||||||
|
# Example Changelog File
|
||||||
|
#
|
||||||
|
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||||
|
#
|
||||||
|
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||||
|
# When it is, any changes listed below will disappear.
|
||||||
|
#
|
||||||
|
# Valid Prefixes:
|
||||||
|
# bugfix
|
||||||
|
# wip (For works in progress)
|
||||||
|
# tweak
|
||||||
|
# soundadd
|
||||||
|
# sounddel
|
||||||
|
# rscadd (general adding of nice things)
|
||||||
|
# rscdel (general deleting of nice things)
|
||||||
|
# imageadd
|
||||||
|
# imagedel
|
||||||
|
# maptweak
|
||||||
|
# spellcheck (typo fixes)
|
||||||
|
# experiment
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Your name.
|
||||||
|
author: Atermonera
|
||||||
|
|
||||||
|
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||||
|
delete-after: True
|
||||||
|
|
||||||
|
# Any changes you've made. See valid prefix list above.
|
||||||
|
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||||
|
# SCREW THIS UP AND IT WON'T WORK.
|
||||||
|
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||||
|
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||||
|
changes:
|
||||||
|
- rscadd: "Surgeon Borgs now have a proper medical hud module"
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 599 B After Width: | Height: | Size: 599 B |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 577 B After Width: | Height: | Size: 577 B |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
@@ -891,7 +891,7 @@
|
|||||||
"arg" = (/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/structure/closet/crate/secure{name = "Gold Crate"; req_access = list(19)},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
|
"arg" = (/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/structure/closet/crate/secure{name = "Gold Crate"; req_access = list(19)},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage)
|
||||||
"arh" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/storage/primary)
|
"arh" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/storage/primary)
|
||||||
"ari" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = 12; pixel_y = -24},/turf/simulated/floor/tiled,/area/storage/primary)
|
"ari" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = 12; pixel_y = -24},/turf/simulated/floor/tiled,/area/storage/primary)
|
||||||
"arj" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Tool Storage"},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/storage/primary)
|
"arj" = (/obj/machinery/navbeacon/delivery/west{location = "Tool Storage"},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/storage/primary)
|
||||||
"ark" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/storage/primary)
|
"ark" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/storage/primary)
|
||||||
"arl" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/storage/primary)
|
"arl" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/storage/primary)
|
||||||
"arm" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/storage/primary)
|
"arm" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/storage/primary)
|
||||||
@@ -1167,7 +1167,7 @@
|
|||||||
"aww" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/research_shuttle)
|
"aww" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/research_shuttle)
|
||||||
"awx" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/light/small{dir = 1},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/maintenance/disposal)
|
"awx" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/light/small{dir = 1},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/maintenance/disposal)
|
||||||
"awy" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor,/area/maintenance/disposal)
|
"awy" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor,/area/maintenance/disposal)
|
||||||
"awz" = (/obj/effect/floor_decal/industrial/loading,/obj/machinery/door/firedoor/border_only,/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Command"},/turf/simulated/floor/tiled,/area/bridge_hallway)
|
"awz" = (/obj/effect/floor_decal/industrial/loading,/obj/machinery/door/firedoor/border_only,/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon/delivery/south{location = "Command"},/turf/simulated/floor/tiled,/area/bridge_hallway)
|
||||||
"awA" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/camera/network/interrogation{c_tag = "INT - Interrogation"},/turf/simulated/floor/tiled/dark,/area/security/interrogation)
|
"awA" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/camera/network/interrogation{c_tag = "INT - Interrogation"},/turf/simulated/floor/tiled/dark,/area/security/interrogation)
|
||||||
"awB" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled/dark,/area/security/interrogation)
|
"awB" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled/dark,/area/security/interrogation)
|
||||||
"awC" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/security/interrogation)
|
"awC" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/security/interrogation)
|
||||||
@@ -1515,7 +1515,7 @@
|
|||||||
"aDg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/corner/red{dir = 4},/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
|
"aDg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/corner/red{dir = 4},/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
|
||||||
"aDh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
|
"aDh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
|
||||||
"aDi" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/window/westright{name = "Security Delivery"; req_access = list(1)},/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
|
"aDi" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/window/westright{name = "Security Delivery"; req_access = list(1)},/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
|
||||||
"aDj" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; dir = 1; freq = 1400; location = "Security"},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/turf/simulated/floor/plating,/area/security/security_cell_hallway)
|
"aDj" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon/delivery/west{location = "Security"},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/turf/simulated/floor/plating,/area/security/security_cell_hallway)
|
||||||
"aDk" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard)
|
"aDk" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard)
|
||||||
"aDl" = (/obj/effect/decal/cleanable/blood/oil,/obj/item/trash/tastybread,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
|
"aDl" = (/obj/effect/decal/cleanable/blood/oil,/obj/item/trash/tastybread,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
|
||||||
"aDm" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/maintenance/holodeck)
|
"aDm" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/maintenance/holodeck)
|
||||||
@@ -1789,7 +1789,7 @@
|
|||||||
"aIu" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/corner/red,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled,/area/security/brig)
|
"aIu" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/corner/red,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled,/area/security/brig)
|
||||||
"aIv" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/red{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled,/area/security/brig)
|
"aIv" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/red{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled,/area/security/brig)
|
||||||
"aIw" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/corner/red{dir = 8},/obj/machinery/camera/network/security{c_tag = "SEC - Brig Port"; dir = 1},/turf/simulated/floor/tiled,/area/security/brig)
|
"aIw" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/corner/red{dir = 8},/obj/machinery/camera/network/security{c_tag = "SEC - Brig Port"; dir = 1},/turf/simulated/floor/tiled,/area/security/brig)
|
||||||
"aIx" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH2"; location = "CH1"},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aIx" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/navbeacon/patrol{next_patrol = "CH2"; location = "CH1"},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
"aIy" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/glass,/obj/effect/floor_decal/corner/red,/turf/simulated/floor/tiled,/area/security/brig)
|
"aIy" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/glass,/obj/effect/floor_decal/corner/red,/turf/simulated/floor/tiled,/area/security/brig)
|
||||||
"aIz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/corner/red{dir = 10},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/security/brig)
|
"aIz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/corner/red{dir = 10},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/security/brig)
|
||||||
"aIA" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/red{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor/tiled,/area/security/brig)
|
"aIA" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/red{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor/tiled,/area/security/brig)
|
||||||
@@ -1882,7 +1882,7 @@
|
|||||||
"aKj" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/security/prison)
|
"aKj" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/security/prison)
|
||||||
"aKk" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/security/prison)
|
"aKk" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/security/prison)
|
||||||
"aKl" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/maintenance/security_starboard)
|
"aKl" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/maintenance/security_starboard)
|
||||||
"aKm" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Janitor"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/janitor)
|
"aKm" = (/obj/machinery/navbeacon/delivery/east{location = "Janitor"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/janitor)
|
||||||
"aKn" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
|
"aKn" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
|
||||||
"aKo" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/janitor)
|
"aKo" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/janitor)
|
||||||
"aKp" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
|
"aKp" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
|
||||||
@@ -2494,7 +2494,7 @@
|
|||||||
"aVX" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aVX" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
"aVY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aVY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
"aVZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aVZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
"aWa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH3"; location = "CH2"},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aWa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon/patrol{next_patrol = "CH3"; location = "CH2"},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
"aWb" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aWb" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
"aWc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aWc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
"aWd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aWd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
@@ -2510,7 +2510,7 @@
|
|||||||
"aWn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aWn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
"aWo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
"aWo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
||||||
"aWp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
"aWp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
||||||
"aWq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH4"; location = "CH3"},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
"aWq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon/patrol{next_patrol = "CH4"; location = "CH3"},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
|
||||||
"aWr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
"aWr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
||||||
"aWs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
"aWs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
||||||
"aWt" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
"aWt" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
||||||
@@ -3068,7 +3068,7 @@
|
|||||||
"bgZ" = (/turf/simulated/wall,/area/medical/cryo)
|
"bgZ" = (/turf/simulated/wall,/area/medical/cryo)
|
||||||
"bha" = (/obj/structure/bookcase/manuals/medical,/obj/item/weapon/book/manual/stasis,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
|
"bha" = (/obj/structure/bookcase/manuals/medical,/obj/item/weapon/book/manual/stasis,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
|
||||||
"bhb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/lime{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hydroponics)
|
"bhb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/lime{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hydroponics)
|
||||||
"bhc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH5"; location = "CH4"},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
"bhc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/navbeacon/patrol{next_patrol = "CH5"; location = "CH4"},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
||||||
"bhd" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
|
"bhd" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
|
||||||
"bhe" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
|
"bhe" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
|
||||||
"bhf" = (/turf/simulated/wall,/area/crew_quarters/medical_restroom)
|
"bhf" = (/turf/simulated/wall,/area/crew_quarters/medical_restroom)
|
||||||
@@ -4343,7 +4343,7 @@
|
|||||||
"bFA" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/central)
|
"bFA" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/central)
|
||||||
"bFB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/central)
|
"bFB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/central)
|
||||||
"bFC" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/tactical)
|
"bFC" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/tactical)
|
||||||
"bFD" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Kitchen"},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading,/turf/simulated/floor/tiled,/area/crew_quarters/kitchen)
|
"bFD" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon/delivery/south{location = "Kitchen"},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading,/turf/simulated/floor/tiled,/area/crew_quarters/kitchen)
|
||||||
"bFE" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/obj/machinery/camera/network/civilian{c_tag = "CIV - Kitchen Port"; dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
"bFE" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/obj/machinery/camera/network/civilian{c_tag = "CIV - Kitchen Port"; dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
||||||
"bFF" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 28},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
"bFF" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 28},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
||||||
"bFG" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/grill,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
"bFG" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/grill,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
||||||
@@ -4356,7 +4356,7 @@
|
|||||||
"bFN" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/closet/secure_closet/freezer/fridge,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
"bFN" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/closet/secure_closet/freezer/fridge,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
||||||
"bFO" = (/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 16; pixel_y = 28},/obj/machinery/button/windowtint{id = "hop_office"; pixel_x = 26; pixel_y = 29},/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 9},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
|
"bFO" = (/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 16; pixel_y = 28},/obj/machinery/button/windowtint{id = "hop_office"; pixel_x = 26; pixel_y = 29},/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 9},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
|
||||||
"bFP" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
"bFP" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
||||||
"bFQ" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading,/turf/simulated/floor/tiled,/area/hydroponics)
|
"bFQ" = (/obj/machinery/navbeacon/delivery/south{location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading,/turf/simulated/floor/tiled,/area/hydroponics)
|
||||||
"bFR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/kitchen)
|
"bFR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/kitchen)
|
||||||
"bFS" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/sign/directions/medical{dir = 4; pixel_x = 32; pixel_y = 0},/obj/structure/sign/directions/cargo{dir = 2; pixel_x = 32; pixel_z = 8},/obj/structure/sign/directions/engineering{dir = 2; pixel_x = 32; pixel_z = -8},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_two)
|
"bFS" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/sign/directions/medical{dir = 4; pixel_x = 32; pixel_y = 0},/obj/structure/sign/directions/cargo{dir = 2; pixel_x = 32; pixel_z = 8},/obj/structure/sign/directions/engineering{dir = 2; pixel_x = 32; pixel_z = -8},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_two)
|
||||||
"bFT" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/effect/floor_decal/corner/paleblue{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/reception)
|
"bFT" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/effect/floor_decal/corner/paleblue{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/reception)
|
||||||
@@ -4718,7 +4718,7 @@
|
|||||||
"bML" = (/obj/machinery/vending/medical,/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/patient_wing)
|
"bML" = (/obj/machinery/vending/medical,/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/patient_wing)
|
||||||
"bMM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/patient_wing)
|
"bMM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/patient_wing)
|
||||||
"bMN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/rnd/research)
|
"bMN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/rnd/research)
|
||||||
"bMO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH1"; location = "CH12"},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
|
"bMO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon/patrol{next_patrol = "CH1"; location = "CH12"},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
|
||||||
"bMP" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/medical/patient_wing)
|
"bMP" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/medical/patient_wing)
|
||||||
"bMQ" = (/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Lockdown Shutters"; opacity = 0},/turf/simulated/floor/tiled/dark,/area/medical/virologyaccess)
|
"bMQ" = (/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Lockdown Shutters"; opacity = 0},/turf/simulated/floor/tiled/dark,/area/medical/virologyaccess)
|
||||||
"bMR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/medical/virologyaccess)
|
"bMR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/medical/virologyaccess)
|
||||||
@@ -4831,7 +4831,7 @@
|
|||||||
"bOU" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 28},/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Research Dock Hallway"; req_access = list(47)},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/white,/area/rnd/docking)
|
"bOU" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 28},/obj/effect/floor_decal/corner/purple{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Research Dock Hallway"; req_access = list(47)},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/white,/area/rnd/docking)
|
||||||
"bOV" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor,/area/maintenance/research)
|
"bOV" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor,/area/maintenance/research)
|
||||||
"bOW" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/research)
|
"bOW" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/research)
|
||||||
"bOX" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/rnd/research)
|
"bOX" = (/obj/machinery/navbeacon/delivery/east{location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/rnd/research)
|
||||||
"bOY" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/window/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 4; icon_state = "left"; name = "Research Division Delivery"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/rnd/research)
|
"bOY" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/window/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 4; icon_state = "left"; name = "Research Division Delivery"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/rnd/research)
|
||||||
"bOZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research)
|
"bOZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research)
|
||||||
"bPa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research)
|
"bPa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research)
|
||||||
@@ -4975,14 +4975,14 @@
|
|||||||
"bRI" = (/obj/machinery/vending/boozeomat,/obj/machinery/status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/lino,/area/crew_quarters/bar)
|
"bRI" = (/obj/machinery/vending/boozeomat,/obj/machinery/status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/lino,/area/crew_quarters/bar)
|
||||||
"bRJ" = (/obj/machinery/vending/dinnerware,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
"bRJ" = (/obj/machinery/vending/dinnerware,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
||||||
"bRK" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/delivery)
|
"bRK" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/delivery)
|
||||||
"bRL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH6"; location = "CH5"},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
"bRL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon/patrol{next_patrol = "CH6"; location = "CH5"},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
||||||
"bRM" = (/obj/structure/table/reinforced,/obj/machinery/door/window/southright{name = "Robotics Desk"; req_access = list(29)},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/assembly/robotics)
|
"bRM" = (/obj/structure/table/reinforced,/obj/machinery/door/window/southright{name = "Robotics Desk"; req_access = list(29)},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/assembly/robotics)
|
||||||
"bRN" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/lino,/area/crew_quarters/bar)
|
"bRN" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/lino,/area/crew_quarters/bar)
|
||||||
"bRO" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/lino,/area/crew_quarters/bar)
|
"bRO" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/lino,/area/crew_quarters/bar)
|
||||||
"bRP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
|
"bRP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
|
||||||
"bRQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH12"; location = "CH11"},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
|
"bRQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon/patrol{next_patrol = "CH12"; location = "CH11"},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
|
||||||
"bRR" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/camera/network/northern_star{c_tag = "Hall - Port Primary 3"; dir = 4},/turf/simulated/floor/tiled/dark,/area/hallway/primary/port)
|
"bRR" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/camera/network/northern_star{c_tag = "Hall - Port Primary 3"; dir = 4},/turf/simulated/floor/tiled/dark,/area/hallway/primary/port)
|
||||||
"bRS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH7"; location = "CH6"},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
"bRS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon/patrol{next_patrol = "CH7"; location = "CH6"},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
||||||
"bRT" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/cafeteria)
|
"bRT" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/cafeteria)
|
||||||
"bRU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
"bRU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
|
||||||
"bRV" = (/obj/machinery/power/apc/super/critical{dir = 4; is_critical = 1; name = "east bump"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/cyan,/turf/simulated/floor/bluegrid,/area/ai)
|
"bRV" = (/obj/machinery/power/apc/super/critical{dir = 4; is_critical = 1; name = "east bump"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/cyan,/turf/simulated/floor/bluegrid,/area/ai)
|
||||||
@@ -5138,7 +5138,7 @@
|
|||||||
"bUP" = (/turf/simulated/wall/r_wall,/area/bridge_hallway)
|
"bUP" = (/turf/simulated/wall/r_wall,/area/bridge_hallway)
|
||||||
"bUQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/blue,/obj/item/device/megaphone,/obj/machinery/requests_console{announcementConsole = 1; department = "Colony Director's Desk"; departmentType = 5; name = "Station Administrator RC"; pixel_x = 30; pixel_y = 0},/obj/structure/window/reinforced,/obj/item/weapon/pen/multi,/turf/simulated/floor/wood,/area/crew_quarters/captain)
|
"bUQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/blue,/obj/item/device/megaphone,/obj/machinery/requests_console{announcementConsole = 1; department = "Colony Director's Desk"; departmentType = 5; name = "Station Administrator RC"; pixel_x = 30; pixel_y = 0},/obj/structure/window/reinforced,/obj/item/weapon/pen/multi,/turf/simulated/floor/wood,/area/crew_quarters/captain)
|
||||||
"bUR" = (/turf/simulated/wall,/area/crew_quarters/cafeteria)
|
"bUR" = (/turf/simulated/wall,/area/crew_quarters/cafeteria)
|
||||||
"bUS" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; dir = 1; freq = 1400; location = "Medbay"},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/turf/simulated/floor/plating,/area/medical/patient_wing)
|
"bUS" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon/delivery/west{location = "Medbay"},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/turf/simulated/floor/plating,/area/medical/patient_wing)
|
||||||
"bUT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/lino,/area/crew_quarters/bar)
|
"bUT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/lino,/area/crew_quarters/bar)
|
||||||
"bUU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/cafeteria)
|
"bUU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/cafeteria)
|
||||||
"bUV" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/clothing/head/cakehat,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/cafeteria)
|
"bUV" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/clothing/head/cakehat,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/cafeteria)
|
||||||
@@ -6388,13 +6388,13 @@
|
|||||||
"csR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/port)
|
"csR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/port)
|
||||||
"csS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/docking_hallway)
|
"csS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/docking_hallway)
|
||||||
"csT" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/flora/pottedplant,/turf/simulated/floor/tiled,/area/quartermaster/foyer)
|
"csT" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/flora/pottedplant,/turf/simulated/floor/tiled,/area/quartermaster/foyer)
|
||||||
"csU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH11"; location = "CH10"},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
|
"csU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon/patrol{next_patrol = "CH11"; location = "CH10"},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
|
||||||
"csV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH10"; location = "CH9"},/turf/simulated/floor/tiled,/area/hallway/primary/central_three)
|
"csV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon/patrol{next_patrol = "CH10"; location = "CH9"},/turf/simulated/floor/tiled,/area/hallway/primary/central_three)
|
||||||
"csW" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway2)
|
"csW" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway2)
|
||||||
"csX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/locker)
|
"csX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/locker)
|
||||||
"csY" = (/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
"csY" = (/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||||
"csZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH9"; location = "CH8"},/turf/simulated/floor/tiled,/area/hallway/primary/central_three)
|
"csZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon/patrol{next_patrol = "CH9"; location = "CH8"},/turf/simulated/floor/tiled,/area/hallway/primary/central_three)
|
||||||
"cta" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CH8"; location = "CH7"},/turf/simulated/floor/tiled,/area/hallway/primary/central_three)
|
"cta" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/navbeacon/patrol{next_patrol = "CH8"; location = "CH7"},/turf/simulated/floor/tiled,/area/hallway/primary/central_three)
|
||||||
"ctb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
"ctb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||||
"ctc" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/docking_hallway2)
|
"ctc" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/docking_hallway2)
|
||||||
"ctd" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/tiled/dark,/area/crew_quarters/locker)
|
"ctd" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/tiled/dark,/area/crew_quarters/locker)
|
||||||
@@ -6544,7 +6544,7 @@
|
|||||||
"cvR" = (/obj/machinery/light,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
"cvR" = (/obj/machinery/light,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||||
"cvS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
"cvS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
||||||
"cvT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
"cvT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
||||||
"cvU" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #3"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
"cvU" = (/obj/machinery/navbeacon/delivery/south{location = "QM #3"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
||||||
"cvV" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/camera/network/medbay{c_tag = "MED - FA Station Port"; dir = 1},/obj/machinery/light_switch{pixel_x = -36; pixel_y = 0},/obj/effect/floor_decal/corner/paleblue{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station)
|
"cvV" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/camera/network/medbay{c_tag = "MED - FA Station Port"; dir = 1},/obj/machinery/light_switch{pixel_x = -36; pixel_y = 0},/obj/effect/floor_decal/corner/paleblue{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station)
|
||||||
"cvW" = (/obj/structure/table/standard,/obj/item/weapon/hand_labeler,/obj/effect/floor_decal/corner/brown{dir = 10},/obj/machinery/recharger,/turf/simulated/floor/tiled,/area/quartermaster/office)
|
"cvW" = (/obj/structure/table/standard,/obj/item/weapon/hand_labeler,/obj/effect/floor_decal/corner/brown{dir = 10},/obj/machinery/recharger,/turf/simulated/floor/tiled,/area/quartermaster/office)
|
||||||
"cvX" = (/obj/machinery/status_display/supply_display,/turf/simulated/wall,/area/quartermaster/qm)
|
"cvX" = (/obj/machinery/status_display/supply_display,/turf/simulated/wall,/area/quartermaster/qm)
|
||||||
@@ -7532,7 +7532,7 @@
|
|||||||
"cOR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge)
|
"cOR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge)
|
||||||
"cOS" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11)
|
"cOS" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11)
|
||||||
"cOT" = (/obj/effect/decal/cleanable/blood/oil,/obj/effect/decal/remains/robot,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/bar)
|
"cOT" = (/obj/effect/decal/cleanable/blood/oil,/obj/effect/decal/remains/robot,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/bar)
|
||||||
"cOU" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Bar"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/bar)
|
"cOU" = (/obj/machinery/navbeacon/delivery/east{location = "Bar"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/bar)
|
||||||
"cOV" = (/obj/structure/bed/chair/wood{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
|
"cOV" = (/obj/structure/bed/chair/wood{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
|
||||||
"cOW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/coffee_shop)
|
"cOW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/coffee_shop)
|
||||||
"cOX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(24)},/turf/simulated/floor,/area/maintenance/atmos_control)
|
"cOX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(24)},/turf/simulated/floor,/area/maintenance/atmos_control)
|
||||||
@@ -8903,7 +8903,7 @@
|
|||||||
"dpk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
"dpk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||||
"dpl" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
"dpl" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||||
"dpm" = (/obj/machinery/door/window/westleft{name = "Engineering Reception Desk"; req_access = list(10); req_one_access = newlist()},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
"dpm" = (/obj/machinery/door/window/westleft{name = "Engineering Reception Desk"; req_access = list(10); req_one_access = newlist()},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||||
"dpn" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{dir = 4},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
"dpn" = (/obj/machinery/navbeacon/delivery/west{location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{dir = 4},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||||
"dpo" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/maintenance/engineering)
|
"dpo" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/maintenance/engineering)
|
||||||
"dpp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering)
|
"dpp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering)
|
||||||
"dpq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/engineering)
|
"dpq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/engineering)
|
||||||
@@ -9705,8 +9705,8 @@
|
|||||||
"dEG" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/longue_area)
|
"dEG" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/longue_area)
|
||||||
"dEH" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/wood,/area/crew_quarters/longue_area)
|
"dEH" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/wood,/area/crew_quarters/longue_area)
|
||||||
"dEI" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway2)
|
"dEI" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway2)
|
||||||
"dEJ" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #1"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
"dEJ" = (/obj/machinery/navbeacon/delivery/south{location = "QM #1"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
||||||
"dEK" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #2"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
"dEK" = (/obj/machinery/navbeacon/delivery/south{location = "QM #2"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage)
|
||||||
"dEL" = (/turf/simulated/mineral,/area/mine/explored/upper_level)
|
"dEL" = (/turf/simulated/mineral,/area/mine/explored/upper_level)
|
||||||
"dEM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/longue_area)
|
"dEM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/longue_area)
|
||||||
"dEN" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
|
"dEN" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
|
||||||
|
|||||||