From 5890fa3c4b6f9044b3da31804a54d2a7df4bbd80 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 5 Feb 2015 15:53:20 +1030 Subject: [PATCH] Added plant controller. --- baystation12.dme | 1 + code/controllers/verbs.dm | 5 +- code/game/machinery/seed_extractor.dm | 4 +- code/game/objects/effects/decals/remains.dm | 8 ++ code/global.dm | 6 - code/modules/admin/admin.dm | 12 +- code/modules/hydroponics/grown.dm | 10 +- code/modules/hydroponics/grown_inedible.dm | 2 +- code/modules/hydroponics/seed.dm | 105 +------------- code/modules/hydroponics/seed_controller.dm | 131 ++++++++++++++++++ code/modules/hydroponics/seed_machines.dm | 18 +-- code/modules/hydroponics/seed_packets.dm | 6 +- .../hydroponics/spreading/spreading.dm | 14 +- .../hydroponics/spreading/spreading_growth.dm | 52 ++++--- .../spreading/spreading_response.dm | 10 +- code/modules/hydroponics/trays/tray.dm | 16 +-- code/modules/hydroponics/trays/tray_tools.dm | 4 +- .../hydroponics/trays/tray_update_icons.dm | 10 +- code/modules/organs/organ_alien.dm | 2 +- code/world.dm | 2 +- icons/effects/blood.dmi | Bin 58952 -> 59436 bytes 21 files changed, 241 insertions(+), 177 deletions(-) create mode 100644 code/modules/hydroponics/seed_controller.dm diff --git a/baystation12.dme b/baystation12.dme index 0b0ee50ef9..4bcf9eb187 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -960,6 +960,7 @@ #include "code\modules\hydroponics\grown.dm" #include "code\modules\hydroponics\grown_inedible.dm" #include "code\modules\hydroponics\seed.dm" +#include "code\modules\hydroponics\seed_controller.dm" #include "code\modules\hydroponics\seed_datums.dm" #include "code\modules\hydroponics\seed_machines.dm" #include "code\modules\hydroponics\seed_mobs.dm" diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 263a91769b..3f1a105f53 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -48,7 +48,7 @@ message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.") return -/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Event")) +/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Event","Plants")) set category = "Debug" set name = "Debug Controller" set desc = "Debug the various periodic loop controllers for the game (be careful!)" @@ -106,5 +106,8 @@ if("Event") debug_variables(event_manager) feedback_add_details("admin_verb", "DEvent") + if("Plants") + debug_variables(plant_controller) + feedback_add_details("admin_verb", "DPlants") message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.") return diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index a1132ae08a..4778ac13ea 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -16,10 +16,10 @@ obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob var/datum/seed/new_seed_type if(istype(O, /obj/item/weapon/grown)) var/obj/item/weapon/grown/F = O - new_seed_type = seed_types[F.plantname] + new_seed_type = plant_controller.seeds[F.plantname] else var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O - new_seed_type = seed_types[F.plantname] + new_seed_type = plant_controller.seeds[F.plantname] if(new_seed_type) user << "You extract some seeds from [O]." diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index 8d8328bc9f..dd786ddc0d 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -17,6 +17,14 @@ icon = 'icons/mob/robots.dmi' icon_state = "remainsrobot" +/obj/effect/decal/remains/mouse + desc = "They look like the remains of a small rodent." + icon_state = "mouse" + +/obj/effect/decal/remains/lizard + desc = "They look like the remains of a small rodent." + icon_state = "lizard" + /obj/effect/decal/remains/attack_hand(mob/user as mob) user << "[src] sinks together into a pile of ash." var/turf/simulated/floor/F = get_turf(src) diff --git a/code/global.dm b/code/global.dm index 55c63433cb..c5fd821f79 100644 --- a/code/global.dm +++ b/code/global.dm @@ -254,11 +254,5 @@ var/static/list/scarySounds = list( // Bomb cap! var/max_explosion_range = 14 -// Several cache lists for plants/hydroponics. -var/global/list/seed_types = list() // A list of all seed data. -var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious trial and error goodness. -var/global/list/plant_icon_cache = list() // Stores images of growth, fruits and seeds. - // Announcer intercom, because too much stuff creates an intercom for one message then hard del()s it. var/global/obj/item/device/radio/intercom/global_announcer = new(null) - diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 6030a8be1d..19fd023678 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1001,10 +1001,10 @@ var/global/floorIsLava = 0 if(!check_rights(R_SPAWN)) return - var/seedtype = input("Select a seed type", "Spawn Fruit") as null|anything in seed_types - if(!seedtype || !seed_types[seedtype]) + var/seedtype = input("Select a seed type", "Spawn Fruit") as null|anything in plant_controller.seeds + if(!seedtype || !plant_controller.seeds[seedtype]) return - var/datum/seed/S = seed_types[seedtype] + var/datum/seed/S = plant_controller.seeds[seedtype] S.harvest(usr,0,0,1) /datum/admins/proc/spawn_plant() @@ -1014,10 +1014,10 @@ var/global/floorIsLava = 0 if(!check_rights(R_SPAWN)) return - var/seedtype = input("Select a seed type", "Spawn Plant") as null|anything in seed_types - if(!seedtype || !seed_types[seedtype]) + var/seedtype = input("Select a seed type", "Spawn Plant") as null|anything in plant_controller.seeds + if(!seedtype || !plant_controller.seeds[seedtype]) return - new /obj/effect/plant(get_turf(usr), seed_types[seedtype]) + new /obj/effect/plant(get_turf(usr), plant_controller.seeds[seedtype]) /datum/admins/proc/spawn_atom(var/object as text) set category = "Debug" diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 2b607f0509..ee2c7c66ff 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -24,7 +24,15 @@ if(!plantname) return - seed = seed_types[plantname] + if(!plant_controller) + sleep(250) // ugly hack, should mean roundstart plants are fine. + if(!plant_controller) + world << "Plant controller does not exist and [src] requires it. Aborting." + del(src) + return + + seed = plant_controller.seeds[plantname] + if(!seed) return diff --git a/code/modules/hydroponics/grown_inedible.dm b/code/modules/hydroponics/grown_inedible.dm index 991fecc88b..a0802ee0f1 100644 --- a/code/modules/hydroponics/grown_inedible.dm +++ b/code/modules/hydroponics/grown_inedible.dm @@ -19,7 +19,7 @@ //Handle some post-spawn var stuff. if(planttype) plantname = planttype - var/datum/seed/S = seed_types[plantname] + var/datum/seed/S = plant_controller.seeds[plantname] if(!S || !S.chems) return diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index ee8c9612be..3b99746ad0 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -1,96 +1,3 @@ -// Sprite lists. -var/global/list/plant_sprites = list() // List of all harvested product sprites. -var/global/list/plant_product_sprites = list() // List of all growth sprites plus number of growth stages. - -// Proc for creating a random seed type. -/proc/create_random_seed(var/survive_on_station) - var/datum/seed/seed = new() - seed.randomize() - seed.uid = seed_types.len + 1 - seed.name = "[seed.uid]" - seed_types[seed.name] = seed - - if(survive_on_station) - if(seed.consume_gasses) - seed.consume_gasses["phoron"] = null - seed.consume_gasses["carbon_dioxide"] = null - seed.set_trait(TRAIT_IDEAL_HEAT,293) - seed.set_trait(TRAIT_HEAT_TOLERANCE,20) - seed.set_trait(TRAIT_IDEAL_LIGHT,8) - seed.set_trait(TRAIT_LIGHT_TOLERANCE,5) - seed.set_trait(TRAIT_LOWKPA_TOLERANCE,25) - seed.set_trait(TRAIT_HIGHKPA_TOLERANCE,200) - - return seed - -// 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(!gene_tag_masks) - usr << "Gene masks not set." - return - - for(var/mask in gene_tag_masks) - usr << "[mask]: [gene_tag_masks[mask]]" - -// 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. - -proc/populate_seed_list() - - // Build the icon lists. - for(var/icostate in 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] spread_distance))) - return + if(buckled_mob) + seed.do_sting(buckled_mob,src) + if(seed.get_trait(TRAIT_CARNIVOROUS)) + // Todo: refactor to be less hardcoded. + if(istype(buckled_mob, /mob/living/simple_animal/mouse)) + new /obj/effect/decal/remains/mouse(get_turf(src)) + del(buckled_mob) + buckled_mob = null + return + else if(istype(buckled_mob, /mob/living/simple_animal/lizard)) + new /obj/effect/decal/remains/lizard(get_turf(src)) + del(buckled_mob) + buckled_mob = null + return + seed.do_thorns(buckled_mob,src) + var/failed_growth // Count our neighbors and possible locations for spreading. var/list/possible_locs = list() - var/count = 0 + var/plant_count = 0 for(var/turf/simulated/floor/floor in view(1,src)) if((locate(/obj/effect/dead_plant) in floor.contents) || !floor.Enter(src) || floor.density) continue if(locate(/obj/effect/plant) in floor.contents) - count++ + plant_count++ continue possible_locs |= floor - //Entirely surrounded, try to spawn an actual plant. - if(count>=8) - if(!(locate(/obj/machinery/portable_atmospherics/hydroponics/soil/invisible) in T.contents)) - var/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/new_plant = new(T,seed) - new_plant.age = seed.get_trait(TRAIT_MATURATION)-1 - new_plant.update_icon() - if(growth_type==0) //Vines do not become invisible. - invisibility = INVISIBILITY_MAXIMUM - else - new_plant.layer = 4.1 + if(health == max_health && plant_count >= 4 && !plant) + plant = new(T,seed) + plant.age = seed.get_trait(TRAIT_MATURATION)-1 + plant.update_icon() + if(growth_type==0) //Vines do not become invisible. + invisibility = INVISIBILITY_MAXIMUM + else + plant.layer = layer + 0.1 if(prob(spread_chance)) for(var/i=1,i<=seed.get_trait(TRAIT_YIELD),i++) if(!possible_locs.len) - hibernating = 1 - world << "[src] at [x],[y] is hibernating" + failed_growth = 1 break if(prob(spread_into_adjacent)) var/turf/target_turf = pick(possible_locs) @@ -53,11 +63,14 @@ child.parent = get_root() child.parent.children |= child + if(health != max_health || !failed_growth || (plant_count > 4 && !plant)) + plant_controller.add_plant(src) + /obj/effect/plant/proc/die_off(var/no_remains, var/no_del) // Remove ourselves from our parent. if(parent && parent.children) parent.children -= src - // Kill off any of our children (and add an added bonus, other plants in this area) + // Kill off any of our children (and as an added bonus, other plants in this area) for(var/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/plant in get_turf(src)) plant.dead = 1 plant.update_icon() @@ -66,7 +79,8 @@ for(var/obj/effect/plant/child in children) child.die_off() for(var/obj/effect/plant/neighbor in view(1,src)) - neighbor.hibernating = 0 + plant_controller.add_plant(neighbor) + if(!no_remains && !(locate(/obj/effect/dead_plant) in get_turf(src))) var/obj/effect/dead_plant/plant_remains = new(get_turf(src)) plant_remains.icon = src.icon diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm index 1d30c0bbf2..cb696f34af 100644 --- a/code/modules/hydroponics/spreading/spreading_response.dm +++ b/code/modules/hydroponics/spreading/spreading_response.dm @@ -1,7 +1,6 @@ /obj/effect/plant/HasProximity(var/atom/movable/AM) - hibernating = 0 - + plant_controller.add_plant(src) if(!is_mature() || seed.get_trait(TRAIT_SPREAD) != 2) return @@ -9,16 +8,15 @@ if(!istype(M)) return - if(!buckled_mob && !M.buckled && !M.anchored && prob(round(seed.get_trait(TRAIT_POTENCY)/2))) + if(!buckled_mob && !M.buckled && !M.anchored && (M.small || prob(round(seed.get_trait(TRAIT_POTENCY)/2)))) entangle(M) /obj/effect/plant/attack_hand(mob/user as mob) - hibernating = 0 + plant_controller.add_plant(src) manual_unbuckle(user) /obj/effect/plant/proc/trodden_on(var/mob/living/victim) - hibernating = 0 - world << "Blah." + plant_controller.add_plant(src) if(!is_mature()) return var/mob/living/carbon/human/H = victim diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index 9ec31f6fe8..acb501b850 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -299,7 +299,7 @@ //Remove the seed if something is already planted. if(seed) seed = null - seed = seed_types[pick(list("reishi","nettles","amanita","mushrooms","plumphelmet","towercap","harebells","weeds"))] + seed = plant_controller.seeds[pick(list("reishi","nettles","amanita","mushrooms","plumphelmet","towercap","harebells","weeds"))] if(!seed) return //Weed does not exist, someone fucked up. dead = 0 @@ -329,7 +329,7 @@ // We need to make sure we're not modifying one of the global seed datums. // If it's not in the global list, then no products of the line have been // harvested yet and it's safe to assume it's restricted to this tray. - if(!isnull(seed_types[seed.name])) + if(!isnull(plant_controller.seeds[seed.name])) seed = seed.diverge() seed.mutate(severity,get_turf(src)) @@ -370,8 +370,8 @@ var/previous_plant = seed.display_name var/newseed = seed.get_mutant_variant() - if(newseed in seed_types) - seed = seed_types[newseed] + if(newseed in plant_controller.seeds) + seed = plant_controller.seeds[newseed] else return @@ -528,12 +528,10 @@ return /obj/machinery/portable_atmospherics/hydroponics/attack_tk(mob/user as mob) - - if(harvest) - harvest(user) - - else if(dead) + if(dead) remove_dead(user) + else if(harvest) + harvest(user) /obj/machinery/portable_atmospherics/hydroponics/attack_hand(mob/user as mob) diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm index 404abb707c..cd7d0daf9a 100644 --- a/code/modules/hydroponics/trays/tray_tools.dm +++ b/code/modules/hydroponics/trays/tray_tools.dm @@ -53,13 +53,13 @@ else if(istype(target,/obj/item/weapon/reagent_containers/food/snacks/grown)) var/obj/item/weapon/reagent_containers/food/snacks/grown/G = target - grown_seed = seed_types[G.plantname] + grown_seed = plant_controller.seeds[G.plantname] grown_reagents = G.reagents else if(istype(target,/obj/item/weapon/grown)) var/obj/item/weapon/grown/G = target - grown_seed = seed_types[G.plantname] + grown_seed = plant_controller.seeds[G.plantname] grown_reagents = G.reagents else if(istype(target,/obj/item/seeds)) diff --git a/code/modules/hydroponics/trays/tray_update_icons.dm b/code/modules/hydroponics/trays/tray_update_icons.dm index de66f4297e..e13bf644f0 100644 --- a/code/modules/hydroponics/trays/tray_update_icons.dm +++ b/code/modules/hydroponics/trays/tray_update_icons.dm @@ -21,7 +21,7 @@ if(dead) var/ikey = "[seed.get_trait(TRAIT_PLANT_ICON)]-dead" - var/image/dead_overlay = plant_icon_cache["[ikey]"] + var/image/dead_overlay = plant_controller.plant_icon_cache["[ikey]"] if(!dead_overlay) dead_overlay = image('icons/obj/hydroponics_growing.dmi', "[ikey]") dead_overlay.color = DEAD_PLANT_COLOUR @@ -39,20 +39,20 @@ overlay_stage = max(1,round(seed.get_trait(TRAIT_MATURATION) / seed.growth_stages)) var/ikey = "[seed.get_trait(TRAIT_PLANT_ICON)]-[overlay_stage]" - var/image/plant_overlay = plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] + var/image/plant_overlay = plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] if(!plant_overlay) plant_overlay = image('icons/obj/hydroponics_growing.dmi', "[ikey]") plant_overlay.color = seed.get_trait(TRAIT_PLANT_COLOUR) - plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] = plant_overlay + plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] = plant_overlay overlays |= plant_overlay if(harvest && overlay_stage == seed.growth_stages) ikey = "[seed.get_trait(TRAIT_PRODUCT_ICON)]" - var/image/harvest_overlay = plant_icon_cache["product-[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] + var/image/harvest_overlay = plant_controller.plant_icon_cache["product-[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] if(!harvest_overlay) harvest_overlay = image('icons/obj/hydroponics_products.dmi', "[ikey]") harvest_overlay.color = seed.get_trait(TRAIT_PRODUCT_COLOUR) - plant_icon_cache["product-[ikey]-[seed.get_trait(TRAIT_PRODUCT_COLOUR)]"] = harvest_overlay + plant_controller.plant_icon_cache["product-[ikey]-[seed.get_trait(TRAIT_PRODUCT_COLOUR)]"] = harvest_overlay overlays |= harvest_overlay //Draw the cover. diff --git a/code/modules/organs/organ_alien.dm b/code/modules/organs/organ_alien.dm index 0024865acf..4a36d23659 100644 --- a/code/modules/organs/organ_alien.dm +++ b/code/modules/organs/organ_alien.dm @@ -48,7 +48,7 @@ H.death() //This is a terrible hack and I should be ashamed. - var/datum/seed/diona = seed_types["diona"] + var/datum/seed/diona = plant_controller.seeds["diona"] if(!diona) del(src) diff --git a/code/world.dm b/code/world.dm index 3897c24729..2fd24cf9f5 100644 --- a/code/world.dm +++ b/code/world.dm @@ -55,7 +55,7 @@ var/global/datum/global_init/init = new () // Set up roundstart seed list. This is here because vendors were // bugging out and not populating with the correct packet names // due to this list not being instantiated. - populate_seed_list() + plant_controller = new() // Create autolathe recipes, as above. populate_lathe_recipes() diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 9820bb1f8ac420743d1f1689d59203770be6bcd7..8b70722fd90847cbb577d2b7f1aa79aee2b18264 100644 GIT binary patch delta 16962 zcmYgXV_+Ulw2o~xwi-8f(m0J9tFdiolQg!`SWOz+wr#Vq?fdq-KkohY&h9(AJ9FmX zIcJ_38iOpGf{djER6SKRoW)F>j2tcOoh|Ha!NA-zl2R4y@V}t-Po5T4#e2;|#ozZ7 zl9zB(>VYp?Rk{V9X+EK*`aTomDB&kPJ3t-{-lXHbMD^uAUfnyrka1qDp6eTuqZl%( z>2Dw(P|u*Qizv$)GG?{(qZM-9 z9E{r05>yg8rK?11W=r5XKlfI=k4Lkb%hp5TbNe>fi>gUXqKiuIwhiN^Bls7jSfE-) zTeH-d!Drb@47lBVOsg7M3R%_qO zHN@AZ4SJ|;z|$mv`ulG_)4V5KQq}Q6`;ZD6rShyPlu><>uPqt0qWgHs^$+W=J|7-4}Cx}wphFH zoK-^jfD8isehGY}SQ;zqJt6Xl$aH07q+%*P1x4cI$k5XH1D;x z{b*LR>pa^c({opruNQX+wlD1gtI?HP4F^UAvfT}g z8Qu3+hGuAjEk4=pRE307-(|k>y538|h27jh ztt*7aZ{X¡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 delta 16474 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