From 6db06b1eb87c8ee8dbb2f64e940cd4a9bfa4d319 Mon Sep 17 00:00:00 2001 From: Migratingcocofruit <69551563+Migratingcocofruit@users.noreply.github.com> Date: Fri, 28 Jun 2024 21:57:32 +0300 Subject: [PATCH] Plant DNA Manipulator update (#25370) * WIP * changes * more changes * chnges * update * changes * I suck at TGUI if you see this please help * UI a bit better still figuring it out * More things * Eject Select, Select empty and autoselect empty implemented. can insert replaace stat/all stats from disk list * Ready to make a PR Disks can be loaded into the machine from boxed, an empty disk is automatically selected once an extraction is performed if one is available. All insert and replace buttons moved to the disk lists. Window size and scaling changed to fit LSD properly without wrapping. * minor ui tweak, fixes core stat disk being auto selected unintentionally. Loading via box now makes a sound. * rebuild TGUI * rebuild tgui * implemented RO button/indicator in UI, Added null checks for can_add * slightly shrink some buttons rebuild TGUI * Rebuild TGUI * use istype for type checks * removes the disk compartmentalizer from maps * removes Disk Compartmentalizer * actually removes the disk compartmentalizer * rebuild tgui and remove all remaining disk compartmentalizer sprites * fixes a message being output to world instead of the user * auto doc and readability improvements. * some fixes adjusts display name to display the new doubled percentages. Stored seed no longer counts as a disk for the purpose of reaching the disk capacity. * Rebuild TGUI --- .../LavaRuins/lavaland_surface_seed_vault.dmm | 3 - .../SpaceRuins/syndie_space_base.dmm | 1 - _maps/map_files/stations/boxstation.dmm | 1 - _maps/map_files/stations/cerestation.dmm | 3 - _maps/map_files/stations/deltastation.dmm | 1 - _maps/map_files/stations/metastation.dmm | 1 - code/game/machinery/constructable_frame.dm | 1 - .../kitchen_machinery/smartfridge.dm | 33 -- code/modules/hydroponics/gene_modder.dm | 154 +++++++-- code/modules/hydroponics/plant_genes.dm | 10 +- icons/obj/vending.dmi | Bin 99944 -> 105633 bytes tgui/packages/tgui/interfaces/GeneModder.js | 292 +++++++++++++++--- .../tgui/styles/interfaces/GeneModder.scss | 20 ++ tgui/packages/tgui/styles/main.scss | 1 + tgui/public/tgui.bundle.css | 2 +- tgui/public/tgui.bundle.js | 34 +- 16 files changed, 432 insertions(+), 125 deletions(-) create mode 100644 tgui/packages/tgui/styles/interfaces/GeneModder.scss diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index ef013cb296d..91177bcb4eb 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -379,9 +379,6 @@ /area/lavaland/surface/outdoors) "Nt" = ( /obj/structure/table/wood, -/obj/machinery/smartfridge/disks{ - pixel_y = 2 - }, /turf/simulated/floor/plasteel/freezer, /area/ruin/powered/seedvault) "OL" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm index 5fb3dab4af2..29702b1da15 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm @@ -2889,7 +2889,6 @@ /area/ruin/unpowered/syndicate_space_base/atmos) "pF" = ( /obj/structure/table, -/obj/machinery/smartfridge/disks, /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index f53b12ba453..995318d5eae 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -19036,7 +19036,6 @@ dir = 1 }, /obj/structure/table, -/obj/machinery/smartfridge/disks, /turf/simulated/floor/plasteel{ icon_state = "dark" }, diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 89db5db5831..0e5293c8909 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -72669,9 +72669,6 @@ /area/station/science/robotics) "qhu" = ( /obj/structure/table, -/obj/machinery/smartfridge/disks{ - pixel_y = 5 - }, /turf/simulated/floor/plasteel{ icon_state = "darkgreenfull" }, diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index 7e1a997ab17..40a6d8bf900 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -72290,7 +72290,6 @@ pixel_y = 28 }, /obj/effect/turf_decal/delivery/hollow, -/obj/machinery/smartfridge/disks, /turf/simulated/floor/plasteel, /area/station/service/hydroponics) "ivD" = ( diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index 767489bd9c6..49194c0e259 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -58969,7 +58969,6 @@ /area/station/ai_monitored/storage/eva) "jHO" = ( /obj/structure/table/glass, -/obj/machinery/smartfridge/disks, /obj/machinery/camera{ c_tag = "Hydroponics"; dir = 6 diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index af3b0d0eeda..5c879c2a0b2 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -562,7 +562,6 @@ to destroy them and players will be able to make replacements. "Smart Chemical Storage" = /obj/machinery/smartfridge/secure/chemistry, "Smart Virus Storage" = /obj/machinery/smartfridge/secure/chemistry/virology, "Drink Showcase" = /obj/machinery/smartfridge/drinks, - "Disk Compartmentalizer" = /obj/machinery/smartfridge/disks, "Identification Card Compartmentalizer" = /obj/machinery/smartfridge/id, "Circuit Board Storage" = /obj/machinery/smartfridge/secure/circuits, "AI Laws Storage" = /obj/machinery/smartfridge/secure/circuits/aiupload) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 34b8739178e..6ea26c47751 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -682,39 +682,6 @@ /obj/machinery/smartfridge/secure/chemistry/preloaded/syndicate/Initialize(mapload) . = ..() req_access = list(ACCESS_SYNDICATE) - -/** - * # Disk Compartmentalizer - * - * Disk variant of the [Smart Fridge][/obj/machinery/smartfridge]. - */ -/obj/machinery/smartfridge/disks - name = "disk compartmentalizer" - desc = "A machine capable of storing a variety of disks. Denoted by most as the DSU (disk storage unit)." - icon_state = "disktoaster" - icon_lightmask = "disktoaster" - pass_flags = PASSTABLE - visible_contents = TRUE - board_type = /obj/machinery/smartfridge/disks - -/obj/machinery/smartfridge/disks/Initialize(mapload) - . = ..() - accepted_items_typecache = typecacheof(list( - /obj/item/disk, - )) - -/obj/machinery/smartfridge/disks/update_fridge_contents() - switch(length(contents)) - if(0) - fill_level = null - if(1) - fill_level = 1 - if(2) - fill_level = 2 - if(3) - fill_level = 3 - if(4 to INFINITY) - fill_level = 4 /obj/machinery/smartfridge/id name = "identification card compartmentalizer" desc = "A machine capable of storing identification cards and PDAs. It's great for lost and terminated cards." diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index 2662b6e68cd..147ba615edb 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -6,22 +6,36 @@ icon_state = "dnamod" density = TRUE anchored = TRUE - + /// the seed stored in the machine var/obj/item/seeds/seed + /// the disk in use var/obj/item/disk/plantgene/disk - + /// list of the seed's trait genes var/list/core_genes = list() + /// list of the seed's trait genes var/list/reagent_genes = list() + /// list of the seed's trait genes var/list/trait_genes = list() - + /// disk capacity + var/disk_capacity = 100 + /// gene targeted for operation var/datum/plant_gene/target + /// maximum potency that can be put on a disk var/max_potency = 50 // See RefreshParts() for how these work + /// maximum yield that can be put on a disk var/max_yield = 2 + /// minimum production that can be put on a disk var/min_production = 12 + /// maximum endurance that can be put on a disk var/max_endurance = 10 // IMPT: ALSO AFFECTS LIFESPAN + /// minimum weed growth chance that can be put on a disk var/min_weed_chance = 67 + /// minimum weed growth rate that can be put on a disk var/min_weed_rate = 10 + /// amount of seeds needed to make a core stat disk var/seeds_for_bulk_core = 5 + /// index of disk in use in the content list + var/disk_index = 0 /obj/machinery/plantgenes/Initialize(mapload) . = ..() @@ -130,7 +144,7 @@ else if(istype(I, /obj/item/unsorted_seeds)) to_chat(user, "You need to sort [I] first!") return ..() - else if(istype(I, /obj/item/disk/plantgene)) + else if(istype(I, /obj/item/disk/plantgene) || istype(I, /obj/item/storage/box)) add_disk(I, user) else return ..() @@ -146,13 +160,31 @@ ui_interact(user) /obj/machinery/plantgenes/proc/add_disk(obj/item/disk/plantgene/new_disk, mob/user) - if(disk) - to_chat(user, "A data disk is already loaded into the machine!") + if(length(contents) - (seed ? 1 : 0) >= disk_capacity) + to_chat(user, "[src] cannot hold any more disks!") + return + if(istype(new_disk, /obj/item/storage/box)) + var/has_disks = FALSE + for(var/obj/item/disk/plantgene/D in new_disk.contents) + if(length(contents)- (seed ? 1 : 0) >= disk_capacity) + to_chat(user, "You fill [src] with disks.") + break + has_disks = TRUE + D.forceMove(src) + if(!disk) + disk = D + if(has_disks) + playsound(loc, 'sound/items/handling/cardboardbox_drop.ogg', 50) + to_chat(user, "You load [src] from [new_disk].") + else + to_chat(user, "[new_disk] contains no disks.") + SStgui.update_uis(src) return if(!user.drop_item()) return - disk = new_disk - disk.forceMove(src) + if(!disk) + disk = new_disk + new_disk.forceMove(src) to_chat(user, "You add [new_disk] to the machine.") ui_interact(user) @@ -244,6 +276,40 @@ data["modal"] = ui_modal_data(src) + var/list/stats = list() + var/list/traits = list() + var/list/reagents = list() + var/empty_disks = 0 + + data["stat_disks"] = list() + data["trait_disks"] = list() + data["reagent_disks"] = list() + + for(var/i in 1 to length(contents)) + if(istype(contents[i], /obj/item/disk/plantgene)) + var/obj/item/disk/plantgene/D = contents[i] + if(!D.gene && !D.is_bulk_core) + empty_disks++ + else if(D.is_bulk_core) + stats.Add(list(list("display_name" = D.ui_name, "index" = i, "stat" = "All", "ready" = D.seeds_needed <= D.seeds_scanned, "read_only" = D.read_only))) + else if(istype(D.gene, /datum/plant_gene/core)) + var/datum/plant_gene/core/C = D.gene + stats.Add(list(list("display_name" = C.name +" "+ num2text(C.value), "index" = i, "stat" = C.name, "read_only" = D.read_only))) + else if(istype(D.gene, /datum/plant_gene/trait)) + var/insertable = D.gene?.can_add(seed) + traits.Add(list(list("display_name" = D.gene.name, "index" = i, "can_insert" = insertable, "read_only" = D.read_only))) + else if(istype(D.gene, /datum/plant_gene/reagent)) + var/datum/plant_gene/reagent/R = D.gene + var/insertable = R?.can_add(seed) + reagents.Add(list(list("display_name" = "[R.name] [num2text(R.rate*200)]%", "index" = i, "can_insert" = insertable, "read_only" = D.read_only))) + if(length(stats)) + data["stat_disks"] = stats + if(length(traits)) + data["trait_disks"] = traits + if(length(reagents)) + data["reagent_disks"] = reagents + data["empty_disks"] = empty_disks + return data /obj/machinery/plantgenes/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) @@ -258,7 +324,12 @@ var/mob/user = ui.user - target = seed?.get_gene(params["id"]) + if(params["id"]) + target = seed?.get_gene(params["id"]) + else if(params["stat"] && params["stat"] != "All") + for(var/datum/plant_gene/core/c_gene in core_genes) + if(c_gene.name == params["stat"]) + target = c_gene switch(action) if("eject_seed") @@ -274,9 +345,10 @@ add_seed(I, user) if("eject_disk") - if(disk) - disk.forceMove(loc) - user.put_in_hands(disk) + var/obj/item/disk/plantgene/D = contents[text2num(params["index"])] + if(D) + D.forceMove(loc) + user.put_in_hands(D) disk = null update_genes() else @@ -312,23 +384,46 @@ ui_modal_boolean(src, action, dat, yes_text = "Extract", no_text = "Cancel", delegate = PROC_REF(gene_extract)) if("bulk_replace_core") + disk_index = text2num(params["index"]) ui_modal_boolean(src, action, "Are you sure you want to replace ALL core genes of the [seed]?" , yes_text = "Replace", no_text = "Cancel", delegate = PROC_REF(bulk_replace_core)) if("replace") - ui_modal_boolean(src, action, "Are you sure you want to replace [target.get_name()] gene with [disk.gene.get_name()]?", yes_text = "Replace", no_text = "Cancel", delegate = PROC_REF(gene_replace)) + disk_index = text2num(params["index"]) + var/obj/item/disk/plantgene/D = contents[text2num(params["index"])] + ui_modal_boolean(src, action, "Are you sure you want to replace [target.get_name()] gene with [D.gene.get_name()]?", yes_text = "Replace", no_text = "Cancel", delegate = PROC_REF(gene_replace)) if("remove") ui_modal_boolean(src, action, "Are you sure you want to remove [target.get_name()] gene from the [seed]" , yes_text = "Remove", no_text = "Cancel", delegate = PROC_REF(gene_remove)) if("insert") - if(!istype(disk.gene, /datum/plant_gene/core) && !disk.is_bulk_core && disk.gene.can_add(seed)) - seed.genes += disk.gene.Copy() - if(istype(disk.gene, /datum/plant_gene/reagent)) + var/obj/item/disk/plantgene/D = contents[text2num(params["index"])] + if(D.gene && (istype(D.gene, /datum/plant_gene/trait) || istype(D.gene, /datum/plant_gene/reagent)) && D.gene.can_add(seed)) + seed.genes += D.gene.Copy() + if(istype(D.gene, /datum/plant_gene/reagent)) seed.reagents_from_genes() update_genes() repaint_seed() - // this doesnt need a modal, its easy enough to just remove the inserted gene + if("select") + disk = contents[text2num(params["index"])] + + if("select_empty_disk") + for(var/obj/item/disk/plantgene/D in contents) + if(!D.gene && !D.is_bulk_core) + disk = D + return + + if("eject_empty_disk") + for(var/obj/item/disk/plantgene/D in contents) + if(!D.gene && !D.is_bulk_core) + D.forceMove(loc) + user.put_in_hands(D) + update_genes() + return + to_chat(user, " No Empty Disks to Eject!") + if("set_read_only") + var/obj/item/disk/plantgene/D = contents[text2num(params["index"])] + D.read_only = !D.read_only /obj/machinery/plantgenes/proc/gene_remove() if(istype(target, /datum/plant_gene/core)) @@ -358,16 +453,22 @@ update_icon(UPDATE_OVERLAYS) update_genes() target = null + //replace with empty disk if possible + for(var/obj/item/disk/plantgene/D in contents) + if(!D.gene && !D.is_bulk_core) + disk = D + return /obj/machinery/plantgenes/proc/gene_replace() - if(!disk?.gene || disk.is_bulk_core) + var/obj/item/disk/plantgene/D = contents[disk_index] + if(!D?.gene || D.is_bulk_core) return if(!istype(target, /datum/plant_gene/core)) return - if(!istype(disk.gene, target.type)) + if(!istype(D.gene, target.type)) return // you can't replace a endurance gene with a weed chance gene, etc seed.genes -= target - var/datum/plant_gene/core/C = disk.gene.Copy() + var/datum/plant_gene/core/C = D.gene.Copy() seed.genes += C C.apply_stat(seed) repaint_seed() @@ -395,15 +496,22 @@ update_genes() target = null + if(disk.seeds_scanned >= disk.seeds_needed) + for(var/obj/item/disk/plantgene/D in contents) + if(!D.gene && (!D.is_bulk_core)) + disk = D + return + /obj/machinery/plantgenes/proc/bulk_replace_core() - if(!disk?.is_bulk_core) + var/obj/item/disk/plantgene/D = contents[disk_index] + if(!D?.is_bulk_core) return - if(disk.seeds_scanned < disk.seeds_needed) + if(D.seeds_scanned < D.seeds_needed) return for(var/datum/plant_gene/gene in seed.genes) if(istype(gene, /datum/plant_gene/core)) seed.genes -= gene - for(var/datum/plant_gene/core/gene in disk.core_genes) + for(var/datum/plant_gene/core/gene in D.core_genes) var/datum/plant_gene/core/C = gene.Copy() seed.genes += C C.apply_stat(seed) diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index c5da67ecc9b..a9c9d9c16a7 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -156,7 +156,10 @@ var/datum/reagent/R = GLOB.chemical_reagents_list[reag_id] if(R && R.id == reagent_id) - name = R.name + if(reagent_id == "holywater") + name = "Holy Water" + else + name = R.name /datum/plant_gene/reagent/New(reag_id = null, reag_rate = 0) ..() @@ -174,6 +177,8 @@ /datum/plant_gene/reagent/can_add(obj/item/seeds/S) if(!..()) return FALSE + if(!S) + return FALSE for(var/datum/plant_gene/reagent/R in S.genes) if(R.reagent_id == reagent_id) return FALSE @@ -195,7 +200,8 @@ /datum/plant_gene/trait/can_add(obj/item/seeds/S) if(!..()) return FALSE - + if(!S) + return FALSE for(var/datum/plant_gene/trait/R in S.genes) if(trait_id && R.trait_id == trait_id) return FALSE diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index ab3204825786c007e50d3c86c8319bb0898aba92..587308aa54aec56fc8642f59368b695741760fb4 100755 GIT binary patch literal 105633 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