From 302060acdad0b04724312b9f2e88e35f4a2f928b Mon Sep 17 00:00:00 2001
From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Date: Sun, 26 Mar 2023 22:23:03 +0000
Subject: [PATCH] Removes bepis Techweb and reworks tech disks in general
(#74147)
## About The Pull Request
Did you know that there's 2 types of disks Science can print?
One of them creates a whole new techweb and is used to transfer data to
and from techwebs (which used to be for Theft objective, but nowadays
all it's used for is Admin techweb).
The other one is these disks you can find from Lavaland & for the
Limbgrower which holds nodes on them directly, they don't need anything
else.
These are both printable and have very similar names which could easily
confuse people, especially since they are both printed and used at the
same place, being the R&D room and R&D console.
This will hopefully simplify it, by removing the base Tech disks from
being printable. The only one that can be printed now is for
Limbgrowers, which can't be easily mixed with the other type of Disk.
Outside of that, Lavaland disks are staying the same, but I've moved
Bepis disks to use this, which allows us to remove Bepis techwebs being
made every single time a new bepis disk is created.
Examples of it in-game



## Why It's Good For The Game
There's no reason why every single Bepis node should be making a whole
new techweb set with experiments to complete, roundstart nodes
researched, being constantly checked if it should gain research points,
have a list of papers to publish, and everything else that techwebs do.
Can you guess which disk does what in this screenshot?

## Changelog
:cl:
balance: You can no longer print Technology data disks. You can still
print Tech disks, which hold techweb information on it, just not the one
that holds up to 5 nodes.
balance: ^ Because of this, there's no way to download nodes from an RD
console and upload them to an Autolathe to bypass departmental
restrictions, you have to go through a Techfab/Circuit imprinter for
your needs.
balance: Ones that are found cannot have anything uploaded/deleted off
of them either, you can only upload them to the Web.
code: Every individual Bepis disk no longer create an entire techweb
/:cl:
---
.../LavaRuins/lavaland_surface_wizard.dmm | 2 +-
_maps/RandomRuins/SpaceRuins/clericden.dmm | 2 +-
.../SpaceRuins/dangerous_research.dmm | 2 +-
_maps/shuttles/whiteship_pubby.dmm | 6 +-
.../objects/effects/spawners/random/exotic.dm | 2 +-
code/modules/cargo/bounties/science.dm | 4 +-
code/modules/jobs/job_types/scientist.dm | 2 +-
.../mapfluff/ruins/lavaland_ruin_code.dm | 14 +--
.../ruins/spaceruin_code/clericsden.dm | 7 +-
code/modules/mining/lavaland/tendril_loot.dm | 2 +-
code/modules/research/bepis.dm | 2 +-
code/modules/research/designs.dm | 60 +++++++++---
.../research/designs/electronics_designs.dm | 24 -----
.../research/designs/limbgrower_designs.dm | 1 -
code/modules/research/rdconsole.dm | 68 ++------------
code/modules/research/research_disk.dm | 20 ----
code/modules/research/techweb/_techweb.dm | 13 +--
code/modules/research/techweb/all_nodes.dm | 1 -
.../modules/research/techweb/techweb_types.dm | 19 ----
tgui/packages/tgui/interfaces/Techweb.js | 92 +------------------
.../Scripts/74147_tech_disk_repath.txt | 7 ++
21 files changed, 95 insertions(+), 255 deletions(-)
create mode 100644 tools/UpdatePaths/Scripts/74147_tech_disk_repath.txt
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm
index 4ffe6287eca..20b3a851265 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm
@@ -135,7 +135,7 @@
dir = 4
},
/obj/structure/table/bronze,
-/obj/item/disk/design_disk/adv/knight_gear,
+/obj/item/disk/design_disk/knight_gear,
/turf/open/indestructible/necropolis,
/area/lavaland/surface/outdoors)
"q" = (
diff --git a/_maps/RandomRuins/SpaceRuins/clericden.dmm b/_maps/RandomRuins/SpaceRuins/clericden.dmm
index eb4421f68bf..0bf5a3a0579 100644
--- a/_maps/RandomRuins/SpaceRuins/clericden.dmm
+++ b/_maps/RandomRuins/SpaceRuins/clericden.dmm
@@ -71,7 +71,7 @@
"r" = (
/obj/effect/decal/cleanable/shreds,
/obj/effect/decal/remains/human,
-/obj/item/disk/design_disk/adv/cleric_mace,
+/obj/item/disk/design_disk/cleric_mace,
/obj/structure/trap/cult,
/turf/open/floor/carpet/airless,
/area/ruin/space)
diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
index 72f7c0842fd..cb86d311704 100644
--- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
+++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
@@ -678,7 +678,7 @@
/area/ruin/space/has_grav/dangerous_research)
"ji" = (
/obj/structure/table,
-/obj/item/disk/tech_disk/spaceloot,
+/obj/item/disk/design_disk/bepis,
/obj/effect/turf_decal/tile/neutral/opposingcorners,
/turf/open/floor/iron/dark,
/area/ruin/space/has_grav/dangerous_research/dorms)
diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship_pubby.dmm
index 16f184e65fc..329b72f4f7b 100644
--- a/_maps/shuttles/whiteship_pubby.dmm
+++ b/_maps/shuttles/whiteship_pubby.dmm
@@ -195,12 +195,12 @@
pixel_y = 7
},
/obj/item/raw_anomaly_core/random,
-/obj/item/disk/tech_disk/spaceloot{
+/obj/item/disk/design_disk/bepis{
pixel_x = -3;
pixel_y = -3
},
-/obj/item/disk/tech_disk/spaceloot,
-/obj/item/disk/tech_disk/spaceloot{
+/obj/item/disk/design_disk/bepis,
+/obj/item/disk/design_disk/bepis{
pixel_x = 3;
pixel_y = 3
},
diff --git a/code/game/objects/effects/spawners/random/exotic.dm b/code/game/objects/effects/spawners/random/exotic.dm
index a4356b5ec3a..ce48a31e5fd 100644
--- a/code/game/objects/effects/spawners/random/exotic.dm
+++ b/code/game/objects/effects/spawners/random/exotic.dm
@@ -8,7 +8,7 @@
spawn_loot_count = 2
loot = list( // Space loot spawner. Couple of random bits of technology-adjacent stuff including anomaly cores and BEPIS techs.
/obj/item/raw_anomaly_core/random,
- /obj/item/disk/tech_disk/spaceloot,
+ /obj/item/disk/design_disk/bepis,
/obj/item/camera_bug,
)
diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm
index aab8429b394..1807c5ae56f 100644
--- a/code/modules/cargo/bounties/science.dm
+++ b/code/modules/cargo/bounties/science.dm
@@ -18,8 +18,8 @@
description = "It turns out the diskettes the BEPIS prints experimental nodes on are extremely space-efficient. Send us one of your spares when you're done with it."
reward = CARGO_CRATE_VALUE * 8
wanted_types = list(
- /obj/item/disk/tech_disk/major = TRUE,
- /obj/item/disk/tech_disk/spaceloot = TRUE,
+ /obj/item/disk/design_disk/bepis/remove_tech = TRUE,
+ /obj/item/disk/design_disk/bepis = TRUE,
)
/datum/bounty/item/science/genetics
diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm
index 709d4b76c87..2cbc2f288d0 100644
--- a/code/modules/jobs/job_types/scientist.dm
+++ b/code/modules/jobs/job_types/scientist.dm
@@ -29,7 +29,7 @@
mail_goodies = list(
/obj/item/raw_anomaly_core/random = 10,
- /obj/item/disk/tech_disk/spaceloot = 2,
+ /obj/item/disk/design_disk/bepis = 2,
/obj/item/camera_bug = 1
)
rpg_title = "Thaumaturgist"
diff --git a/code/modules/mapfluff/ruins/lavaland_ruin_code.dm b/code/modules/mapfluff/ruins/lavaland_ruin_code.dm
index be1e9ea9011..e622bee1b48 100644
--- a/code/modules/mapfluff/ruins/lavaland_ruin_code.dm
+++ b/code/modules/mapfluff/ruins/lavaland_ruin_code.dm
@@ -1,15 +1,13 @@
//If you're looking for spawners like ash walker eggs, check ghost_role_spawners.dm
///Wizard tower item
-/obj/item/disk/design_disk/adv/knight_gear
+/obj/item/disk/design_disk/knight_gear
name = "Magic Disk of Smithing"
-/obj/item/disk/design_disk/adv/knight_gear/Initialize(mapload)
+/obj/item/disk/design_disk/knight_gear/Initialize(mapload)
. = ..()
- var/datum/design/knight_armour/A = new
- var/datum/design/knight_helmet/H = new
- blueprints[1] = A
- blueprints[2] = H
+ blueprints += new /datum/design/knight_armour
+ blueprints += new /datum/design/knight_helmet
//Free Golems
@@ -17,12 +15,10 @@
name = "Golem Creation Disk"
desc = "A gift from the Liberator."
icon_state = "datadisk1"
- max_blueprints = 1
/obj/item/disk/design_disk/golem_shell/Initialize(mapload)
. = ..()
- var/datum/design/golem_shell/G = new
- blueprints[1] = G
+ blueprints += new /datum/design/golem_shell
/datum/design/golem_shell
name = "Golem Shell Construction"
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/clericsden.dm b/code/modules/mapfluff/ruins/spaceruin_code/clericsden.dm
index 5f0e8f43803..2ea63245661 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/clericsden.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/clericsden.dm
@@ -1,13 +1,12 @@
/////////// cleric's den items.
//Primary reward: the cleric's mace design disk.
-/obj/item/disk/design_disk/adv/cleric_mace
+/obj/item/disk/design_disk/cleric_mace
name = "Enshrined Disc of Smiting"
-/obj/item/disk/design_disk/adv/cleric_mace/Initialize(mapload)
+/obj/item/disk/design_disk/cleric_mace/Initialize(mapload)
. = ..()
- var/datum/design/cleric_mace/M = new
- blueprints[1] = M
+ blueprints += new /datum/design/cleric_mace
/obj/item/paper/fluff/ruins/clericsden/contact
default_raw_text = "Father Aurellion, the ritual is complete, and soon our brothers at the bastion will see the error of our ways. After all, a god of clockwork or blood? Preposterous. Only the TRUE GOD should have so much power. Signed, Father Odivallus."
diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm
index f11d8bf75fe..2ff38c371f0 100644
--- a/code/modules/mining/lavaland/tendril_loot.dm
+++ b/code/modules/mining/lavaland/tendril_loot.dm
@@ -9,7 +9,7 @@
/obj/item/disk/design_disk/modkit_disc/Initialize(mapload)
. = ..()
- blueprints[1] = new modkit_design
+ blueprints += new modkit_design
/obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe
name = "Offensive Mining Explosion Mod Disk"
diff --git a/code/modules/research/bepis.dm b/code/modules/research/bepis.dm
index d3e901a48b5..ffb54a8320f 100644
--- a/code/modules/research/bepis.dm
+++ b/code/modules/research/bepis.dm
@@ -268,7 +268,7 @@
if((gauss_real >= gauss_major)) //Major Success.
if(SSresearch.techweb_nodes_experimental.len > 0)
say("Experiment concluded with major success. New technology node discovered on technology disc.")
- new /obj/item/disk/tech_disk/major(dropturf,1)
+ new /obj/item/disk/design_disk/bepis/remove_tech(dropturf,1)
return
say("Expended all available experimental technology nodes. Resorting to minor rewards.")
if(gauss_real >= gauss_minor) //Minor Success.
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 09a69a0cd68..0722ca9ab5c 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -99,19 +99,57 @@ other types of metals and chemistry for reagents).
name = "Component Design Disk"
desc = "A disk for storing device design data for construction in lathes."
icon_state = "datadisk1"
- custom_materials = list(/datum/material/iron =300, /datum/material/glass =100)
+ custom_materials = list(/datum/material/iron = 300, /datum/material/glass = 100)
+
+ ///List of all `/datum/design` stored on the disk.
var/list/blueprints = list()
- var/max_blueprints = 1
/obj/item/disk/design_disk/Initialize(mapload)
. = ..()
- pixel_x = base_pixel_x + rand(-5, 5)
- pixel_y = base_pixel_y + rand(-5, 5)
- for(var/i in 1 to max_blueprints)
- blueprints += null
+ if(mapload)
+ pixel_x = base_pixel_x + rand(-5, 5)
+ pixel_y = base_pixel_y + rand(-5, 5)
+
+/**
+ * Used for special interactions with a techweb when uploading the designs.
+ * Args:
+ * - stored_research - The techweb that's storing us.
+ */
+/obj/item/disk/design_disk/proc/on_upload(datum/techweb/stored_research)
+ return
+
+/obj/item/disk/design_disk/bepis
+ name = "Old experimental technology disk"
+ desc = "A disk containing some long-forgotten technology from a past age. You hope it still works after all these years. Upload the disk to an R&D Console to redeem the tech."
+ icon_state = "rndmajordisk"
+
+ ///The bepis node we have the design id's of
+ var/datum/techweb_node/bepis_node
+
+/obj/item/disk/design_disk/bepis/Initialize(mapload)
+ . = ..()
+ var/bepis_id = pick(SSresearch.techweb_nodes_experimental)
+ bepis_node = (SSresearch.techweb_node_by_id(bepis_id))
+
+ for(var/entry in bepis_node.design_ids)
+ var/datum/design/new_entry = SSresearch.techweb_design_by_id(entry)
+ blueprints += new_entry
+
+///Unhide and research our node so we show up in the R&D console.
+/obj/item/disk/design_disk/bepis/on_upload(datum/techweb/stored_research)
+ stored_research.hidden_nodes -= bepis_node.id
+ stored_research.research_node(bepis_node, force = TRUE, auto_adjust_cost = FALSE)
+
+/**
+ * Subtype of Bepis tech disk
+ * Removes the tech disk that's held on it from the experimental node list, making them not show up in future disks.
+ */
+/obj/item/disk/design_disk/bepis/remove_tech
+ name = "Reformatted technology disk"
+ desc = "A disk containing a new, completed tech from the B.E.P.I.S. Upload the disk to an R&D Console to redeem the tech."
+
+/obj/item/disk/design_disk/bepis/remove_tech/Initialize(mapload)
+ . = ..()
+ SSresearch.techweb_nodes_experimental -= bepis_node.id
+ log_research("[bepis_node.display_name] has been removed from experimental nodes through the BEPIS techweb's \"remove tech\" feature.")
-/obj/item/disk/design_disk/adv
- name = "Advanced Component Design Disk"
- desc = "A disk for storing device design data for construction in lathes. This one has extra storage space."
- custom_materials = list(/datum/material/iron =300, /datum/material/glass = 100, /datum/material/silver = 50)
- max_blueprints = 5
diff --git a/code/modules/research/designs/electronics_designs.dm b/code/modules/research/designs/electronics_designs.dm
index 9bf02b2c4a5..c4922b092a6 100644
--- a/code/modules/research/designs/electronics_designs.dm
+++ b/code/modules/research/designs/electronics_designs.dm
@@ -42,30 +42,6 @@
////////////////////////////////////////
//////////Disk Construction Disks///////
////////////////////////////////////////
-/datum/design/design_disk
- name = "Design Storage Disk"
- desc = "Produce additional disks for storing device designs."
- id = "design_disk"
- build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE
- materials = list(/datum/material/iron = 300, /datum/material/glass = 100)
- build_path = /obj/item/disk/design_disk
- category = list(
- RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE
- )
- departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
-
-/datum/design/design_disk_adv
- name = "Advanced Design Storage Disk"
- desc = "Produce additional disks for storing device designs."
- id = "design_disk_adv"
- build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = 300, /datum/material/glass = 100, /datum/material/silver=50)
- build_path = /obj/item/disk/design_disk/adv
- category = list(
- RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE
- )
- departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
-
/datum/design/tech_disk
name = "Technology Data Storage Disk"
desc = "Produce additional disks for storing technology data."
diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm
index 53b56265ff4..d38b7a42d64 100644
--- a/code/modules/research/designs/limbgrower_designs.dm
+++ b/code/modules/research/designs/limbgrower_designs.dm
@@ -224,7 +224,6 @@
/obj/item/disk/design_disk/limbs/Initialize(mapload)
. = ..()
- max_blueprints = limb_designs.len
for(var/design in limb_designs)
var/datum/design/new_design = design
blueprints += new new_design
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index c6a330efd22..449a7078537 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -184,16 +184,9 @@ Nothing else in the console has ID requirements.
"stored_research" = t_disk.stored_research.researched_nodes,
)
if (d_disk)
- data["d_disk"] = list (
- "max_blueprints" = d_disk.max_blueprints,
- "blueprints" = list(),
- )
- for (var/i in 1 to d_disk.max_blueprints)
- if (d_disk.blueprints[i])
- var/datum/design/D = d_disk.blueprints[i]
- data["d_disk"]["blueprints"] += D.id
- else
- data["d_disk"]["blueprints"] += null
+ data["d_disk"] = list("blueprints" = list())
+ for (var/datum/design/D in d_disk.blueprints)
+ data["d_disk"]["blueprints"] += D.id
// Serialize all nodes to display
@@ -298,7 +291,7 @@ Nothing else in the console has ID requirements.
.["static_data"] = list(
"node_cache" = node_cache,
"design_cache" = design_cache,
- "id_cache" = flat_id_cache
+ "id_cache" = flat_id_cache,
)
/obj/machinery/computer/rdconsole/ui_act(action, list/params)
@@ -329,55 +322,6 @@ Nothing else in the console has ID requirements.
if ("ejectDisk")
eject_disk(params["type"])
return TRUE
- if ("writeDesign")
- if(QDELETED(d_disk))
- say("No Design Disk Inserted!")
- return TRUE
- var/slot = text2num(params["slot"])
- var/design_id = params["selectedDesign"]
- if(!stored_research.researched_designs.Find(design_id))
- stack_trace("ID did not map to a researched datum [design_id]")
- return
- var/datum/design/design = SSresearch.techweb_design_by_id(design_id)
- if(design)
- if(design.build_type & (AUTOLATHE|PROTOLATHE|AWAY_LATHE)) // Specifically excludes circuit imprinter and mechfab
- if(design.autolathe_exportable && !design.reagents_list.len)
- design.build_type |= AUTOLATHE
- design.category |= RND_CATEGORY_IMPORTED
- d_disk.blueprints[slot] = design
- return TRUE
- if ("uploadDesignSlot")
- if(QDELETED(d_disk))
- say("No design disk found.")
- return TRUE
- var/n = text2num(params["slot"])
- stored_research.add_design(d_disk.blueprints[n], TRUE)
- return TRUE
- if ("clearDesignSlot")
- if(QDELETED(d_disk))
- say("No design disk inserted!")
- return TRUE
- var/n = text2num(params["slot"])
- var/datum/design/D = d_disk.blueprints[n]
- say("Wiping design [D.name] from design disk.")
- d_disk.blueprints[n] = null
- return TRUE
- if ("eraseDisk")
- if (params["type"] == RND_DESIGN_DISK)
- if(QDELETED(d_disk))
- say("No design disk inserted!")
- return TRUE
- say("Wiping design disk.")
- for(var/i in 1 to d_disk.max_blueprints)
- d_disk.blueprints[i] = null
- if (params["type"] == RND_TECH_DISK)
- if(QDELETED(t_disk))
- say("No tech disk inserted!")
- return TRUE
- qdel(t_disk.stored_research)
- t_disk.stored_research = new
- say("Wiping technology disk.")
- return TRUE
if ("uploadDisk")
if (params["type"] == RND_DESIGN_DISK)
if(QDELETED(d_disk))
@@ -386,6 +330,9 @@ Nothing else in the console has ID requirements.
for(var/D in d_disk.blueprints)
if(D)
stored_research.add_design(D, TRUE)
+ say("Uploading blueprints from disk.")
+ d_disk.on_upload(stored_research)
+ return TRUE
if (params["type"] == RND_TECH_DISK)
if (QDELETED(t_disk))
say("No tech disk inserted!")
@@ -393,6 +340,7 @@ Nothing else in the console has ID requirements.
say("Uploading technology disk.")
t_disk.stored_research.copy_research_to(stored_research)
return TRUE
+ //Tech disk-only action.
if ("loadTech")
if(QDELETED(t_disk))
say("No tech disk inserted!")
diff --git a/code/modules/research/research_disk.dm b/code/modules/research/research_disk.dm
index 1d88fe78494..16f0ed7e646 100644
--- a/code/modules/research/research_disk.dm
+++ b/code/modules/research/research_disk.dm
@@ -21,23 +21,3 @@
/obj/item/disk/tech_disk/debug/Initialize(mapload)
stored_research = SSresearch.admin_tech
return ..()
-
-/obj/item/disk/tech_disk/major
- name = "Reformatted technology disk"
- desc = "A disk containing a new, completed tech from the B.E.P.I.S. Upload the disk to an R&D Console to redeem the tech."
- icon_state = "rndmajordisk"
- custom_materials = list(/datum/material/iron=300, /datum/material/glass=100)
-
-/obj/item/disk/tech_disk/major/Initialize(mapload)
- stored_research = new /datum/techweb/bepis
- return ..()
-
-/obj/item/disk/tech_disk/spaceloot
- name = "Old experimental technology disk"
- desc = "A disk containing some long-forgotten technology from a past age. You hope it still works after all these years. Upload the disk to an R&D Console to redeem the tech."
- icon_state = "rndmajordisk"
- custom_materials = list(/datum/material/iron=300, /datum/material/glass=100)
-
-/obj/item/disk/tech_disk/spaceloot/Initialize(mapload)
- stored_research = new /datum/techweb/bepis(remove_tech = FALSE)
- return ..()
diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm
index 6b40449fe7b..a4be5367abb 100644
--- a/code/modules/research/techweb/_techweb.dm
+++ b/code/modules/research/techweb/_techweb.dm
@@ -143,12 +143,11 @@
l[i] = amount
modify_point_list(l)
-/datum/techweb/proc/copy_research_to(datum/techweb/receiver, unlock_hidden = TRUE) //Adds any missing research to theirs.
- if(unlock_hidden)
- for(var/i in receiver.hidden_nodes)
- CHECK_TICK
- if(available_nodes[i] || researched_nodes[i] || visible_nodes[i])
- receiver.hidden_nodes -= i //We can see it so let them see it too.
+/datum/techweb/proc/copy_research_to(datum/techweb/receiver) //Adds any missing research to theirs.
+ for(var/i in receiver.hidden_nodes)
+ CHECK_TICK
+ if(available_nodes[i] || researched_nodes[i] || visible_nodes[i])
+ receiver.hidden_nodes -= i //We can see it so let them see it too.
for(var/i in researched_nodes)
CHECK_TICK
receiver.research_node_id(i, TRUE, FALSE, FALSE)
@@ -217,6 +216,8 @@
else
researched_designs[design.id] = TRUE
+ hidden_nodes -= design.id
+
return TRUE
/datum/techweb/proc/remove_design_by_id(id, custom = FALSE)
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index e1a6299448c..53e45f51889 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -38,7 +38,6 @@
"conveyor_belt",
"conveyor_switch",
"custom_vendor_refill",
- "design_disk",
"destructive_analyzer",
"destructive_scanner",
"desttagger",
diff --git a/code/modules/research/techweb/techweb_types.dm b/code/modules/research/techweb/techweb_types.dm
index 32743b2b068..1f226793624 100644
--- a/code/modules/research/techweb/techweb_types.dm
+++ b/code/modules/research/techweb/techweb_types.dm
@@ -28,25 +28,6 @@
research_points[i] = INFINITY
hidden_nodes = list()
-/**
- * Techweb made through BEPIS machine
- * Should only contain 1 BEPIS tech at random.
- */
-/datum/techweb/bepis
- id = "EXPERIMENTAL"
- organization = "Nanotrasen R&D"
-
-/datum/techweb/bepis/New(remove_tech = TRUE)
- . = ..()
- var/bepis_id = pick(SSresearch.techweb_nodes_experimental) //To add a new tech to the BEPIS, add the ID to this pick list.
- var/datum/techweb_node/BN = (SSresearch.techweb_node_by_id(bepis_id))
- hidden_nodes -= BN.id //Has to be removed from hidden nodes
- research_node(BN, TRUE, FALSE, FALSE)
- update_node_status(BN)
- if(remove_tech)
- SSresearch.techweb_nodes_experimental -= bepis_id
- log_research("[BN.display_name] has been removed from experimental nodes through the BEPIS techweb's \"remove tech\" feature.")
-
/**
* Techweb made through tech disks
* Contains nothing, subtype mostly meant to make it easy for admins to see.
diff --git a/tgui/packages/tgui/interfaces/Techweb.js b/tgui/packages/tgui/interfaces/Techweb.js
index 34ce108ac7f..7b9d0814e6e 100644
--- a/tgui/packages/tgui/interfaces/Techweb.js
+++ b/tgui/packages/tgui/interfaces/Techweb.js
@@ -1,7 +1,6 @@
-import { filter, map, sortBy } from 'common/collections';
-import { flow } from 'common/fp';
+import { map, sortBy } from 'common/collections';
import { useBackend, useLocalState } from '../backend';
-import { Button, Section, Modal, Dropdown, Tabs, Box, Input, Flex, ProgressBar, Collapsible, Icon, Divider } from '../components';
+import { Button, Section, Modal, Tabs, Box, Input, Flex, ProgressBar, Collapsible, Icon, Divider } from '../components';
import { Window, NtosWindow } from '../layouts';
import { Experiment } from './ExperimentConfigure';
@@ -352,11 +351,6 @@ const TechwebDiskMenu = (props, context) => {
onClick={() => act('uploadDisk', { type: diskType })}>
Disk → Web
-