Merge remote-tracking branch 'upstream/master' into multivis

# Conflicts:
#	.travis.yml
#	_maps/map_files/MetaStation/z2.dmm
#	_maps/map_files/cyberiad/z2.dmm
#	code/game/atoms_movable.dm
#	code/game/machinery/camera/camera.dm
#	code/modules/mob/living/silicon/ai/ai.dm
#	code/modules/mob/living/silicon/ai/freelook/eye.dm
This commit is contained in:
tigercat2000
2018-10-23 17:41:41 -07:00
1545 changed files with 62445 additions and 38543 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
name = "Circuit Imprinter"
desc = "Manufactures circuit boards for the construction of machines."
icon_state = "circuit_imprinter"
flags = OPENCONTAINER
container_type = OPENCONTAINER
var/efficiency_coeff
@@ -543,14 +543,22 @@
build_path = /obj/item/assembly/timer
category = list("initial", "Miscellaneous")
/datum/design/voice_analyser
name = "Voice Analyser"
id = "voice_analyser"
/datum/design/voice_analyzer
name = "Voice Analyzer"
id = "voice_analyzer"
build_type = AUTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
build_path = /obj/item/assembly/voice
category = list("initial", "Miscellaneous")
/datum/design/noise_analyser
name = "Noise Analyser"
id = "Noise_analyser"
build_type = AUTOLATHE
materials = list(MAT_METAL = 100, MAT_GLASS = 10)
build_path = /obj/item/assembly/voice/noise
category = list("initial", "Miscellaneous")
/datum/design/light_tube
name = "Light Tube"
id = "light_tube"
@@ -591,6 +599,14 @@
build_path = /obj/item/reagent_containers/syringe
category = list("initial", "Medical")
/datum/design/safety_hypo
name = "Medical Hypospray"
id = "safetyhypo"
build_type = AUTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/reagent_containers/hypospray/safety
category = list("initial", "Medical")
/datum/design/prox_sensor
name = "Proximity Sensor"
id = "prox_sensor"
@@ -800,6 +816,14 @@
build_path = /obj/item/conveyor_switch_construct
category = list("initial", "Construction")
/datum/design/conveyor_belt_placer
name = "Conveyor Belt Placer"
id = "conveyor_belt_placer"
build_type = AUTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000) //This thing doesn't need to be very resource-intensive as the belts are already expensive
build_path = /obj/item/storage/conveyor
category = list("initial", "Construction")
/datum/design/laptop
name = "Laptop Frame"
id = "laptop"
@@ -832,38 +856,6 @@
build_path = /obj/item/videocam
category = list("initial", "Miscellaneous")
/datum/design/canvas
name = "11px by 11px Canvas"
id = "canvas"
build_type = AUTOLATHE
materials = list(MAT_METAL = 50)
build_path = /obj/item/canvas
category = list("initial", "Miscellaneous")
/datum/design/canvas/nineteenXnineteen
name = "19px by 19px Canvas"
id = "canvas19x19"
build_type = AUTOLATHE
materials = list(MAT_METAL = 50)
build_path = /obj/item/canvas/nineteenXnineteen
category = list("initial", "Miscellaneous")
/datum/design/canvas/twentythreeXnineteen
name = "23px by 19px Canvas"
id = "canvas23x19"
build_type = AUTOLATHE
materials = list(MAT_METAL = 70)
build_path = /obj/item/canvas/twentythreeXnineteen
category = list("initial", "Miscellaneous")
/datum/design/canvas/twentythreeXtwentythree
name = "23px by 23px Canvas"
id = "canvas23x23"
build_type = AUTOLATHE
materials = list(MAT_METAL = 100)
build_path = /obj/item/canvas/twentythreeXtwentythree
category = list("initial", "Miscellaneous")
/datum/design/logic_board
name = "Logic Circuit"
id = "logic_board"
@@ -888,4 +880,4 @@
build_type = AUTOLATHE
materials = list(MAT_GLASS = 2500) //1.25 glass sheets, broken mirrors will return a shard (1 sheet)
build_path = /obj/item/mounted/mirror
category = list("initial", "Miscellaneous")
category = list("initial", "Miscellaneous")
@@ -8,7 +8,7 @@
req_tech = list("bluespace" = 3, "materials" = 6, "plasmatech" = 4)
build_type = PROTOLATHE
materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500)
build_path = /obj/item/ore/bluespace_crystal/artificial
build_path = /obj/item/stack/ore/bluespace_crystal/artificial
category = list("Bluespace")
/datum/design/bag_holding
@@ -51,13 +51,23 @@
build_path = /obj/item/storage/bag/ore/holding
category = list("Bluespace")
/datum/design/bluespace_belt_holder
name = "Bluespace Conveyor Belt Placer"
desc = "This device facilitates the rapid deployment of conveyor belts. This one is powered by bluespace."
id = "bluespace_belt_holder"
req_tech = list("materials" = 1, "engineering" = 3, "bluespace" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_SILVER = 500) //Costs similar materials to the basic one, but this one needs silver
build_path = /obj/item/storage/conveyor/bluespace
category = list("Bluespace")
/datum/design/telepad_beacon
name = "Telepad Beacon"
desc = "Use to warp in a cargo telepad."
id = "telepad_beacon"
req_tech = list("programming" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 4)
build_type = PROTOLATHE
materials = list (MAT_METAL = 2000, MAT_GLASS = 1750, MAT_SILVER = 500)
materials = list(MAT_METAL = 2000, MAT_GLASS = 1750, MAT_SILVER = 500)
build_path = /obj/item/telepad_beacon
category = list("Bluespace")
@@ -67,6 +77,6 @@
id = "beacon"
req_tech = list("bluespace" = 1)
build_type = PROTOLATHE
materials = list (MAT_METAL = 150, MAT_GLASS = 100)
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
build_path = /obj/item/radio/beacon
category = list("Bluespace")
@@ -272,6 +272,16 @@
build_path = /obj/item/circuitboard/mechfab
category = list("Research Machinery")
/datum/design/podfab
name = "Machine Board (Spacepod Fabricator)"
desc = "The circuit board for an Spacepod Fabricator"
id = "podfab"
req_tech = list("programming" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000)
build_path = /obj/item/circuitboard/podfab
category = list("Research Machinery")
/datum/design/mech_recharger
name = "Machine Board (Mech Bay Recharger)"
desc = "The circuit board for a Mech Bay Recharger."
@@ -653,6 +653,15 @@
construction_time = 200
category = list("Exosuit Equipment")
/datum/design/medical_jaw
name = "Exosuit Medical Equipment (Rescue Jaw)"
id = "mech_medical_jaw"
build_type = MECHFAB
req_tech = list("materials" = 4, "engineering" = 6, "magnets" = 6) //now same as jaws of life
materials = list(MAT_METAL=5000,MAT_SILVER=2000,MAT_TITANIUM=1500)
construction_time = 200
category = list("Exosuit Equipment")
/datum/design/mech_generator
name = "Exosuit Equipment (Plasma Generator)"
id = "mech_generator"
@@ -1120,6 +1129,15 @@
construction_time = 350
category = list("Misc")
/datum/design/integrated_robotic_chassis
name = "Integrated Robotic Chassis"
id = "integrated_robotic_chassis"
build_type = MECHFAB
build_path = /mob/living/carbon/human/machine/created
materials = list(MAT_METAL = 40000)
construction_time = 400
category = list("Misc")
/datum/design/ipc_cell
name = "IPC Microbattery"
id = "ipc_cell"
+139 -14
View File
@@ -103,26 +103,26 @@
build_path = /obj/item/mass_spectrometer
category = list("Medical")
/datum/design/posibrain
name = "Positronic Brain"
desc = "The latest in Artificial Intelligences."
id = "mmi_posi"
/datum/design/robotic_brain
name = "Robotic Brain"
desc = "The latest in non-sentient Artificial Intelligences."
id = "mmi_robotic"
req_tech = list("programming" = 5, "biotech" = 4, "plasmatech" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 1700, MAT_GLASS = 1350, MAT_GOLD = 500) //Gold, because SWAG.
construction_time = 75
build_path = /obj/item/mmi/posibrain
build_path = /obj/item/mmi/robotic_brain
category = list("Misc","Medical")
/datum/design/mmi_radio
name = "Radio-Enabled Man-Machine Interface"
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity. This one comes with a built-in radio."
id = "mmi_radio"
/datum/design/mmi_radio_upgrade
name = "Man-Machine Interface Radio Upgrade"
desc = "Enables radio capability on MMIs when either installed directly on the MMI, or through a cyborg's chassis."
id = "mmi_radio_upgrade"
req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 2)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 1200, MAT_GLASS = 500)
construction_time = 75
build_path = /obj/item/mmi/radio_enabled
materials = list(MAT_METAL = 200)
construction_time = 50
build_path = /obj/item/mmi_radio_upgrade
category = list("Misc","Medical")
/datum/design/nanopaste
@@ -181,7 +181,7 @@
id = "scalpel_manager"
req_tech = list("biotech" = 4, "materials" = 7, "magnets" = 5, "programming" = 4)
build_type = PROTOLATHE
materials = list (MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_DIAMOND = 1000)
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_DIAMOND = 1000)
build_path = /obj/item/scalpel/laser/manager
category = list("Medical")
@@ -245,6 +245,36 @@
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/alienbonegel
name = "Alien Bone Gel"
desc = "Advanced bone gel obtained through Abductor technology."
id = "alien_bonegel"
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/bonegel/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/alienbonesetter
name = "Alien Bone Setter"
desc = "An advanced bone setter obtained through Abductor technology."
id = "alien_bonesetter"
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/bonesetter/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/alienfixovein
name = "Alien FixOVein"
desc = "An advanced FixOVein obtained through Abductor technology."
id = "alien_fixovein"
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/FixOVein/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/////////////////////////////////////////
//////////Cybernetic Implants////////////
/////////////////////////////////////////
@@ -271,17 +301,39 @@
build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube
category = list("Misc", "Medical")
/datum/design/cyberimp_surgical
name = "Surgical Arm Implant"
desc = "A set of surgical tools hidden behind a concealed panel on the user's arm."
id = "ci-surgey"
req_tech = list("materials" = 3, "engineering" = 3, "biotech" = 3, "programming" = 2, "magnets" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
construction_time = 200
build_path = /obj/item/organ/internal/cyberimp/arm/surgery
category = list("Misc", "Medical")
/datum/design/cyberimp_toolset
name = "Toolset Arm Implant"
desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm."
id = "ci-toolset"
req_tech = list("materials" = 3, "engineering" = 4, "biotech" = 4, "powerstorage" = 4)
build_type = PROTOLATHE | MECHFAB
materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
materials = list(MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
construction_time = 200
build_path = /obj/item/organ/internal/cyberimp/arm/toolset
category = list("Misc", "Medical")
/datum/design/cyberimp_diagnostic_hud
name = "Diagnostic HUD implant"
desc = "These cybernetic eye implants will display a diagnostic HUD over everything you see. Wiggle eyes to control."
id = "ci-diaghud"
req_tech = list("materials" = 5, "engineering" = 4, "programming" = 4, "biotech" = 4)
build_type = PROTOLATHE | MECHFAB
construction_time = 50
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500)
build_path = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic
category = list("Misc", "Medical")
/datum/design/cyberimp_medical_hud
name = "Medical HUD implant"
desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control."
@@ -304,6 +356,17 @@
build_path = /obj/item/organ/internal/cyberimp/eyes/hud/security
category = list("Misc", "Medical")
/datum/design/cyberimp_meson
name = "Meson scanner implant"
desc = "These cybernetic eyes will allow you to see the structural layout of the station, and, well, everything else."
id = "ci-mesonhud"
req_tech = list("materials" = 4, "biotech" = 4, "engineering" = 4)
build_type = PROTOLATHE | MECHFAB
construction_time = 50
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500, MAT_GOLD = 300)
build_path = /obj/item/organ/internal/cyberimp/eyes/meson
category = list("Misc", "Medical")
/datum/design/cyberimp_xray
name = "X-Ray implant"
desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile."
@@ -435,3 +498,65 @@
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/implantcase/track
category = list("Medical")
//Cybernetic organs
/datum/design/cybernetic_eyes
name = "Cybernetic Eyes"
desc = "A cybernetic pair of eyes"
id = "cybernetic_eyes"
req_tech = list("biotech" = 4, "materials" = 4)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/organ/internal/eyes/cybernetic
category = list("Medical")
/datum/design/cybernetic_liver
name = "Cybernetic Liver"
desc = "A cybernetic liver"
id = "cybernetic_liver"
req_tech = list("biotech" = 4, "materials" = 4)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/organ/internal/liver/cybernetic
category = list("Medical")
/datum/design/cybernetic_kidneys
name = "Cybernetic Kidneys"
desc = "A cybernetic pair of kidneys"
id = "cybernetic_kidneys"
req_tech = list("biotech" = 4, "materials" = 4)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/organ/internal/kidneys/cybernetic
category = list("Medical")
/datum/design/cybernetic_heart
name = "Cybernetic Heart"
desc = "A cybernetic heart"
id = "cybernetic_heart"
req_tech = list("biotech" = 4, "materials" = 4)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/organ/internal/heart/cybernetic
category = list("Medical")
/datum/design/cybernetic_lungs
name = "Cybernetic Lungs"
desc = "A pair of cybernetic lungs."
id = "cybernetic_lungs"
req_tech = list("biotech" = 4, "materials" = 4)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/organ/internal/lungs/cybernetic
category = list("Medical")
/datum/design/cybernetic_lungs_u
name = "Upgraded Cybernetic Lungs"
desc = "A pair of upgraded cybernetic lungs."
id = "cybernetic_lungs_u"
req_tech = list("biotech" = 5, "materials" = 5, "engineering" = 5)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500)
build_path = /obj/item/organ/internal/lungs/cybernetic/upgraded
category = list("Medical")
@@ -60,3 +60,23 @@
materials = list(MAT_METAL = 500, MAT_GLASS = 300)
build_path = /obj/item/camera/digital
category = list("Miscellaneous")
/datum/design/safety_muzzle
name = "Safety Muzzle"
desc = "Produce a lockable muzzle keyed to security ID cards"
id = "safetymuzzle"
req_tech = list("materials" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL=500, MAT_GLASS=50)
build_path = /obj/item/clothing/mask/muzzle/safety
category = list("Miscellaneous")
/datum/design/shock_muzzle
name = "Shock Muzzle"
desc = "Produce a modified safety muzzle that includes an electric shock pack and a slot for a trigger assembly."
id = "shockmuzzle"
req_tech = list("materials" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL=500, MAT_GLASS=50)
build_path = /obj/item/clothing/mask/muzzle/safety/shock
category = list("Miscellaneous")
+3 -3
View File
@@ -21,7 +21,7 @@
icon_state = "h_lathe"
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
var/recentlyExperimented = 0
var/mob/trackedIan
var/mob/trackedRuntime
@@ -89,8 +89,8 @@
component_parts += new /obj/item/stock_parts/micro_laser(src)
component_parts += new /obj/item/stock_parts/micro_laser(src)
spawn(1)
trackedIan = locate(/mob/living/simple_animal/pet/corgi/Ian) in mob_list
trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in mob_list
trackedIan = locate(/mob/living/simple_animal/pet/corgi/Ian) in GLOB.mob_list
trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in GLOB.mob_list
SetTypeReactions()
RefreshParts()
+4 -4
View File
@@ -50,7 +50,7 @@ var/global/list/obj/machinery/message_server/message_servers = list()
name = "Messaging Server"
density = 1
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 100
@@ -199,7 +199,7 @@ var/obj/machinery/blackbox_recorder/blackbox
name = "Blackbox Recorder"
density = 1
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 100
var/list/messages = list() //Stores messages of non-standard frequencies
@@ -267,7 +267,7 @@ var/obj/machinery/blackbox_recorder/blackbox
var/pda_msg_amt = 0
var/rc_msg_amt = 0
for(var/obj/machinery/message_server/MS in machines)
for(var/obj/machinery/message_server/MS in GLOB.machines)
if(MS.pda_msgs.len > pda_msg_amt)
pda_msg_amt = MS.pda_msgs.len
if(MS.rc_msgs.len > rc_msg_amt)
@@ -377,4 +377,4 @@ proc/feedback_add_details(var/variable,var/details)
if(!FV) return
FV.add_details(details)
FV.add_details(details)
+1 -1
View File
@@ -11,7 +11,7 @@ Note: Must be placed west/left of and R&D console to function.
name = "Protolathe"
desc = "Converts raw materials into useful objects."
icon_state = "protolathe"
flags = OPENCONTAINER
container_type = OPENCONTAINER
var/efficiency_coeff
+2 -2
View File
@@ -426,7 +426,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/key = usr.key //so we don't lose the info during the spawn delay
if(!(being_built.build_type & PROTOLATHE))
g2g = 0
message_admins("Protolathe exploit attempted by [key_name(usr, usr.client)]!")
message_admins("Protolathe exploit attempted by [key_name(usr, TRUE)]!")
if(g2g) //If input is incorrect, nothing happens
var/new_coeff = coeff * being_built.lathe_time_factor
@@ -502,7 +502,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
power = max(2000, power)
if(!(being_built.build_type & IMPRINTER))
g2g = 0
message_admins("Circuit imprinter exploit attempted by [key_name(usr, usr.client)]!")
message_admins("Circuit imprinter exploit attempted by [key_name(usr, TRUE)]!")
if(g2g) //Again, if input is wrong, do nothing
add_wait_message("Imprinting Circuit. Please Wait...", IMPRINTER_DELAY)
+11 -11
View File
@@ -6,7 +6,7 @@
icon = 'icons/obj/machines/research.dmi'
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
var/busy = 0
var/hacked = 0
var/disabled = 0
@@ -22,7 +22,7 @@
/obj/machinery/r_n_d/New()
materials = AddComponent(/datum/component/material_container,
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), 0,
FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
FALSE, list(/obj/item/stack, /obj/item/stack/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
materials.precise_insertion = TRUE
..()
wires["Red"] = 0
@@ -43,15 +43,15 @@
if(shocked)
shock(user,50)
if(panel_open)
var/dat as text
var/list/dat = list()
dat += "[src.name] Wires:<BR>"
for(var/wire in src.wires)
dat += text("[wire] Wire: <A href='?src=[UID()];wire=[wire];cut=1'>[src.wires[wire] ? "Mend" : "Cut"]</A> <A href='?src=[UID()];wire=[wire];pulse=1'>Pulse</A><BR>")
for(var/wire in wires)
dat += "[wire] Wire: <A href='?src=[UID()];wire=[wire];cut=1'>[src.wires[wire] ? "Mend" : "Cut"]</A> <A href='?src=[UID()];wire=[wire];pulse=1'>Pulse</A><BR>"
dat += text("The red light is [src.disabled ? "off" : "on"].<BR>")
dat += text("The green light is [src.shocked ? "off" : "on"].<BR>")
dat += text("The blue light is [src.hacked ? "off" : "on"].<BR>")
user << browse("<HTML><HEAD><TITLE>[src.name] Hacking</TITLE></HEAD><BODY>[dat]</BODY></HTML>","window=hack_win")
dat += "The red light is [src.disabled ? "off" : "on"].<BR>"
dat += "The green light is [src.shocked ? "off" : "on"].<BR>"
dat += "The blue light is [src.hacked ? "off" : "on"].<BR>"
user << browse("<HTML><HEAD><TITLE>[src.name] Hacking</TITLE></HEAD><BODY>[dat.Join("")]</BODY></HTML>","window=hack_win")
return
@@ -121,7 +121,7 @@
/obj/machinery/r_n_d/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted)
var/stack_name
if(ispath(type_inserted, /obj/item/ore/bluespace_crystal))
if(ispath(type_inserted, /obj/item/stack/ore/bluespace_crystal))
stack_name = "bluespace polycrystal"
use_power(MINERAL_MATERIAL_AMOUNT / 10)
else
@@ -130,4 +130,4 @@
use_power(min(1000, (amount_inserted / 100)))
overlays += "[initial(name)]_[stack_name]"
sleep(10)
overlays -= "[initial(name)]_[stack_name]"
overlays -= "[initial(name)]_[stack_name]"
+18 -13
View File
@@ -45,7 +45,8 @@
heat_gen /= max(1, tot_rating)
/obj/machinery/r_n_d/server/proc/initialize_serv()
if(!files) files = new /datum/research(src)
if(!files)
files = new /datum/research(src)
var/list/temp_list
if(!id_with_upload.len)
temp_list = list()
@@ -105,7 +106,7 @@
// Backup files to CentComm to help admins recover data after griefer attacks
/obj/machinery/r_n_d/server/proc/griefProtection()
for(var/obj/machinery/r_n_d/server/centcom/C in machines)
for(var/obj/machinery/r_n_d/server/centcom/C in GLOB.machines)
files.push_data(C.files)
/obj/machinery/r_n_d/server/proc/produce_heat(heat_amt)
@@ -165,7 +166,7 @@
..()
var/list/no_id_servers = list()
var/list/server_ids = list()
for(var/obj/machinery/r_n_d/server/S in machines)
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
switch(S.server_id)
if(-1)
continue
@@ -217,20 +218,20 @@
temp_server = null
consoles = list()
servers = list()
for(var/obj/machinery/r_n_d/server/S in machines)
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
if(S.server_id == text2num(href_list["access"]) || S.server_id == text2num(href_list["data"]) || S.server_id == text2num(href_list["transfer"]))
temp_server = S
break
if(href_list["access"])
screen = 1
for(var/obj/machinery/computer/rdconsole/C in machines)
for(var/obj/machinery/computer/rdconsole/C in GLOB.machines)
if(C.sync)
consoles += C
else if(href_list["data"])
screen = 2
else if(href_list["transfer"])
screen = 3
for(var/obj/machinery/r_n_d/server/S in machines)
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
if(S == src)
continue
servers += S
@@ -252,7 +253,8 @@
else if(href_list["reset_tech"])
var/choice = alert("Technology Data Reset", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel")
if(choice == "Continue")
for(var/datum/tech/T in temp_server.files.known_tech)
for(var/I in temp_server.files.known_tech)
var/datum/tech/T = temp_server.files.known_tech[I]
if(T.id == href_list["reset_tech"])
T.level = 1
break
@@ -261,9 +263,10 @@
else if(href_list["reset_design"])
var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? Data lost cannot be recovered.", "Continue", "Cancel")
if(choice == "Continue")
for(var/datum/design/D in temp_server.files.known_designs)
for(var/I in temp_server.files.known_designs)
var/datum/design/D = temp_server.files.known_designs[I]
if(D.id == href_list["reset_design"])
temp_server.files.known_designs -= D
temp_server.files.known_designs -= D.id
break
temp_server.files.RefreshResearch()
@@ -280,7 +283,7 @@
if(0) //Main Menu
dat += "Connected Servers:<BR><BR>"
for(var/obj/machinery/r_n_d/server/S in machines)
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
continue
dat += "[S.name] || "
@@ -310,15 +313,17 @@
dat += "<HR><A href='?src=[UID()];main=1'>Main Menu</A>"
if(2) //Data Management menu
dat += "[temp_server.name] Data ManagementP<BR><BR>"
dat += "[temp_server.name] Data Management<BR><BR>"
dat += "Known Technologies<BR>"
for(var/datum/tech/T in temp_server.files.known_tech)
for(var/I in temp_server.files.known_tech)
var/datum/tech/T = temp_server.files.known_tech[I]
if(T.level <= 0)
continue
dat += "* [T.name] "
dat += "<A href='?src=[UID()];reset_tech=[T.id]'>(Reset)</A><BR>" //FYI, these are all strings.
dat += "Known Designs<BR>"
for(var/datum/design/D in temp_server.files.known_designs)
for(var/I in temp_server.files.known_designs)
var/datum/design/D = temp_server.files.known_designs[I]
dat += "* [D.name] "
dat += "<A href='?src=[UID()];reset_design=[D.id]'>(Delete)</A><BR>"
dat += "<HR><A href='?src=[UID()];main=1'>Main Menu</A>"
@@ -8,6 +8,7 @@
icon_state = "grey slime extract"
force = 1
w_class = WEIGHT_CLASS_TINY
container_type = INJECTABLE | DRAWABLE
throwforce = 0
throw_speed = 3
throw_range = 6
@@ -476,7 +477,7 @@
pixel_x = -64
pixel_y = -64
unacidable = 1
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/mob/living/immune = list() // the one who creates the timestop is immune
var/list/stopped_atoms = list()
var/freezerange = 2
@@ -485,7 +486,7 @@
/obj/effect/timestop/New()
..()
for(var/mob/living/M in player_list)
for(var/mob/living/M in GLOB.player_list)
for(var/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop/T in M.mind.spell_list) //People who can stop time are immune to timestop
immune |= M