// Attempts to offload processing for the spreading plants from the MC. // Processes vines/spreading plants. #define PLANTS_PER_TICK 500 // Cap on number of plant segments processed. #define PLANT_TICK_TIME 75 // Number of ticks between the plant processor cycling. // Debug for testing seed genes. /client/proc/show_plant_genes() set category = "Debug" set name = "Show Plant Genes" set desc = "Prints the round's plant gene masks." if(!holder) return if(!plant_controller || !plant_controller.gene_tag_masks) to_chat(usr, "Gene masks not set.") return for(var/mask in plant_controller.gene_tag_masks) to_chat(usr, "[mask]: [plant_controller.gene_tag_masks[mask]]") var/global/datum/controller/plants/plant_controller // Set in New(). /datum/controller/plants var/plants_per_tick = PLANTS_PER_TICK var/plant_tick_time = PLANT_TICK_TIME var/list/product_descs = list() // Stores generated fruit descs. var/list/plant_queue = list() // All queued plants. var/list/seeds = list() // All seed data stored here. var/list/gene_tag_masks = list() // Gene obfuscation for delicious trial and error goodness. var/list/plant_icon_cache = list() // Stores images of growth, fruits and seeds. var/list/plant_sprites = list() // List of all growth sprites plus number of growth stages. var/list/accessible_plant_sprites = list() // List of all plant sprites allowed to appear in random generation. var/list/plant_product_sprites = list() // List of all harvested product sprites. var/list/accessible_product_sprites = list() // List of all product sprites allowed to appear in random generation. var/processing = 0 // Off/on. var/list/gene_masked_list = list() // Stored gene masked list, rather than recreating it when needed. var/list/plant_gene_datums = list() // Stored datum versions of the gene masked list. /datum/controller/plants/New() if(plant_controller && plant_controller != src) log_debug("Rebuilding plant controller.") qdel(plant_controller) plant_controller = src setup() process() // Predefined/roundstart varieties use a string key to make it // easier to grab the new variety when mutating. Post-roundstart // and mutant varieties use their uid converted to a string instead. // Looks like shit but it's sort of necessary. /datum/controller/plants/proc/setup() // Build the icon lists. for(var/icostate in cached_icon_states('icons/obj/hydroponics_growing.dmi')) var/split = findtext(icostate,"-") if(!split) // invalid icon_state continue var/ikey = copytext(icostate,(split+1)) if(ikey == "dead") // don't count dead icons continue ikey = text2num(ikey) var/base = copytext(icostate,1,split) if(!(plant_sprites[base]) || (plant_sprites[base]