Hard upstream sync (#6951)
* maps - none of our changes included yet i'll get them in after i finish up the rest of the sync * sync part 1 - underscore folders in code * controllers folder * datums folder * game folder * cmon, work * modules - admin to awaymissions * cargo to events * fields to lighting * mapping > ruins * rest of the code folder * rest of the folders in the root directory * DME * fixes compiling errors. it compiles so it works * readds map changes * fixes dogborg module select * fixes typo in moduleselect_alternate_icon filepath
This commit is contained in:
@@ -222,6 +222,14 @@
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/board/bounty
|
||||
name = "Computer Design (Bounty Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Bounty Console."
|
||||
id = "bounty"
|
||||
build_path = /obj/item/circuitboard/computer/bounty
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/board/mining
|
||||
name = "Computer Design (Outpost Status Display)"
|
||||
desc = "Allows for the construction of circuit boards used to build an outpost status display console."
|
||||
|
||||
@@ -122,6 +122,14 @@
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
/datum/design/board/vr_sleeper
|
||||
name = "Machine Design (VR Sleeper Board)"
|
||||
desc = "The circuit board for a VR sleeper."
|
||||
id = "vr_sleeper"
|
||||
build_path = /obj/item/circuitboard/machine/vr_sleeper
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
/datum/design/board/cryotube
|
||||
name = "Machine Design (Cryotube Board)"
|
||||
desc = "The circuit board for a cryotube."
|
||||
|
||||
@@ -79,7 +79,6 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
use_power(250)
|
||||
if(thing == loaded_item)
|
||||
loaded_item = null
|
||||
update_icon()
|
||||
var/list/food = thing.GetDeconstructableContents()
|
||||
for(var/obj/item/innerthing in food)
|
||||
destroy_item(innerthing, TRUE)
|
||||
@@ -90,10 +89,13 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
var/obj/item/stack/sheet/S = thing
|
||||
if(S.amount > 1 && !innermode)
|
||||
S.amount--
|
||||
loaded_item = S
|
||||
else
|
||||
qdel(S)
|
||||
else
|
||||
qdel(thing)
|
||||
if (!innermode)
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/rnd/destructive_analyzer/proc/user_try_decon_id(id, mob/user)
|
||||
@@ -104,9 +106,6 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
var/datum/techweb_node/TN = get_techweb_node_by_id(id)
|
||||
if(!istype(TN))
|
||||
return FALSE
|
||||
var/list/can_boost = techweb_item_boost_check(loaded_item)
|
||||
if(isnull(can_boost[id]))
|
||||
return FALSE
|
||||
var/dpath = loaded_item.type
|
||||
var/list/worths = TN.boost_item_paths[dpath]
|
||||
var/list/differences = list()
|
||||
@@ -116,7 +115,7 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
var/value = min(worths[i], TN.research_costs[i]) - used
|
||||
if(value > 0)
|
||||
differences[i] = value
|
||||
if(!length(differences))
|
||||
if(length(worths) && !length(differences))
|
||||
return FALSE
|
||||
var/choice = input("Are you sure you want to destroy [loaded_item] to [!length(worths) ? "reveal [TN.display_name]" : "boost [TN.display_name] by [json_encode(differences)] point\s"]?") in list("Proceed", "Cancel")
|
||||
if(choice == "Cancel")
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#define FAIL 8
|
||||
/obj/machinery/rnd/experimentor
|
||||
name = "\improper E.X.P.E.R.I-MENTOR"
|
||||
desc = "A \"replacement\" for the deconstructive analyzer with a slight tendency to catastrophically fail."
|
||||
desc = "A \"replacement\" for the destructive analyzer with a slight tendency to catastrophically fail."
|
||||
icon = 'icons/obj/machines/heavy_lathe.dmi'
|
||||
icon_state = "h_lathe"
|
||||
density = TRUE
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
/obj/machinery/rnd/experimentor/proc/SetTypeReactions()
|
||||
for(var/I in typesof(/obj/item))
|
||||
if(istype(I, /obj/item/relic))
|
||||
if(ispath(I, /obj/item/relic))
|
||||
item_reactions["[I]"] = SCANTYPE_DISCOVER
|
||||
else
|
||||
item_reactions["[I]"] = pick(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE)
|
||||
@@ -53,7 +53,7 @@
|
||||
if(ispath(I, /obj/item/stock_parts) || ispath(I, /obj/item/grenade/chem_grenade) || ispath(I, /obj/item/kitchen))
|
||||
var/obj/item/tempCheck = I
|
||||
if(initial(tempCheck.icon_state) != null) //check it's an actual usable item, in a hacky way
|
||||
if(istype(I, /obj/item/grenade/chem_grenade/tuberculosis))
|
||||
if(ispath(I, /obj/item/grenade/chem_grenade/tuberculosis))
|
||||
continue
|
||||
valid_items["[I]"] += 15
|
||||
|
||||
|
||||
@@ -861,7 +861,7 @@ Nothing else in the console has ID requirements.
|
||||
switch(ls["disconnect"])
|
||||
if("destroy")
|
||||
if(QDELETED(linked_destroy))
|
||||
say("No Deconstructive Analyzer Linked!")
|
||||
say("No Destructive Analyzer Linked!")
|
||||
return
|
||||
linked_destroy.linked_console = null
|
||||
linked_destroy = null
|
||||
@@ -887,9 +887,10 @@ Nothing else in the console has ID requirements.
|
||||
say("Ejecting Technology Disk")
|
||||
if(ls["deconstruct"])
|
||||
if(QDELETED(linked_destroy))
|
||||
say("No Deconstructive Analyzer Linked!")
|
||||
say("No Destructive Analyzer Linked!")
|
||||
return
|
||||
linked_destroy.user_try_decon_id(ls["deconstruct"], usr)
|
||||
if(!linked_destroy.user_try_decon_id(ls["deconstruct"], usr))
|
||||
say("Destructive analysis failed!")
|
||||
//Protolathe Materials
|
||||
if(ls["disposeP"]) //Causes the protolathe to dispose of a single reagent (all of it)
|
||||
if(QDELETED(linked_lathe))
|
||||
@@ -995,7 +996,7 @@ Nothing else in the console has ID requirements.
|
||||
screen = RDSCREEN_DESIGNDISK
|
||||
if(ls["eject_item"]) //Eject the item inside the destructive analyzer.
|
||||
if(QDELETED(linked_destroy))
|
||||
say("No Deconstructive Analyzer Linked!")
|
||||
say("No Destructive Analyzer Linked!")
|
||||
return
|
||||
if(linked_destroy.busy)
|
||||
to_chat(usr, "<span class='danger'>The destructive analyzer is busy at the moment.</span>")
|
||||
|
||||
@@ -41,10 +41,12 @@
|
||||
working = TRUE
|
||||
|
||||
/obj/machinery/rnd/server/emp_act()
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
stat |= EMPED
|
||||
addtimer(CALLBACK(src, .proc/unemp), 600)
|
||||
refresh_working()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/rnd/server/proc/unemp()
|
||||
stat &= ~EMPED
|
||||
|
||||
@@ -72,43 +72,44 @@
|
||||
SSresearch.invalid_design_ids[id] = 1
|
||||
|
||||
/proc/node_boost_error(id, message)
|
||||
WARNING("Invalid boost information for node \[[id]\]: [message]")
|
||||
SSresearch.invalid_node_boost[id] = message
|
||||
|
||||
/proc/verify_techweb_nodes()
|
||||
for(var/n in SSresearch.techweb_nodes)
|
||||
var/datum/techweb_node/N = SSresearch.techweb_nodes[n]
|
||||
if(!istype(N))
|
||||
stack_trace("WARNING: Invalid research node with ID [n] detected and removed.")
|
||||
WARNING("Invalid research node with ID [n] detected and removed.")
|
||||
SSresearch.techweb_nodes -= n
|
||||
research_node_id_error(n)
|
||||
for(var/p in N.prereq_ids)
|
||||
var/datum/techweb_node/P = SSresearch.techweb_nodes[p]
|
||||
if(!istype(P))
|
||||
stack_trace("WARNING: Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
WARNING("Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.prereq_ids -= p
|
||||
research_node_id_error(p)
|
||||
for(var/d in N.design_ids)
|
||||
var/datum/design/D = SSresearch.techweb_designs[d]
|
||||
if(!istype(D))
|
||||
stack_trace("WARNING: Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
WARNING("Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.designs -= d
|
||||
design_id_error(d)
|
||||
for(var/p in N.prerequisites)
|
||||
var/datum/techweb_node/P = N.prerequisites[p]
|
||||
if(!istype(P))
|
||||
stack_trace("WARNING: Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
WARNING("Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.prerequisites -= p
|
||||
research_node_id_error(p)
|
||||
for(var/u in N.unlocks)
|
||||
var/datum/techweb_node/U = N.unlocks[u]
|
||||
if(!istype(U))
|
||||
stack_trace("WARNING: Invalid research unlock node with ID [u] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
WARNING("Invalid research unlock node with ID [u] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.unlocks -= u
|
||||
research_node_id_error(u)
|
||||
for(var/d in N.designs)
|
||||
var/datum/design/D = N.designs[d]
|
||||
if(!istype(D))
|
||||
stack_trace("WARNING: Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
WARNING("Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.designs -= d
|
||||
design_id_error(d)
|
||||
for(var/p in N.boost_item_paths)
|
||||
@@ -116,15 +117,15 @@
|
||||
N.boost_item_paths -= p
|
||||
node_boost_error(N.id, "[p] is not a valid path.")
|
||||
var/list/points = N.boost_item_paths[p]
|
||||
if(!islist(points))
|
||||
N.boost_item_paths -= p
|
||||
node_boost_error(N.id, "No valid list.")
|
||||
else
|
||||
if(islist(points))
|
||||
for(var/i in points)
|
||||
if(!isnum(points[i]))
|
||||
node_boost_error(N.id, "[points[i]] is not a valid number.")
|
||||
else if(!SSresearch.point_types[i])
|
||||
node_boost_error(N.id, "[i] is not a valid point type.")
|
||||
else if(!isnull(points))
|
||||
N.boost_item_paths -= p
|
||||
node_boost_error(N.id, "No valid list.")
|
||||
CHECK_TICK
|
||||
|
||||
/proc/verify_techweb_designs()
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
display_name = "Biological Technology"
|
||||
description = "What makes us tick." //the MC, silly!
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("chem_heater", "chem_master", "chem_dispenser", "sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser")
|
||||
design_ids = list("chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
|
||||
Reference in New Issue
Block a user