mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-27 14:08:44 +01:00
Xenobotany machines can be constructed (#19342)
* required * fixes for contents * prevent deconstruction while activated * node already existed * part stuff * corrected nodes * oops
This commit is contained in:
@@ -5,6 +5,16 @@
|
||||
icon_state = "sextractor"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
circuit = /obj/item/circuitboard/botany_seedextractor
|
||||
|
||||
/obj/machinery/seed_extractor/Initialize(mapload)
|
||||
. = ..()
|
||||
default_apply_parts()
|
||||
|
||||
/* Currently part upgrades do nothing
|
||||
/obj/machinery/seed_extractor/RefreshParts()
|
||||
..()
|
||||
*/
|
||||
|
||||
/obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
|
||||
@@ -32,20 +42,29 @@
|
||||
to_chat(user, "[O] doesn't seem to have any usable seeds inside it.")
|
||||
|
||||
qdel(O)
|
||||
return
|
||||
|
||||
//Grass.
|
||||
else if(istype(O, /obj/item/stack/tile/grass))
|
||||
if(istype(O, /obj/item/stack/tile/grass))
|
||||
var/obj/item/stack/tile/grass/S = O
|
||||
if(S.use(1))
|
||||
to_chat(user, span_notice("You extract some seeds from the grass tile."))
|
||||
new /obj/item/seeds/grassseed(loc)
|
||||
return
|
||||
|
||||
else if(istype(O, /obj/item/fossil/plant)) // Fossils
|
||||
// Fossils
|
||||
if(istype(O, /obj/item/fossil/plant))
|
||||
var/obj/item/seeds/random/R = new(get_turf(src))
|
||||
to_chat(user, "\The [src] pulverizes \the [O] and spits out \the [R].")
|
||||
qdel(O)
|
||||
|
||||
else if(default_unfasten_wrench(user, O, 20))
|
||||
return
|
||||
|
||||
return
|
||||
// Deconstruction
|
||||
if(default_deconstruction_screwdriver(user, O))
|
||||
return
|
||||
if(default_deconstruction_crowbar(user, O))
|
||||
return
|
||||
if(default_part_replacement(user, O))
|
||||
return
|
||||
if(default_unfasten_wrench(user, O, 20))
|
||||
return
|
||||
|
||||
@@ -384,3 +384,30 @@
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/capacitor = 1,
|
||||
/obj/item/stock_parts/motor = 1)
|
||||
|
||||
/obj/item/circuitboard/botany_extractor
|
||||
name = T_BOARD("lysis-isolation centrifuge")
|
||||
build_path = /obj/machinery/botany/extractor
|
||||
board_type = new /datum/frame/frame_types/machine
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/motor = 2,
|
||||
/obj/item/stock_parts/scanning_module = 2,
|
||||
/obj/item/stock_parts/gear = 3)
|
||||
|
||||
/obj/item/circuitboard/botany_editor
|
||||
name = T_BOARD("bioballistic delivery system")
|
||||
build_path = /obj/machinery/botany/editor
|
||||
board_type = new /datum/frame/frame_types/machine
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/capacitor = 2,
|
||||
/obj/item/stock_parts/scanning_module = 2,
|
||||
/obj/item/stock_parts/manipulator = 2)
|
||||
|
||||
/obj/item/circuitboard/botany_seedextractor
|
||||
name = T_BOARD("seed extractor")
|
||||
build_path = /obj/machinery/seed_extractor
|
||||
board_type = new /datum/frame/frame_types/machine
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/motor = 1,
|
||||
/obj/item/stock_parts/manipulator = 2,
|
||||
/obj/item/stock_parts/console_screen = 1)
|
||||
|
||||
@@ -53,6 +53,22 @@
|
||||
var/failed_task = 0
|
||||
var/disk_needs_genes = 0
|
||||
|
||||
/obj/machinery/botany/Initialize(mapload)
|
||||
. = ..()
|
||||
default_apply_parts()
|
||||
|
||||
/* Currently part upgrades do nothing
|
||||
/obj/machinery/botany/RefreshParts()
|
||||
..()
|
||||
*/
|
||||
|
||||
/obj/machinery/botany/Destroy()
|
||||
if(seed)
|
||||
seed.forceMove(get_turf(src))
|
||||
if(loaded_disk)
|
||||
loaded_disk.forceMove(get_turf(src))
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/botany/process()
|
||||
|
||||
..()
|
||||
@@ -78,7 +94,7 @@
|
||||
if(eject_disk)
|
||||
eject_disk = 0
|
||||
if(loaded_disk)
|
||||
loaded_disk.loc = get_turf(src)
|
||||
loaded_disk.forceMove(get_turf(src))
|
||||
visible_message(span_filter_notice("[icon2html(src,viewers(src))] [src] beeps and spits out [loaded_disk]."))
|
||||
loaded_disk = null
|
||||
|
||||
@@ -92,7 +108,7 @@
|
||||
to_chat(user, span_filter_notice("That seed is not compatible with our genetics technology."))
|
||||
else
|
||||
user.drop_from_inventory(W)
|
||||
W.loc = src
|
||||
W.forceMove(src)
|
||||
seed = W
|
||||
to_chat(user, span_filter_notice("You load [W] into [src]."))
|
||||
return
|
||||
@@ -104,8 +120,11 @@
|
||||
to_chat(user, span_notice("You [anchored ? "un" : ""]secure \the [src]."))
|
||||
anchored = !anchored
|
||||
return
|
||||
// if(default_deconstruction_crowbar(user, W)) //No circuit boards to give.
|
||||
// return
|
||||
if(!active)
|
||||
if(default_deconstruction_crowbar(user, W))
|
||||
return
|
||||
if(default_part_replacement(user, W))
|
||||
return
|
||||
if(istype(W,/obj/item/disk/botany))
|
||||
if(loaded_disk)
|
||||
to_chat(user, span_filter_notice("There is already a data disk loaded."))
|
||||
@@ -123,7 +142,7 @@
|
||||
return
|
||||
|
||||
user.drop_from_inventory(W)
|
||||
W.loc = src
|
||||
W.forceMove(src)
|
||||
loaded_disk = W
|
||||
to_chat(user, span_filter_notice("You load [W] into [src]."))
|
||||
|
||||
@@ -137,6 +156,7 @@
|
||||
|
||||
var/datum/seed/genetics // Currently scanned seed genetic structure.
|
||||
var/degradation = 0 // Increments with each scan, stops allowing gene mods after a certain point.
|
||||
circuit = /obj/item/circuitboard/botany_extractor
|
||||
|
||||
/obj/machinery/botany/extractor/tgui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
@@ -265,6 +285,7 @@
|
||||
name = "bioballistic delivery system"
|
||||
icon_state = "traitgun"
|
||||
disk_needs_genes = 1
|
||||
circuit = /obj/item/circuitboard/botany_editor
|
||||
|
||||
/obj/machinery/botany/editor/tgui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
|
||||
@@ -197,6 +197,34 @@
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
|
||||
|
||||
// Xenobotany
|
||||
/datum/design_techweb/board/botany_extractor
|
||||
SET_CIRCUIT_DESIGN_NAMEDESC("lysis-isolation centrifuge")
|
||||
id = "botany_extractor"
|
||||
build_path = /obj/item/circuitboard/botany_extractor
|
||||
category = list(
|
||||
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BOTANY
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
|
||||
|
||||
/datum/design_techweb/board/botany_editor
|
||||
SET_CIRCUIT_DESIGN_NAMEDESC("bioballistic delivery system")
|
||||
id = "botany_editor"
|
||||
build_path = /obj/item/circuitboard/botany_editor
|
||||
category = list(
|
||||
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BOTANY
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
|
||||
|
||||
/datum/design_techweb/board/botany_seedextractor
|
||||
SET_CIRCUIT_DESIGN_NAMEDESC("seed extractor")
|
||||
id = "seed_extractor"
|
||||
build_path = /obj/item/circuitboard/botany_seedextractor
|
||||
category = list(
|
||||
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BOTANY
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
|
||||
|
||||
/datum/design_techweb/board/destructive_analyzer
|
||||
SET_CIRCUIT_DESIGN_NAMEDESC("destructive analyzer")
|
||||
id = "destructive_analyzer"
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
description = "Essential tools for maintaining onboard gardens, supporting plant growth in the unique environment of the space station."
|
||||
design_ids = list(
|
||||
"plant_analyzer",
|
||||
// "seed_extractor",
|
||||
"seed_extractor",
|
||||
// "watering_can",
|
||||
"spade",
|
||||
// "cultivator",
|
||||
@@ -115,6 +115,8 @@
|
||||
design_ids = list(
|
||||
"flora_gun",
|
||||
"disk_botany",
|
||||
"botany_extractor",
|
||||
"botany_editor",
|
||||
// "gene_shears",
|
||||
)
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
|
||||
|
||||
Reference in New Issue
Block a user