mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-22 08:01:06 +00:00
Crystal Agitators (#8609)
This commit is contained in:
@@ -1006,6 +1006,7 @@
|
||||
#include "code\game\objects\structures\barsign.dm"
|
||||
#include "code\game\objects\structures\bedsheet_bin.dm"
|
||||
#include "code\game\objects\structures\coathanger.dm"
|
||||
#include "code\game\objects\structures\crystals.dm"
|
||||
#include "code\game\objects\structures\curtains.dm"
|
||||
#include "code\game\objects\structures\displaycase.dm"
|
||||
#include "code\game\objects\structures\door_assembly.dm"
|
||||
@@ -2277,6 +2278,7 @@
|
||||
#include "code\modules\power\cable.dm"
|
||||
#include "code\modules\power\cable_heavyduty.dm"
|
||||
#include "code\modules\power\cell.dm"
|
||||
#include "code\modules\power\crystal_agitator.dm"
|
||||
#include "code\modules\power\fractal_reactor.dm"
|
||||
#include "code\modules\power\generator.dm"
|
||||
#include "code\modules\power\generator_type2.dm"
|
||||
|
||||
@@ -376,6 +376,16 @@
|
||||
#define AURA_TYPE_THROWN "Thrown"
|
||||
#define AURA_TYPE_LIFE "Life"
|
||||
|
||||
// Remote Control defines
|
||||
#define REMOTE_GENERIC_MECH "remotemechs"
|
||||
#define REMOTE_AI_MECH "aimechs"
|
||||
#define REMOTE_PRISON_MECH "prisonmechs"
|
||||
|
||||
#define REMOTE_GENERIC_ROBOT "remoterobots"
|
||||
#define REMOTE_BUNKER_ROBOT "bunkerrobots"
|
||||
#define REMOTE_PRISON_ROBOT "prisonrobots"
|
||||
#define REMOTE_WARDEN_ROBOT "wardenrobots"
|
||||
|
||||
// Robot Overlay Defines
|
||||
#define ROBOT_PANEL_EXPOSED "exposed"
|
||||
#define ROBOT_PANEL_CELL "cell"
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
// department channels
|
||||
var/const/PUB_FREQ = 1459
|
||||
var/const/PEN_FREQ = 1451
|
||||
var/const/SEC_FREQ = 1359
|
||||
var/const/ENG_FREQ = 1357
|
||||
var/const/MED_FREQ = 1355
|
||||
@@ -34,6 +35,7 @@ var/list/radiochannels = list(
|
||||
"Medical" = MED_FREQ,
|
||||
"Engineering" = ENG_FREQ,
|
||||
"Security" = SEC_FREQ,
|
||||
"Penal" = PEN_FREQ,
|
||||
"Response Team" = ERT_FREQ,
|
||||
"Special Ops" = DTH_FREQ,
|
||||
"Mercenary" = SYND_FREQ,
|
||||
|
||||
@@ -173,6 +173,8 @@ var/datum/controller/subsystem/radio/SSradio
|
||||
. = "airadio"
|
||||
if (SEC_FREQ,SEC_I_FREQ)
|
||||
. = "secradio"
|
||||
if (PEN_FREQ)
|
||||
. = "penradio"
|
||||
if (ENG_FREQ)
|
||||
. = "engradio"
|
||||
if (SCI_FREQ)
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
flags = SS_NO_FIRE
|
||||
|
||||
// MECHA
|
||||
var/list/mechnetworks = list("remotemechs", "aimechs", "prisonmechs") // A list of all the networks a mech can possibly connect to
|
||||
var/list/mechnetworks = list(REMOTE_GENERIC_MECH, REMOTE_AI_MECH, REMOTE_PRISON_MECH) // A list of all the networks a mech can possibly connect to
|
||||
var/list/list/mechs = list() // A list of lists, containing the mechs and their networks
|
||||
|
||||
// IPC BODIES
|
||||
var/list/robotnetworks = list("remoterobots", "bunkerrobots", "prisonrobots")
|
||||
var/list/robotnetworks = list(REMOTE_GENERIC_ROBOT, REMOTE_BUNKER_ROBOT, REMOTE_PRISON_ROBOT, REMOTE_WARDEN_ROBOT)
|
||||
var/list/list/robots = list()
|
||||
|
||||
/datum/controller/subsystem/virtualreality/New()
|
||||
@@ -125,7 +125,6 @@
|
||||
|
||||
/datum/controller/subsystem/virtualreality/proc/mech_selection(var/user, var/network)
|
||||
var/list/mech = list()
|
||||
mech["Return"] = null
|
||||
|
||||
for(var/mob/living/heavy_vehicle/R in mechs[network])
|
||||
var/turf/T = get_turf(R)
|
||||
@@ -144,23 +143,20 @@
|
||||
continue
|
||||
mech[R.name] = R
|
||||
|
||||
if(mech.len == 1)
|
||||
if(!length(mech))
|
||||
to_chat(user, SPAN_WARNING("No active remote mechs are available."))
|
||||
return
|
||||
|
||||
var/desc = input("Please select a remote control compatible mech to take over.", "Remote Mech Selection") in mech|null
|
||||
if(!desc)
|
||||
var/choice = input("Please select a remote control compatible mech to take over.", "Remote Mech Selection") as null|anything in mech
|
||||
if(!choice)
|
||||
return
|
||||
|
||||
var/mob/living/heavy_vehicle/chosen_mech = mech[desc]
|
||||
var/mob/living/heavy_vehicle/chosen_mech = mech[choice]
|
||||
var/mob/living/remote_pilot = chosen_mech.pilots[1] // the first pilot
|
||||
mind_transfer(user, remote_pilot)
|
||||
|
||||
return
|
||||
|
||||
/datum/controller/subsystem/virtualreality/proc/robot_selection(var/user, var/network)
|
||||
var/list/robot = list()
|
||||
robot["Return"] = null
|
||||
|
||||
for(var/mob/living/R in robots[network])
|
||||
var/turf/T = get_turf(R)
|
||||
@@ -174,14 +170,12 @@
|
||||
continue
|
||||
robot[R.name] = R
|
||||
|
||||
if(robot.len == 1)
|
||||
if(!length(robot))
|
||||
to_chat(user, SPAN_WARNING("No active remote robots are available."))
|
||||
return
|
||||
|
||||
var/desc = input("Please select a remote control robot to take over.", "Remote Robot Selection") in robot|null
|
||||
if(!desc)
|
||||
var/choice = input("Please select a remote control robot to take over.", "Remote Robot Selection") as null|anything in robot
|
||||
if(!choice)
|
||||
return
|
||||
|
||||
mind_transfer(user, robot[desc])
|
||||
|
||||
return
|
||||
mind_transfer(user, robot[choice])
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/warden
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
l_ear = /obj/item/device/radio/headset/headset_sec
|
||||
l_ear = /obj/item/device/radio/headset/headset_warden
|
||||
pda = /obj/item/device/pda/warden
|
||||
glasses = /obj/item/clothing/glasses/sunglasses/sechud/head
|
||||
l_pocket = /obj/item/device/flash
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
to_chat(user, SPAN_NOTICE("You paint the target at [target]."))
|
||||
|
||||
var/obj/item/device/radio/intercom/announcer = new /obj/item/device/radio/intercom(null)
|
||||
announcer.config(list("Common" = FALSE, "Entertainment" = FALSE, "Response Team" = FALSE, "Science" = FALSE, "Command" = FALSE, "Medical" = FALSE, "Engineering" = FALSE, "Security" = FALSE, "Supply" = FALSE, "Service" = FALSE, "Mercenary" = FALSE, "Raider" = FALSE, "Ninja" = FALSE, "AI Private" = FALSE))
|
||||
announcer.config(list("Common" = FALSE, "Entertainment" = FALSE, "Response Team" = FALSE, "Science" = FALSE, "Command" = FALSE, "Medical" = FALSE, "Engineering" = FALSE, "Security" = FALSE, "Penal" = FALSE, "Supply" = FALSE, "Service" = FALSE, "Mercenary" = FALSE, "Raider" = FALSE, "Ninja" = FALSE, "AI Private" = FALSE))
|
||||
if(announcer)
|
||||
if(!emagged)
|
||||
announcer.autosay(drop_message, announcer_name, announcer_channel)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#define CHANNEL_SUPPLY "Supply"
|
||||
#define CHANNEL_SERVICE "Service"
|
||||
#define CHANNEL_AI_PRIVATE "AI Private"
|
||||
#define CHANNEL_PENAL "Penal"
|
||||
|
||||
#define CHANNEL_RESPONSE_TEAM "Response Team"
|
||||
|
||||
|
||||
@@ -57,6 +57,16 @@
|
||||
icon_state = "sec_cypherkey"
|
||||
channels = list(CHANNEL_SECURITY = TRUE)
|
||||
|
||||
/obj/item/device/encryptionkey/headset_warden
|
||||
name = "warden radio encryption key"
|
||||
icon_state = "sec_cypherkey"
|
||||
channels = list(CHANNEL_SECURITY = TRUE, CHANNEL_PENAL = TRUE)
|
||||
|
||||
/obj/item/device/encryptionkey/headset_penal
|
||||
name = "penal radio encryption key"
|
||||
icon_state = "cargo_cypherkey"
|
||||
channels = list(CHANNEL_PENAL = TRUE)
|
||||
|
||||
/obj/item/device/encryptionkey/headset_eng
|
||||
name = "engineering radio encryption key"
|
||||
icon_state = "eng_cypherkey"
|
||||
@@ -90,13 +100,13 @@
|
||||
/obj/item/device/encryptionkey/heads/captain
|
||||
name = "captain's encryption key"
|
||||
icon_state = "cap_cypherkey"
|
||||
channels = list(CHANNEL_COMMAND = TRUE, CHANNEL_SECURITY = TRUE, CHANNEL_ENGINEERING = FALSE, CHANNEL_SCIENCE = FALSE, CHANNEL_MEDICAL = FALSE, CHANNEL_SUPPLY = FALSE, CHANNEL_SERVICE = FALSE)
|
||||
channels = list(CHANNEL_COMMAND = TRUE, CHANNEL_SECURITY = TRUE, CHANNEL_PENAL = TRUE, CHANNEL_ENGINEERING = FALSE, CHANNEL_SCIENCE = FALSE, CHANNEL_MEDICAL = FALSE, CHANNEL_SUPPLY = FALSE, CHANNEL_SERVICE = FALSE)
|
||||
|
||||
/obj/item/device/encryptionkey/heads/ai_integrated
|
||||
name = "ai integrated encryption key"
|
||||
desc = "Integrated encryption key"
|
||||
icon_state = "cap_cypherkey"
|
||||
channels = list(CHANNEL_COMMAND = TRUE, CHANNEL_SECURITY = TRUE, CHANNEL_ENGINEERING = TRUE, CHANNEL_SCIENCE = TRUE, CHANNEL_MEDICAL = TRUE, CHANNEL_SUPPLY = TRUE, CHANNEL_SERVICE = TRUE, CHANNEL_AI_PRIVATE = TRUE)
|
||||
channels = list(CHANNEL_COMMAND = TRUE, CHANNEL_SECURITY = TRUE, CHANNEL_PENAL = TRUE, CHANNEL_ENGINEERING = TRUE, CHANNEL_SCIENCE = TRUE, CHANNEL_MEDICAL = TRUE, CHANNEL_SUPPLY = TRUE, CHANNEL_SERVICE = TRUE, CHANNEL_AI_PRIVATE = TRUE)
|
||||
|
||||
/obj/item/device/encryptionkey/heads/rd
|
||||
name = "research director's encryption key"
|
||||
@@ -106,7 +116,7 @@
|
||||
/obj/item/device/encryptionkey/heads/hos
|
||||
name = "head of security's encryption key"
|
||||
icon_state = "hos_cypherkey"
|
||||
channels = list(CHANNEL_SECURITY = TRUE, CHANNEL_COMMAND = TRUE)
|
||||
channels = list(CHANNEL_SECURITY = TRUE, CHANNEL_COMMAND = TRUE, CHANNEL_PENAL = TRUE)
|
||||
|
||||
/obj/item/device/encryptionkey/heads/ce
|
||||
name = "chief engineer's encryption key"
|
||||
@@ -121,7 +131,7 @@
|
||||
/obj/item/device/encryptionkey/heads/hop
|
||||
name = "head of personnel's encryption key"
|
||||
icon_state = "hop_cypherkey"
|
||||
channels = list(CHANNEL_SUPPLY = TRUE, CHANNEL_SERVICE = TRUE, CHANNEL_COMMAND = TRUE, CHANNEL_SECURITY = FALSE)
|
||||
channels = list(CHANNEL_SUPPLY = TRUE, CHANNEL_SERVICE = TRUE, CHANNEL_COMMAND = TRUE, CHANNEL_SECURITY = FALSE, CHANNEL_PENAL = FALSE)
|
||||
|
||||
/obj/item/device/encryptionkey/headset_cargo
|
||||
name = "supply radio encryption key"
|
||||
|
||||
@@ -315,6 +315,23 @@
|
||||
icon_state = "sec_headset_alt"
|
||||
item_state = "headset_alt"
|
||||
|
||||
/obj/item/device/radio/headset/headset_warden
|
||||
name = "warden radio headset"
|
||||
desc = "This is used by your all-powerful overseer."
|
||||
icon_state = "sec_headset"
|
||||
ks2type = /obj/item/device/encryptionkey/headset_warden
|
||||
|
||||
/obj/item/device/radio/headset/headset_warden/alt
|
||||
name = "warden bowman headset"
|
||||
icon_state = "sec_headset_alt"
|
||||
item_state = "headset_alt"
|
||||
|
||||
/obj/item/device/radio/headset/headset_penal
|
||||
name = "penal radio headset"
|
||||
desc = "A headset used by people who have chosen or been chosen to work the fields."
|
||||
icon_state = "mine_headset"
|
||||
ks2type = /obj/item/device/encryptionkey/headset_penal
|
||||
|
||||
/obj/item/device/radio/headset/heads/hos
|
||||
name = "head of security's headset"
|
||||
desc = "The headset of the man who protects your worthless lifes."
|
||||
|
||||
@@ -10,6 +10,7 @@ var/global/list/default_internal_channels = list(
|
||||
num2text(MED_I_FREQ)=list(access_medical_equip),
|
||||
num2text(SEC_FREQ) = list(access_security),
|
||||
num2text(SEC_I_FREQ)=list(access_security),
|
||||
num2text(PEN_FREQ) = list(access_armory),
|
||||
num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology),
|
||||
num2text(SUP_FREQ) = list(access_cargo),
|
||||
num2text(SRV_FREQ) = list(access_janitor, access_hydroponics)
|
||||
|
||||
@@ -219,8 +219,8 @@
|
||||
new /obj/item/clothing/gloves/black_leather(src)
|
||||
//Tools
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/device/radio/headset/headset_sec(src)
|
||||
new /obj/item/device/radio/headset/headset_sec/alt(src)
|
||||
new /obj/item/device/radio/headset/headset_warden(src)
|
||||
new /obj/item/device/radio/headset/headset_warden/alt(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/sechud/aviator(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/sechud(src)
|
||||
new /obj/item/taperoll/police(src)
|
||||
|
||||
176
code/game/objects/structures/crystals.dm
Normal file
176
code/game/objects/structures/crystals.dm
Normal file
@@ -0,0 +1,176 @@
|
||||
/obj/structure/reagent_crystal
|
||||
name = "chemical crystal cluster"
|
||||
desc = "A cluster of hardened chemical crystals."
|
||||
icon = 'icons/obj/crystals.dmi'
|
||||
icon_state = "scattered"
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
layer = ABOVE_CABLE_LAYER
|
||||
var/datum/reagent/reagent_id
|
||||
var/state = 0
|
||||
var/health = 100
|
||||
var/mine_rate = 1 // how fast you can mine it
|
||||
|
||||
var/obj/machinery/power/crystal_agitator/creator // used to re-add dense turfs to agitation list when destroyed
|
||||
|
||||
/obj/structure/reagent_crystal/Initialize(mapload, var/reagent_i = null, var/our_creator = null)
|
||||
. = ..()
|
||||
if(!reagent_i)
|
||||
var/list/chems = list(/datum/reagent/acetone, /datum/reagent/aluminum, /datum/reagent/ammonia, /datum/reagent/carbon, /datum/reagent/copper, /datum/reagent/iron, /datum/reagent/lithium, /datum/reagent/mercury, /datum/reagent/potassium, /datum/reagent/radium, /datum/reagent/sodium)
|
||||
reagent_i = pick(chems)
|
||||
reagent_id = reagent_i
|
||||
name = replacetext(name, "chemical", lowertext(initial(reagent_id.name)))
|
||||
desc = replacetext(desc, "chemical", lowertext(initial(reagent_id.name)))
|
||||
var/mutable_appearance/crystal_overlay = mutable_appearance(icon, "[initial(icon_state)]-overlay")
|
||||
crystal_overlay.color = initial(reagent_id.color)
|
||||
add_overlay(crystal_overlay)
|
||||
if(our_creator)
|
||||
creator = our_creator
|
||||
|
||||
/obj/structure/reagent_crystal/examine(mob/user)
|
||||
. = ..()
|
||||
var/state
|
||||
var/current_damage = health / initial(health)
|
||||
switch(current_damage)
|
||||
if(0 to 0.2)
|
||||
state = SPAN_DANGER("The crystal is barely holding together!")
|
||||
if(0.2 to 0.4)
|
||||
state = SPAN_WARNING("The crystal has various cracks visible!")
|
||||
if(0.4 to 0.8)
|
||||
state = SPAN_WARNING("The crystal has scratches and deeper grooves on its surface.")
|
||||
if(0.8 to 1)
|
||||
state = SPAN_NOTICE("The crystal looks structurally sound.")
|
||||
to_chat(user, state)
|
||||
|
||||
/obj/structure/reagent_crystal/proc/take_damage(var/damage)
|
||||
health -= damage
|
||||
if(health <= 0)
|
||||
visible_message(SPAN_WARNING("\The [src] collapses into smaller crystals!"))
|
||||
harvest()
|
||||
|
||||
/obj/structure/reagent_crystal/attack_hand(mob/user)
|
||||
if(HULK in user.mutations)
|
||||
user.visible_message(SPAN_WARNING("\The [user] smashes \the [src] apart!"), SPAN_WARNING("You smash \the [src] apart!"))
|
||||
harvest()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/reagent_crystal/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/gun/energy/plasmacutter))
|
||||
mine_crystal(user, 30 / W.toolspeed, W.usesound)
|
||||
|
||||
else if(istype(W, /obj/item/melee/energy))
|
||||
var/obj/item/melee/energy/WT = W
|
||||
if(WT.active)
|
||||
mine_crystal(user, 30 / W.toolspeed, W.usesound)
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("You need to activate \the [W] to do that!"))
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/melee/energy/blade))
|
||||
mine_crystal(user, 30 / W.toolspeed, W.usesound)
|
||||
|
||||
else if(istype(W, /obj/item/pickaxe))
|
||||
var/obj/item/pickaxe/P = W
|
||||
mine_crystal(user, P.digspeed, W.usesound)
|
||||
|
||||
else if(W.force > 5)
|
||||
user.do_attack_animation(src)
|
||||
playsound(get_turf(src), 'sound/weapons/smash.ogg', 50)
|
||||
visible_message(SPAN_WARNING("\The [user] smashes \the [W] into \the [src]."))
|
||||
take_damage(W.force * 4)
|
||||
|
||||
/obj/structure/reagent_crystal/proc/mine_crystal(var/mob/user, var/time_to_dig, var/use_sound)
|
||||
if(!user)
|
||||
return
|
||||
if(!time_to_dig)
|
||||
time_to_dig = 50
|
||||
|
||||
if(do_after(user, time_to_dig * mine_rate, act_target = src))
|
||||
if(!src)
|
||||
return
|
||||
harvest()
|
||||
if(use_sound)
|
||||
playsound(get_turf(src), use_sound, 30, TRUE)
|
||||
|
||||
/obj/structure/reagent_crystal/proc/harvest()
|
||||
new /obj/item/reagent_crystal(get_turf(src), reagent_id, 5)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_crystal/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if(prob(30))
|
||||
harvest()
|
||||
return
|
||||
else
|
||||
health -= rand(60,180)
|
||||
if(3.0)
|
||||
if(prob(5))
|
||||
harvest()
|
||||
return
|
||||
else
|
||||
health -= rand(40,80)
|
||||
else
|
||||
if(health <= 0)
|
||||
harvest()
|
||||
return
|
||||
|
||||
/obj/structure/reagent_crystal/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker)
|
||||
if(!damage || !wallbreaker)
|
||||
return FALSE
|
||||
user.do_attack_animation(src)
|
||||
visible_message(SPAN_WARNING("\The [user] [attack_message] \the [src]!"))
|
||||
harvest()
|
||||
return TRUE
|
||||
|
||||
/obj/structure/reagent_crystal/proc/become_dense()
|
||||
var/health_mod = health / initial(health)
|
||||
var/obj/structure/reagent_crystal/dense/P = new /obj/structure/reagent_crystal/dense(get_turf(src), reagent_id, creator)
|
||||
P.health *= health_mod
|
||||
if(creator)
|
||||
creator.agitation_turfs -= get_turf(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_crystal/dense
|
||||
name = "dense chemical crystal cluster"
|
||||
desc = "A dense cluster of hardened chemical crystals."
|
||||
icon_state = "dense"
|
||||
health = 200
|
||||
mine_rate = 2
|
||||
|
||||
/obj/structure/reagent_crystal/dense/harvest()
|
||||
var/turf/our_turf = get_turf(src)
|
||||
for(var/i = 0 to 2)
|
||||
new /obj/item/reagent_crystal(our_turf, reagent_id, 5)
|
||||
if(creator)
|
||||
creator.agitation_turfs += our_turf
|
||||
qdel(src)
|
||||
|
||||
/obj/item/reagent_crystal
|
||||
name = "crystal"
|
||||
desc = "A clear, pointy crystal. It looks rough, unprocessed."
|
||||
icon = 'icons/obj/crystals.dmi'
|
||||
icon_state = "crystal"
|
||||
|
||||
/obj/item/reagent_crystal/Initialize(mapload, reagent_i, amount)
|
||||
. = ..()
|
||||
create_reagents(5)
|
||||
reagents.add_reagent(reagent_i, amount)
|
||||
var/datum/reagent/R = new reagent_i
|
||||
name = "[lowertext(R.name)] crystal"
|
||||
desc = "A [lowertext(R.name)] crystal. It looks rough, unprocessed."
|
||||
desc_info = "This crystal can be grinded to obtain the chemical material locked within."
|
||||
color = reagents.get_color()
|
||||
|
||||
/obj/item/storage/bag/crystal
|
||||
name = "crystal satchel"
|
||||
desc = "This big boy can store a vast amount of crystals."
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "satchel"
|
||||
slot_flags = SLOT_BELT | SLOT_POCKET
|
||||
max_storage_space = 100
|
||||
can_hold = list(/obj/item/reagent_crystal)
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/structure/bed/chair/remote/mech
|
||||
name = "mech control centre"
|
||||
desc = "A comfortable chair with full audio-visual transposition centres. This one gives you access to exosuits attached to the remote network."
|
||||
remote_network = "remotemechs"
|
||||
remote_network = REMOTE_GENERIC_MECH
|
||||
|
||||
/obj/structure/bed/chair/remote/mech/user_buckle_mob(mob/user)
|
||||
..()
|
||||
@@ -15,7 +15,7 @@
|
||||
/obj/structure/bed/chair/remote/mech/prison
|
||||
name = "brig mech control centre"
|
||||
desc = "A comfortable chair with full audio-visual transposition centres. This one gives you access to exosuits attached to the brig network."
|
||||
remote_network = "prisonmechs"
|
||||
remote_network = REMOTE_PRISON_MECH
|
||||
|
||||
/obj/structure/bed/chair/remote/mech/prison/portable
|
||||
portable_type = /obj/item/deployable_kit/remote_mech/brig
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/structure/bed/chair/remote/robot
|
||||
name = "robot control centre"
|
||||
desc = "A comfortable chair with full audio-visual transposition centres. This one gives you access to robots attached to the remote network."
|
||||
remote_network = "remoterobots"
|
||||
remote_network = REMOTE_GENERIC_ROBOT
|
||||
|
||||
/obj/structure/bed/chair/remote/robot/user_buckle_mob(mob/user)
|
||||
..()
|
||||
@@ -12,4 +12,14 @@
|
||||
/obj/structure/bed/chair/remote/robot/bunker
|
||||
name = "bunker robot control centre"
|
||||
desc = "A comfortable chair with full audio-visual transposition centres. This one gives you access to robots attached to the bunker network."
|
||||
remote_network = "bunkerrobots"
|
||||
remote_network = REMOTE_BUNKER_ROBOT
|
||||
|
||||
/obj/structure/bed/chair/remote/robot/prison
|
||||
name = "penal robot control centre"
|
||||
desc = "A comfortable chair with full audio-visual transposition centres. This one gives you access to robots attached to the penal network."
|
||||
remote_network = REMOTE_PRISON_ROBOT
|
||||
|
||||
/obj/structure/bed/chair/remote/robot/warden
|
||||
name = "warden robot control centre"
|
||||
desc = "A comfortable chair with full audio-visual transposition centres. This one gives you access to robots attached to the warden's network."
|
||||
remote_network = REMOTE_WARDEN_ROBOT
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "aislot"
|
||||
origin_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 4, TECH_DATA = 4)
|
||||
w_class = ITEMSIZE_SMALL
|
||||
var/mech_remote_network = "remotemechs"
|
||||
var/mech_remote_network = REMOTE_GENERIC_MECH
|
||||
var/hardpoint_lock = FALSE // Whether mechs that receive this upgrade gets locked
|
||||
var/dummy_path = /mob/living/simple_animal/spiderbot
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
/obj/item/remote_mecha/penal
|
||||
name = "penal exosuit remote upgrade"
|
||||
desc = "A device that, when inserted into an exosuit, allows it to be remotely piloted. Intended for prison networks."
|
||||
mech_remote_network = "prisonmechs"
|
||||
mech_remote_network = REMOTE_PRISON_MECH
|
||||
hardpoint_lock = TRUE
|
||||
|
||||
/obj/item/remote_mecha/penal/examine(mob/user)
|
||||
@@ -30,5 +30,5 @@
|
||||
/obj/item/remote_mecha/ai
|
||||
name = "AI exosuit remote upgrade"
|
||||
desc = "A device that, when inserted into an exosuit, allows it to be remotely piloted by the artificial intelligence."
|
||||
mech_remote_network = "aimechs"
|
||||
mech_remote_network = REMOTE_AI_MECH
|
||||
dummy_path = /mob/living/simple_animal/spiderbot/ai
|
||||
@@ -254,7 +254,7 @@
|
||||
remote = TRUE
|
||||
name = name + " \"[pick("Jaeger", "Reaver", "Templar", "Juggernaut", "Basilisk")]-[rand(0, 999)]\""
|
||||
if(!remote_network)
|
||||
remote_network = "remotemechs"
|
||||
remote_network = REMOTE_GENERIC_MECH
|
||||
SSvirtualreality.add_mech(src, remote_network)
|
||||
|
||||
if(hatch_closed)
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
/mob/living/heavy_vehicle/premade/miner/remote
|
||||
name = "remote mining mecha"
|
||||
dummy_colour = "#ffc44f"
|
||||
remote_network = "remotemechs"
|
||||
remote_network = REMOTE_GENERIC_MECH
|
||||
does_hardpoint_lock = FALSE
|
||||
|
||||
/mob/living/heavy_vehicle/premade/miner/remote_prison
|
||||
name = "penal mining mecha"
|
||||
dummy_colour = "#302e2b"
|
||||
remote_network = "prisonmechs"
|
||||
remote_network = REMOTE_PRISON_MECH
|
||||
@@ -151,20 +151,20 @@
|
||||
/mob/living/heavy_vehicle/premade/ripley/remote
|
||||
name = "remote power loader"
|
||||
dummy_colour = "#ffc44f"
|
||||
remote_network = "remotemechs"
|
||||
remote_network = REMOTE_GENERIC_MECH
|
||||
does_hardpoint_lock = FALSE
|
||||
|
||||
/mob/living/heavy_vehicle/premade/ripley/remote_prison
|
||||
name = "penal power loader"
|
||||
dummy_colour = "#302e2b"
|
||||
remote_network = "prisonmechs"
|
||||
remote_network = REMOTE_PRISON_MECH
|
||||
|
||||
/mob/living/heavy_vehicle/premade/ripley/remote_ai
|
||||
name = "stationbound power loader"
|
||||
e_color = COLOR_GREEN_GRAY
|
||||
dummy_colour = COLOR_GREEN_GRAY
|
||||
dummy_type = /mob/living/simple_animal/spiderbot/ai
|
||||
remote_network = "aimechs"
|
||||
remote_network = REMOTE_AI_MECH
|
||||
does_hardpoint_lock = FALSE
|
||||
|
||||
h_l_hand = /obj/item/mecha_equipment/toolset
|
||||
@@ -161,7 +161,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
|
||||
mind.name = real_name
|
||||
status_flags |= NO_ANTAG
|
||||
|
||||
remote_network = "remoterobots"
|
||||
remote_network = REMOTE_GENERIC_ROBOT
|
||||
SSvirtualreality.add_robot(src, remote_network)
|
||||
|
||||
/mob/living/carbon/human/industrial_xion_remote/Stat()
|
||||
@@ -200,7 +200,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(src), slot_shoes)
|
||||
equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_com(src), slot_l_ear)
|
||||
|
||||
remote_network = "bunkerrobots"
|
||||
remote_network = REMOTE_BUNKER_ROBOT
|
||||
SSvirtualreality.add_robot(src, remote_network)
|
||||
|
||||
/mob/living/carbon/human/industrial_xion_remote_bunker/Stat()
|
||||
@@ -209,6 +209,55 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
|
||||
if(client?.statpanel == "Status")
|
||||
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
|
||||
|
||||
/mob/living/carbon/human/industrial_xion_remote_penal/Initialize(mapload)
|
||||
. = ..(mapload, "Remote Xion Industrial Frame")
|
||||
|
||||
real_name = "Remote Robot [pick("Jim", "Slart", "Whacker")]-[rand(0, 999)]"
|
||||
name = real_name
|
||||
dna.real_name = real_name
|
||||
if(mind)
|
||||
mind.name = real_name
|
||||
status_flags |= NO_ANTAG
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_penal(src), slot_l_ear)
|
||||
|
||||
remote_network = REMOTE_PRISON_ROBOT
|
||||
SSvirtualreality.add_robot(src, remote_network)
|
||||
|
||||
/mob/living/carbon/human/industrial_xion_remote_penal/Stat()
|
||||
..()
|
||||
|
||||
if(client?.statpanel == "Status")
|
||||
stat(null, "Battery Charge: [nutrition]/[max_nutrition]")
|
||||
|
||||
/mob/living/carbon/human/industrial_xion_remote_warden/Initialize(mapload)
|
||||
. = ..(mapload, "Remote Xion Industrial Frame")
|
||||
|
||||
real_name = "Remote Robot Overseer-[rand(0, 999)]"
|
||||
name = real_name
|
||||
dna.real_name = real_name
|
||||
if(mind)
|
||||
mind.name = real_name
|
||||
status_flags |= NO_ANTAG
|
||||
|
||||
var/obj/item/card/id/ID = new /obj/item/card/id(get_turf(src))
|
||||
ID.assignment = "Overseer"
|
||||
src.set_id_info(ID)
|
||||
ID.access = list(access_armory)
|
||||
equip_to_slot_or_del(ID, slot_wear_id)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/rank/warden(src), slot_w_uniform)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(src), slot_shoes)
|
||||
equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_warden(src), slot_l_ear)
|
||||
|
||||
remote_network = REMOTE_WARDEN_ROBOT
|
||||
SSvirtualreality.add_robot(src, remote_network)
|
||||
|
||||
/mob/living/carbon/human/industrial_xion_remote_warden/Stat()
|
||||
..()
|
||||
|
||||
if(client?.statpanel == "Status")
|
||||
stat(null, "Battery Charge: [nutrition]/[max_nutrition]")
|
||||
|
||||
/mob/living/carbon/human/industrial_zenghu/Initialize(mapload)
|
||||
. = ..(mapload, SPECIES_IPC_ZENGHU)
|
||||
|
||||
@@ -246,7 +295,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
|
||||
mind.name = real_name
|
||||
status_flags |= NO_ANTAG
|
||||
|
||||
remote_network = "remoterobots"
|
||||
remote_network = REMOTE_GENERIC_ROBOT
|
||||
SSvirtualreality.add_robot(src, remote_network)
|
||||
|
||||
/mob/living/carbon/human/unbranded_frame_remote/Stat()
|
||||
@@ -269,7 +318,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(src), slot_shoes)
|
||||
equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_com(src), slot_l_ear)
|
||||
|
||||
remote_network = "bunkerrobots"
|
||||
remote_network = REMOTE_BUNKER_ROBOT
|
||||
SSvirtualreality.add_robot(src, remote_network)
|
||||
|
||||
/mob/living/carbon/human/unbranded_frame_remote_bunker/Stat()
|
||||
|
||||
@@ -10,6 +10,7 @@ var/list/department_radio_keys = list(
|
||||
":m" = "Medical", ".m" = "Medical",
|
||||
":e" = "Engineering", ".e" = "Engineering",
|
||||
":s" = "Security", ".s" = "Security",
|
||||
":q" = "Penal", ".q" = "Penal",
|
||||
":w" = "whisper", ".w" = "whisper",
|
||||
":t" = "Mercenary", ".t" = "Mercenary",
|
||||
":x" = "Raider", ".x" = "Raider",
|
||||
@@ -30,6 +31,7 @@ var/list/department_radio_keys = list(
|
||||
":M" = "Medical", ".M" = "Medical",
|
||||
":E" = "Engineering", ".E" = "Engineering",
|
||||
":S" = "Security", ".S" = "Security",
|
||||
":Q" = "Penal", ".Q" = "Penal",
|
||||
":W" = "whisper", ".W" = "whisper",
|
||||
":T" = "Mercenary", ".T" = "Mercenary",
|
||||
":X" = "Raider", ".X" = "Raider",
|
||||
|
||||
@@ -780,7 +780,7 @@ var/list/ai_verbs_default = list(
|
||||
set name = "Remote Control Mech"
|
||||
set category = "AI Commands"
|
||||
set desc = "Remotely control any active mechs on your AI mech network."
|
||||
SSvirtualreality.mech_selection(src, "aimechs")
|
||||
SSvirtualreality.mech_selection(src, REMOTE_AI_MECH)
|
||||
|
||||
/mob/living/silicon/ai/proc/toggle_hologram_movement()
|
||||
set name = "Toggle Hologram Movement"
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
var/list/robots = list()
|
||||
|
||||
if(signal.data["done"])
|
||||
for(var/mech in SSvirtualreality.mechs["prisonmechs"])
|
||||
for(var/mech in SSvirtualreality.mechs[REMOTE_PRISON_MECH])
|
||||
var/mob/living/heavy_vehicle/M = mech
|
||||
|
||||
if(!ismech(M))
|
||||
@@ -61,7 +61,7 @@
|
||||
mechData["lockdown"] = M.lockdown
|
||||
mechs[++mechs.len] = mechData
|
||||
|
||||
for(var/robot in SSvirtualreality.robots["prisonrobots"])
|
||||
for(var/robot in SSvirtualreality.robots[REMOTE_PRISON_ROBOT])
|
||||
var/mob/living/R = robot
|
||||
|
||||
if(!ismob(R))
|
||||
|
||||
120
code/modules/power/crystal_agitator.dm
Normal file
120
code/modules/power/crystal_agitator.dm
Normal file
@@ -0,0 +1,120 @@
|
||||
/obj/machinery/power/crystal_agitator
|
||||
name = "crystal agitator"
|
||||
desc = "A device of incredibly niche design. This agitator disturbs the ashy turf around it, causing chemical crystals to form."
|
||||
icon = 'icons/obj/crystal_agitator.dmi'
|
||||
icon_state = "agitator"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
use_power = 0
|
||||
active_power_usage = 3000
|
||||
|
||||
var/agitation_range = 4
|
||||
var/agitation_rate = 80
|
||||
var/last_agitation = 0
|
||||
var/active = FALSE
|
||||
|
||||
var/last_turf_check = 0
|
||||
var/turf_check_rate = 3 MINUTES
|
||||
var/list/agitation_turfs = list()
|
||||
|
||||
component_types = list(
|
||||
/obj/item/stack/cable_coil{amount = 5},
|
||||
/obj/item/stock_parts/capacitor,
|
||||
/obj/item/stock_parts/manipulator,
|
||||
/obj/item/bluespace_crystal,
|
||||
/obj/item/circuitboard/crystal_agitator
|
||||
)
|
||||
|
||||
/obj/machinery/power/crystal_agitator/Initialize()
|
||||
. = ..()
|
||||
connect_to_network()
|
||||
|
||||
/obj/machinery/power/crystal_agitator/attack_hand(mob/user)
|
||||
toggle_active()
|
||||
visible_message("<b>[user]</b> turns \the [src] [active ? "on" : "off"].", SPAN_NOTICE("You turn \the [src] [active ? "on" : "off"]."))
|
||||
|
||||
/obj/machinery/power/crystal_agitator/proc/toggle_active()
|
||||
active = !active
|
||||
icon_state = "[initial(icon_state)][active ? "-active": ""]"
|
||||
if(active)
|
||||
check_turfs()
|
||||
|
||||
/obj/machinery/power/crystal_agitator/proc/check_turfs()
|
||||
var/turf/our_turf = get_turf(src)
|
||||
var/list/grow_turfs = list()
|
||||
for(var/thing in RANGE_TURFS(agitation_range, our_turf))
|
||||
var/turf/T = thing
|
||||
if(our_turf == T)
|
||||
continue
|
||||
if(!istype(T, /turf/unsimulated/floor/asteroid))
|
||||
continue
|
||||
if(locate(/obj/structure/reagent_crystal/dense) in T)
|
||||
continue
|
||||
grow_turfs += T
|
||||
agitation_turfs = grow_turfs
|
||||
last_turf_check = world.time + turf_check_rate
|
||||
|
||||
/obj/machinery/power/crystal_agitator/machinery_process()
|
||||
if(!active)
|
||||
return
|
||||
if(stat & (BROKEN) || !powernet)
|
||||
return
|
||||
if(last_agitation + agitation_rate > world.time)
|
||||
return
|
||||
if(!length(agitation_turfs))
|
||||
toggle_active()
|
||||
return
|
||||
|
||||
var/actual_load = draw_power(active_power_usage)
|
||||
if(actual_load < active_power_usage)
|
||||
toggle_active()
|
||||
return
|
||||
|
||||
// recheck the agitation turfs every few minutes to make sure we're not getting stuck
|
||||
if(last_turf_check < world.time)
|
||||
check_turfs()
|
||||
|
||||
var/turf/selected_turf = pick(agitation_turfs)
|
||||
var/obj/structure/reagent_crystal/P = locate() in selected_turf
|
||||
if(P)
|
||||
P.become_dense()
|
||||
return
|
||||
if(prob(1) && prob(1))
|
||||
new /mob/living/simple_animal/hostile/phoron_worm/small(selected_turf)
|
||||
else
|
||||
new /obj/structure/reagent_crystal(selected_turf, null, src)
|
||||
last_agitation = world.time
|
||||
|
||||
/obj/machinery/power/crystal_agitator/RefreshParts()
|
||||
for(var/obj/item/stock_parts/SP in component_parts)
|
||||
if(ismanipulator(SP))
|
||||
agitation_rate = initial(agitation_rate) - (SP.rating * 5)
|
||||
if(iscapacitor(SP))
|
||||
active_power_usage = initial(active_power_usage) - (SP.rating * 500)
|
||||
|
||||
/obj/machinery/power/crystal_agitator/attackby(obj/item/I, mob/user, params)
|
||||
if(default_part_replacement(user, I))
|
||||
return
|
||||
else if(default_deconstruction_screwdriver(user, I))
|
||||
return
|
||||
else if(default_deconstruction_crowbar(user, I))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/circuitboard/crystal_agitator
|
||||
name = T_BOARD("Crystal Agitator")
|
||||
build_path = /obj/machinery/power/crystal_agitator
|
||||
board_type = "machine"
|
||||
origin_tech = list(
|
||||
TECH_ENGINEERING = 3,
|
||||
TECH_DATA = 2,
|
||||
TECH_MATERIAL = 4,
|
||||
TECH_POWER = 3
|
||||
)
|
||||
req_components = list(
|
||||
"/obj/item/stack/cable_coil" = 5,
|
||||
"/obj/item/stock_parts/capacitor" = 1,
|
||||
"/obj/item/stock_parts/manipulator" = 1,
|
||||
"/obj/item/bluespace_crystal" = 1
|
||||
)
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
/datum/reagent/carbon
|
||||
name = "Carbon"
|
||||
description = "A chemical element, the builing block of life."
|
||||
description = "A chemical element, the building block of life."
|
||||
reagent_state = SOLID
|
||||
color = "#1C1300"
|
||||
ingest_met = REM * 5
|
||||
|
||||
@@ -24,13 +24,20 @@
|
||||
var/flush_every_ticks = 30 //Every 30 ticks it will look whether it is ready to flush
|
||||
var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush.
|
||||
var/last_sound = 0
|
||||
var/uses_air = TRUE
|
||||
active_power_usage = 2200 //the pneumatic pump power. 3 HP ~ 2200W
|
||||
idle_power_usage = 100
|
||||
|
||||
/obj/machinery/disposal/airless
|
||||
uses_air = FALSE
|
||||
|
||||
/obj/machinery/disposal/small
|
||||
desc = "A compact pneumatic waste disposal unit."
|
||||
icon_state = "disposal_small"
|
||||
density = 0
|
||||
density = FALSE
|
||||
|
||||
/obj/machinery/disposal/small/airless
|
||||
uses_air = FALSE
|
||||
|
||||
/obj/machinery/disposal/small/Initialize()
|
||||
. = ..()
|
||||
@@ -38,21 +45,21 @@
|
||||
return
|
||||
else
|
||||
switch(dir)
|
||||
if(1)
|
||||
if(NORTH)
|
||||
pixel_y = -13
|
||||
layer = MOB_LAYER + 0.1
|
||||
if(2)
|
||||
if(SOUTH)
|
||||
pixel_y = 20
|
||||
layer = OBJ_LAYER + 0.3
|
||||
if(4)
|
||||
if(EAST)
|
||||
pixel_x = -12
|
||||
if(8)
|
||||
if(WEST)
|
||||
pixel_x = 11
|
||||
|
||||
/obj/machinery/disposal/small/check_mob_size(mob/target)
|
||||
if(target.mob_size > MOB_SMALL)
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
// create a new disposal
|
||||
// find the attached trunk (if present) and init gas resvr.
|
||||
@@ -129,12 +136,12 @@
|
||||
to_chat(user, "You can't place that item inside the disposal unit.")
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/storage/bag/trash))
|
||||
var/obj/item/storage/bag/trash/T = I
|
||||
to_chat(user, "<span class='notice'>You empty the bag.</span>")
|
||||
for(var/obj/item/O in T.contents)
|
||||
T.remove_from_storage(O,src)
|
||||
T.update_icon()
|
||||
if(istype(I, /obj/item/storage) && user.a_intent != I_HURT)
|
||||
var/obj/item/storage/S = I
|
||||
user.visible_message("<b>[user]</b> empties \the [S] into \the [src].", SPAN_NOTICE("You empty \the [S] into \the [src]."), range = 3)
|
||||
for(var/obj/item/O in S.contents)
|
||||
S.remove_from_storage(O, src)
|
||||
S.update_icon()
|
||||
update()
|
||||
return
|
||||
|
||||
@@ -182,12 +189,7 @@
|
||||
|
||||
user.drop_from_inventory(I,src)
|
||||
|
||||
to_chat(user, "You place \the [I] into the [src].")
|
||||
for(var/mob/M in viewers(src))
|
||||
if(M == user)
|
||||
continue
|
||||
M.show_message("[user.name] places \the [I] into the [src].", 3)
|
||||
|
||||
user.visible_message("<b>[user]</b> places \the [I] into \the [src].", SPAN_NOTICE("You place \the [I] into the [src]."), range = 3)
|
||||
update()
|
||||
|
||||
// mouse drop another mob or self
|
||||
@@ -307,14 +309,19 @@
|
||||
|
||||
dat += "<BR><HR><A href='?src=\ref[src];eject=1'>Eject contents</A><HR>"
|
||||
|
||||
if(mode <= 0)
|
||||
dat += "Pump: <B>Off</B> <A href='?src=\ref[src];pump=1'>On</A><BR>"
|
||||
else if(mode == 1)
|
||||
dat += "Pump: <A href='?src=\ref[src];pump=0'>Off</A> <B>On</B> (pressurizing)<BR>"
|
||||
if(uses_air)
|
||||
if(mode <= 0)
|
||||
dat += "Pump: <B>Off</B> <A href='?src=\ref[src];pump=1'>On</A><BR>"
|
||||
else if(mode == 1)
|
||||
dat += "Pump: <A href='?src=\ref[src];pump=0'>Off</A> <B>On</B> (pressurizing)<BR>"
|
||||
else
|
||||
dat += "Pump: <A href='?src=\ref[src];pump=0'>Off</A> <B>On</B> (idle)<BR>"
|
||||
else
|
||||
dat += "Pump: <A href='?src=\ref[src];pump=0'>Off</A> <B>On</B> (idle)<BR>"
|
||||
|
||||
var/per = 100* air_contents.return_pressure() / (SEND_PRESSURE)
|
||||
if(!uses_air)
|
||||
per = 100
|
||||
|
||||
dat += "Pressure: [round(per, 1)]%<BR></body>"
|
||||
|
||||
@@ -421,12 +428,12 @@
|
||||
|
||||
src.updateDialog()
|
||||
|
||||
if(flush && air_contents.return_pressure() >= SEND_PRESSURE ) // flush can happen even without power
|
||||
if(flush && (air_contents.return_pressure() >= SEND_PRESSURE || !uses_air)) // flush can happen even without power
|
||||
flush()
|
||||
|
||||
if(mode != 1) //if off or ready, no need to charge
|
||||
update_use_power(1)
|
||||
else if(air_contents.return_pressure() >= SEND_PRESSURE)
|
||||
else if((air_contents.return_pressure() >= SEND_PRESSURE || !uses_air))
|
||||
mode = 2 //if full enough, switch to ready mode
|
||||
update()
|
||||
else
|
||||
|
||||
@@ -52,6 +52,7 @@ em {font-style: normal;font-weight: bold;}
|
||||
.entradio {color: #bd893c;}
|
||||
|
||||
.secradio {color: #A30000;}
|
||||
.penradio {color: #DB1270;}
|
||||
.engradio {color: #A66300;}
|
||||
.medradio {color: #0a5c47;}
|
||||
.sciradio {color: #993399;}
|
||||
|
||||
7
html/changelogs/geeves-phoron_agitator.yml
Normal file
7
html/changelogs/geeves-phoron_agitator.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
author: Geeves
|
||||
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscadd: "Implements Crystal Agitators, machines that agitate asteroid turf to form chemical crystals. Check the communal out."
|
||||
- tweak: "You can now dump the contents of a storage item into a disposal bin, by clicking on it on any intent other than harm. Doing so on harm will place the storage item in too."
|
||||
BIN
icons/obj/crystal_agitator.dmi
Normal file
BIN
icons/obj/crystal_agitator.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
BIN
icons/obj/crystals.dmi
Normal file
BIN
icons/obj/crystals.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
@@ -48,11 +48,19 @@
|
||||
temp_timer.releasetime = 1
|
||||
..()
|
||||
|
||||
/area/security/prison/remote
|
||||
name = "\improper Security - Remote Prison Wing"
|
||||
icon_state = "sec_prison"
|
||||
|
||||
/area/security/warden
|
||||
name = "Security - Warden's Office"
|
||||
icon_state = "Warden"
|
||||
sound_env = SMALL_SOFTFLOOR
|
||||
|
||||
/area/security/warden/remote
|
||||
name = "\improper Security - Remote Warden's Office"
|
||||
icon_state = "Warden"
|
||||
|
||||
/area/security/armory
|
||||
name = "Security - Armory"
|
||||
icon_state = "Warden"
|
||||
@@ -149,3 +157,8 @@
|
||||
|
||||
/area/security/vacantoffice2
|
||||
name = "Security - Meeting Room"
|
||||
|
||||
/area/security/penal_colony
|
||||
name = "\improper Security - Penal Mining Colony"
|
||||
icon_state = "security"
|
||||
icon_state = "security"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -20,6 +20,7 @@
|
||||
/obj/effect/floor_decal/industrial/warning,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/machinery/floodlight,
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aag" = (
|
||||
@@ -34,6 +35,11 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/floor_decal/industrial/warning,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4;
|
||||
icon_state = "pipe-c"
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aah" = (
|
||||
@@ -46,10 +52,11 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aaj" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/open,
|
||||
/area/maintenance/security_starboard)
|
||||
"aak" = (
|
||||
@@ -60,6 +67,8 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aal" = (
|
||||
@@ -96,6 +105,7 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aao" = (
|
||||
@@ -108,6 +118,8 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aap" = (
|
||||
@@ -159,6 +171,8 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aas" = (
|
||||
@@ -205,6 +219,12 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aaw" = (
|
||||
@@ -216,11 +236,24 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aax" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/obj/structure/cable{
|
||||
d1 = 2;
|
||||
d2 = 8;
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"aay" = (
|
||||
@@ -811,6 +844,10 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 2;
|
||||
icon_state = "pipe-c"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"abI" = (
|
||||
@@ -917,7 +954,10 @@
|
||||
"abU" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/effect/floor_decal/corner/purple{
|
||||
dir = 9
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/maintenance/security_starboard)
|
||||
"abV" = (
|
||||
/obj/structure/closet/crate,
|
||||
@@ -1194,13 +1234,28 @@
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/effect/floor_decal/corner/purple{
|
||||
dir = 9
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/maintenance/security_starboard)
|
||||
"acy" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 9
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/machinery/light/small/emergency{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposaloutlet{
|
||||
name = "ore delivery outlet"
|
||||
},
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/floor_decal/corner/purple{
|
||||
dir = 6
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/maintenance/security_starboard)
|
||||
"acz" = (
|
||||
/obj/structure/table/standard,
|
||||
@@ -1555,10 +1610,6 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/brig)
|
||||
"adb" = (
|
||||
/obj/structure/barricade,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/maintenance/security_starboard)
|
||||
"adc" = (
|
||||
/obj/structure/table/standard,
|
||||
/obj/effect/floor_decal/corner_wide/paleblue/full{
|
||||
@@ -1768,11 +1819,11 @@
|
||||
name = "Security Blast Door";
|
||||
opacity = 0
|
||||
},
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Security Maintenance";
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
name = "Ore Retrieval";
|
||||
req_access = list(63)
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/brig)
|
||||
"adw" = (
|
||||
/obj/machinery/portable_atmospherics/canister/nitrogen,
|
||||
@@ -3514,6 +3565,11 @@
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
req_access = list(12)
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"agD" = (
|
||||
@@ -7752,9 +7808,7 @@
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/obj/structure/cable/yellow{
|
||||
d1 = 0;
|
||||
d2 = 8;
|
||||
dir = 2;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
@@ -17295,6 +17349,9 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/warden)
|
||||
"aEx" = (
|
||||
/obj/structure/bed/chair/remote/robot/warden{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/warden)
|
||||
"aEy" = (
|
||||
@@ -20726,6 +20783,10 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/toy/prize/deathripley{
|
||||
desc = "This is Johnny 5. Is he alive?";
|
||||
name = "Johnny 5"
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"aJV" = (
|
||||
@@ -23733,31 +23794,26 @@
|
||||
/area/security/prison)
|
||||
"aPm" = (
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/table/standard,
|
||||
/obj/item/storage/box/donkpockets{
|
||||
pixel_x = 3;
|
||||
pixel_y = 3
|
||||
/obj/structure/bed/chair/remote/robot/prison,
|
||||
/obj/machinery/door/window/brigdoor/northright{
|
||||
id = "Remote Chair";
|
||||
name = "Remote Chair";
|
||||
req_access = list(2)
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/storage/box/donkpockets,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"aPn" = (
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/table/standard,
|
||||
/obj/machinery/microwave,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"aPo" = (
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/table/standard,
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/pen,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"aPp" = (
|
||||
/obj/machinery/newscaster{
|
||||
pixel_x = 27
|
||||
},
|
||||
/obj/structure/table/standard,
|
||||
/obj/machinery/microwave,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"aPq" = (
|
||||
@@ -24690,6 +24746,10 @@
|
||||
id = null;
|
||||
use_power = 1
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table/standard,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"aQT" = (
|
||||
@@ -24727,18 +24787,18 @@
|
||||
d2 = 4;
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/obj/item/stool/padded,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"aQX" = (
|
||||
/obj/item/toy/prize/deathripley{
|
||||
desc = "This is Johnny 5. Is he alive?";
|
||||
name = "Johnny 5"
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/structure/table/standard,
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/pen,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"aQZ" = (
|
||||
@@ -59368,7 +59428,10 @@
|
||||
/obj/machinery/meter{
|
||||
name = "Air supply"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/effect/floor_decal/corner/purple/full{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/maintenance/security_starboard)
|
||||
"cMI" = (
|
||||
/obj/structure/cable/green{
|
||||
@@ -59718,6 +59781,10 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Security Maintenance";
|
||||
req_access = list(63)
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"dEG" = (
|
||||
@@ -59993,9 +60060,7 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/cable/yellow{
|
||||
d1 = 0;
|
||||
d2 = 8;
|
||||
dir = 2;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
@@ -60487,10 +60552,6 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/library)
|
||||
"fFq" = (
|
||||
/obj/machinery/light/small/emergency,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"fFw" = (
|
||||
/obj/machinery/light/small/emergency,
|
||||
/obj/effect/floor_decal/spline/plain{
|
||||
@@ -60655,6 +60716,16 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/storage/tech)
|
||||
"fZm" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/grille,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/security/brig)
|
||||
"fZq" = (
|
||||
/obj/structure/closet,
|
||||
/obj/random/junk,
|
||||
@@ -61102,6 +61173,15 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled/freezer,
|
||||
/area/crew_quarters/locker/locker_toilet)
|
||||
"heb" = (
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"heQ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
@@ -61479,6 +61559,13 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/research_port)
|
||||
"hSk" = (
|
||||
/obj/structure/table/standard,
|
||||
/obj/effect/floor_decal/corner/purple{
|
||||
dir = 6
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/maintenance/security_starboard)
|
||||
"hSJ" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
@@ -62169,6 +62256,7 @@
|
||||
/obj/machinery/alarm{
|
||||
pixel_y = 28
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"kbS" = (
|
||||
@@ -63105,6 +63193,19 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/assembly/robotics_cyborgification)
|
||||
"mlY" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
req_access = list(12)
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"mmr" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass{
|
||||
@@ -64022,6 +64123,17 @@
|
||||
},
|
||||
/turf/simulated/floor/wood,
|
||||
/area/crew_quarters/bar)
|
||||
"orw" = (
|
||||
/obj/structure/ladder{
|
||||
pixel_y = 16
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 32;
|
||||
d2 = 2;
|
||||
icon_state = "11-2"
|
||||
},
|
||||
/turf/simulated/open,
|
||||
/area/maintenance/security_starboard)
|
||||
"osb" = (
|
||||
/obj/effect/floor_decal/corner_wide/mauve/full{
|
||||
dir = 4
|
||||
@@ -64512,6 +64624,10 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/simulated/floor/tiled/old,
|
||||
/area/maintenance/engineering)
|
||||
"pnV" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"pok" = (
|
||||
/obj/structure/curtain/medical,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -64961,7 +65077,13 @@
|
||||
/obj/machinery/meter{
|
||||
name = "Scrubbers"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/effect/floor_decal/corner/purple/full{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table/rack,
|
||||
/obj/item/pickaxe,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/maintenance/security_starboard)
|
||||
"qwE" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
@@ -65290,6 +65412,14 @@
|
||||
/obj/item/toy/figure/roboticist,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/research_port)
|
||||
"rkv" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 1;
|
||||
icon_state = "pipe-c"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"rlF" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -65360,6 +65490,10 @@
|
||||
/obj/structure/table/rack,
|
||||
/obj/random/toolbox,
|
||||
/obj/random/tool,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"rtt" = (
|
||||
@@ -65523,6 +65657,7 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"rNi" = (
|
||||
@@ -65581,11 +65716,6 @@
|
||||
/obj/effect/floor_decal/corner/grey/diagonal,
|
||||
/turf/simulated/floor/tiled/old_white,
|
||||
/area/maintenance/medbay)
|
||||
"rVD" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/obj/item/hoist_kit,
|
||||
/turf/simulated/open,
|
||||
/area/maintenance/security_starboard)
|
||||
"rWE" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/cyan,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -65801,6 +65931,20 @@
|
||||
},
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/lawoffice)
|
||||
"snv" = (
|
||||
/obj/structure/cable/green{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/structure/table/standard,
|
||||
/obj/item/storage/box/donkpockets{
|
||||
pixel_x = 3;
|
||||
pixel_y = 3
|
||||
},
|
||||
/obj/item/storage/box/donkpockets,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"sny" = (
|
||||
/obj/machinery/power/apc{
|
||||
dir = 1;
|
||||
@@ -66108,6 +66252,12 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/bar)
|
||||
"sZw" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/effect/floor_decal/corner/purple/full,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/maintenance/security_starboard)
|
||||
"taq" = (
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_y = -32
|
||||
@@ -66139,7 +66289,8 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 9
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/simulated/wall,
|
||||
/area/maintenance/security_starboard)
|
||||
"tgQ" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -66201,6 +66352,31 @@
|
||||
/obj/machinery/hologram/holopad,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/engineering/atmos/storage)
|
||||
"tnQ" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"tow" = (
|
||||
/obj/structure/table/standard,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -67164,6 +67340,23 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/rnd/lab)
|
||||
"vfO" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/bed/chair/remote/robot/prison,
|
||||
/obj/machinery/door/window/brigdoor/northright{
|
||||
id = "Remote Chair";
|
||||
name = "Remote Chair";
|
||||
req_access = list(2)
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/prison)
|
||||
"vgi" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/window/reinforced{
|
||||
@@ -67323,6 +67516,17 @@
|
||||
/obj/effect/floor_decal/spline/plain,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/nuke_storage)
|
||||
"vuW" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/grille,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/security/brig)
|
||||
"vvS" = (
|
||||
/obj/structure/bed/chair/office/dark{
|
||||
dir = 8
|
||||
@@ -67713,6 +67917,30 @@
|
||||
/obj/effect/floor_decal/industrial/hatch/yellow,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/primary/aft)
|
||||
"wkn" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"wlr" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/window/reinforced{
|
||||
@@ -68011,6 +68239,7 @@
|
||||
dir = 4;
|
||||
pixel_x = -28
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"wZf" = (
|
||||
@@ -68197,6 +68426,29 @@
|
||||
icon_state = "asteroidplating"
|
||||
},
|
||||
/area/mine/unexplored)
|
||||
"xmv" = (
|
||||
/obj/effect/floor_decal/industrial/warning{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"xmZ" = (
|
||||
/obj/structure/plasticflaps/airtight,
|
||||
/obj/machinery/door/firedoor,
|
||||
@@ -68246,6 +68498,15 @@
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/primary/starboard)
|
||||
"xoV" = (
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/obj/structure/cable{
|
||||
d1 = 2;
|
||||
d2 = 4;
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"xpb" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/morgue{
|
||||
@@ -68311,6 +68572,22 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/atmos_control)
|
||||
"xDq" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 2;
|
||||
icon_state = "pipe-c"
|
||||
},
|
||||
/obj/structure/lattice/catwalk/indoor/grate,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/security_starboard)
|
||||
"xFo" = (
|
||||
/obj/structure/table/standard,
|
||||
/obj/effect/floor_decal/corner/purple/full{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/storage/bag/crystal,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/maintenance/security_starboard)
|
||||
"xGz" = (
|
||||
/obj/effect/decal/cleanable/generic,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -68501,10 +68778,25 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/outpost/mining_main/eva)
|
||||
"yck" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/obj/random/tool,
|
||||
/obj/structure/lattice,
|
||||
/obj/structure/disposalpipe/down{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/open,
|
||||
/area/maintenance/security_starboard)
|
||||
"ydb" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/grille,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/security/brig)
|
||||
"yfc" = (
|
||||
/obj/machinery/disposal,
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
@@ -100023,9 +100315,9 @@ kbF
|
||||
aai
|
||||
rKr
|
||||
aan
|
||||
aah
|
||||
xoV
|
||||
agC
|
||||
aaJ
|
||||
wkn
|
||||
aaU
|
||||
abg
|
||||
abD
|
||||
@@ -100535,20 +100827,20 @@ aaa
|
||||
aad
|
||||
aag
|
||||
yck
|
||||
aaj
|
||||
aaj
|
||||
aav
|
||||
orw
|
||||
heb
|
||||
xmv
|
||||
aad
|
||||
udz
|
||||
aaV
|
||||
abi
|
||||
abF
|
||||
abF
|
||||
acm
|
||||
abF
|
||||
abF
|
||||
abF
|
||||
abF
|
||||
acw
|
||||
abF
|
||||
abF
|
||||
abF
|
||||
adR
|
||||
auN
|
||||
afd
|
||||
@@ -100791,7 +101083,7 @@ aaa
|
||||
aaa
|
||||
aad
|
||||
rsL
|
||||
rVD
|
||||
aaj
|
||||
aaj
|
||||
aaj
|
||||
aaw
|
||||
@@ -100801,10 +101093,10 @@ aaV
|
||||
aaV
|
||||
abG
|
||||
aaV
|
||||
aaV
|
||||
aaV
|
||||
aaV
|
||||
aaV
|
||||
ydb
|
||||
fZm
|
||||
fZm
|
||||
vuW
|
||||
aaV
|
||||
adS
|
||||
aeC
|
||||
@@ -101047,21 +101339,21 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aad
|
||||
aah
|
||||
xDq
|
||||
aak
|
||||
aao
|
||||
aar
|
||||
aax
|
||||
agC
|
||||
aaJ
|
||||
aah
|
||||
mlY
|
||||
tnQ
|
||||
pnV
|
||||
wZe
|
||||
aae
|
||||
rkv
|
||||
dED
|
||||
cMe
|
||||
acx
|
||||
abU
|
||||
abU
|
||||
sZw
|
||||
adv
|
||||
adT
|
||||
aeD
|
||||
@@ -101317,8 +101609,8 @@ abH
|
||||
tgD
|
||||
qvD
|
||||
acy
|
||||
aah
|
||||
aaD
|
||||
hSk
|
||||
xFo
|
||||
aaV
|
||||
adU
|
||||
aeE
|
||||
@@ -101572,9 +101864,9 @@ aad
|
||||
aaJ
|
||||
abJ
|
||||
aad
|
||||
adb
|
||||
aah
|
||||
fFq
|
||||
aad
|
||||
aad
|
||||
aad
|
||||
aad
|
||||
aaV
|
||||
adV
|
||||
@@ -101865,7 +102157,7 @@ aIA
|
||||
aJT
|
||||
aLG
|
||||
aNz
|
||||
aLG
|
||||
vfO
|
||||
aQS
|
||||
azK
|
||||
aUe
|
||||
@@ -102379,7 +102671,7 @@ aIC
|
||||
aJV
|
||||
azK
|
||||
azK
|
||||
aPn
|
||||
aPm
|
||||
aQU
|
||||
azK
|
||||
aUf
|
||||
@@ -102635,8 +102927,8 @@ aGA
|
||||
aGx
|
||||
aJW
|
||||
azK
|
||||
aGx
|
||||
aPo
|
||||
azK
|
||||
aPm
|
||||
aQV
|
||||
azK
|
||||
aUg
|
||||
@@ -103149,7 +103441,7 @@ aEC
|
||||
aIE
|
||||
aJY
|
||||
azK
|
||||
aEC
|
||||
snv
|
||||
aPp
|
||||
aQX
|
||||
azK
|
||||
|
||||
@@ -34,4 +34,7 @@
|
||||
,/area/bridge/selfdestruct
|
||||
,/area/medical/cryo
|
||||
,/area/medical/patient_c
|
||||
,/area/security/penal_colony
|
||||
,/area/security/prison/remote
|
||||
,/area/security/warden/remote
|
||||
)
|
||||
|
||||
@@ -11,6 +11,7 @@ Used In File(s): /code/game/objects/item/devices/radio/radio.dm
|
||||
.centradio {color: #5C5C8A;}
|
||||
.airadio {color: #FF00FF;}
|
||||
.secradio {color: #A30000;}
|
||||
.penradio {color: #DB1270;}
|
||||
.engradio {color: #A66300;}
|
||||
.medradio {color: #008160;}
|
||||
.sciradio {color: #993399;}
|
||||
|
||||
Reference in New Issue
Block a user