From b6afafd31116890addf2b73ddd62ff32a55d85eb Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 17 Jul 2023 23:26:13 +1000 Subject: [PATCH] Removing death from clientless diona harvest. --- code/modules/hydroponics/seed.dm | 70 ++++++++++--------- code/modules/hydroponics/seed_mobs.dm | 21 +++--- code/modules/mob/living/carbon/nymph/diona.dm | 2 +- 3 files changed, 50 insertions(+), 43 deletions(-) diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index c11dd71e2f..c6cee8cb20 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -4,26 +4,27 @@ /datum/seed //Tracking. - var/uid // Unique identifier. - var/name // Index for global list. - var/seed_name // Plant name for seed packet. - var/seed_noun = "seeds" // Descriptor for packet. - var/display_name // Prettier name. - var/roundstart // If set, seed will not display variety number. - var/mysterious // Only used for the random seed packets. - var/can_self_harvest = 0 // Mostly used for living mobs. - var/growth_stages = 0 // Number of stages the plant passes through before it is mature. - var/list/traits = list() // Initialized in New() - var/list/mutants // Possible predefined mutant varieties, if any. - var/list/chems // Chemicals that plant produces in products/injects into victim. - var/list/consume_gasses // The plant will absorb these gasses during its life. - var/list/exude_gasses // The plant will exude these gasses during its life. - var/kitchen_tag // Used by the reagent grinder. - var/trash_type // Garbage item produced when eaten. + var/uid // Unique identifier. + var/name // Index for global list. + var/seed_name // Plant name for seed packet. + var/seed_noun = "seeds" // Descriptor for packet. + var/display_name // Prettier name. + var/roundstart // If set, seed will not display variety number. + var/mysterious // Only used for the random seed packets. + var/can_self_harvest = 0 // Mostly used for living mobs. + var/growth_stages = 0 // Number of stages the plant passes through before it is mature. + var/list/traits = list() // Initialized in New() + var/list/mutants // Possible predefined mutant varieties, if any. + var/list/chems // Chemicals that plant produces in products/injects into victim. + var/list/consume_gasses // The plant will absorb these gasses during its life. + var/list/exude_gasses // The plant will exude these gasses during its life. + var/kitchen_tag // Used by the reagent grinder. + var/trash_type // Garbage item produced when eaten. var/splat_type = /obj/effect/decal/cleanable/fruit_smudge // Graffiti decal. - var/has_mob_product // Mob products. (Dionaea, Walking Mushrooms, Angry Tomatoes) - var/apply_color_to_mob = TRUE // Do we color the mob to match the plant? - var/has_item_product // Item products. (Eggy) + var/has_mob_product // Mob products. (Dionaea, Walking Mushrooms, Angry Tomatoes) + var/mob_product_requires_player = FALSE // Whether or not the mob product requires a player. + var/apply_color_to_mob = TRUE // Do we color the mob to match the plant? + var/has_item_product // Item products. (Eggy) var/force_layer // Making the assumption anything in HYDRO-ponics is capable of processing water, and nutrients commonly associated with it, leaving us with the below to be tweaked. @@ -545,6 +546,7 @@ if(prob(5)) if(prob(30)) has_mob_product = pickweight(GLOB.plant_mob_products) + mob_product_requires_player = FALSE else has_item_product = pickweight(GLOB.plant_item_products) @@ -708,9 +710,11 @@ consume_gasses |= new_gasses gene.values["[TRAIT_CONSUME_GASSES]"] = null if(GENE_METABOLISM) - has_mob_product = gene.values["mob_product"] - has_item_product = gene.values["item_product"] - gene.values["mob_product"] = null + has_mob_product = gene.values["mob_product"] + mob_product_requires_player = gene.values["mob_product_requires_player"] + has_item_product = gene.values["item_product"] + gene.values["mob_product"] = null + gene.values["mob_product_requires_player"] = null for(var/trait in gene.values) set_trait(trait,gene.values["[trait]"]) @@ -739,8 +743,9 @@ if(GENE_HARDINESS) traits_to_copy = list(TRAIT_TOXINS_TOLERANCE,TRAIT_PEST_TOLERANCE,TRAIT_WEED_TOLERANCE,TRAIT_ENDURANCE) if(GENE_METABOLISM) - P.values["mob_product"] = has_mob_product - P.values["item_product"] = has_item_product + P.values["mob_product"] = has_mob_product + P.values["mob_product_requires_player"] = mob_product_requires_player + P.values["item_product"] = has_item_product traits_to_copy = list(TRAIT_REQUIRES_NUTRIENTS,TRAIT_REQUIRES_WATER,TRAIT_ALTER_TEMP) if(GENE_VIGOUR) traits_to_copy = list(TRAIT_PRODUCTION,TRAIT_MATURATION,TRAIT_YIELD,TRAIT_SPREAD) @@ -843,14 +848,15 @@ //Set up some basic information. var/datum/seed/new_seed = new - new_seed.name = "new line" - new_seed.uid = 0 - new_seed.roundstart = 0 - new_seed.can_self_harvest = can_self_harvest - new_seed.kitchen_tag = kitchen_tag - new_seed.trash_type = trash_type - new_seed.has_mob_product = has_mob_product - new_seed.has_item_product = has_item_product + new_seed.name = "new line" + new_seed.uid = 0 + new_seed.roundstart = 0 + new_seed.can_self_harvest = can_self_harvest + new_seed.kitchen_tag = kitchen_tag + new_seed.trash_type = trash_type + new_seed.has_mob_product = has_mob_product + new_seed.mob_product_requires_player = mob_product_requires_player + new_seed.has_item_product = has_item_product //Copy over everything else. if(mutants) new_seed.mutants = mutants.Copy() diff --git a/code/modules/hydroponics/seed_mobs.dm b/code/modules/hydroponics/seed_mobs.dm index 8b5c4a56a1..2a68528769 100644 --- a/code/modules/hydroponics/seed_mobs.dm +++ b/code/modules/hydroponics/seed_mobs.dm @@ -9,14 +9,15 @@ var/datum/ghosttrap/plant/P = get_ghost_trap("living plant") P.request_player(host, "Someone is harvesting [display_name]. ") - spawn(75) - if(!host.ckey && !host.client) - host.death() // This seems redundant, but a lot of mobs don't - host.set_stat(DEAD) // handle death() properly. Better safe than etc. - host.visible_message("[host] is malformed and unable to survive. It expires pitifully, leaving behind some seeds.") + if(mob_product_requires_player) + spawn(75) + if(!host.ckey && !host.client) + host.death() // This seems redundant, but a lot of mobs don't + host.set_stat(DEAD) // handle death() properly. Better safe than etc. + host.visible_message("[host] is malformed and unable to survive. It expires pitifully, leaving behind some seeds.") - var/total_yield = rand(1,3) - for(var/j = 0;j<=total_yield;j++) - var/obj/item/seeds/S = new(get_turf(host)) - S.seed_type = name - S.update_seed() + var/total_yield = rand(1,3) + for(var/j = 0;j<=total_yield;j++) + var/obj/item/seeds/S = new(get_turf(host)) + S.seed_type = name + S.update_seed() diff --git a/code/modules/mob/living/carbon/nymph/diona.dm b/code/modules/mob/living/carbon/nymph/diona.dm index 95dae36046..e229312aea 100644 --- a/code/modules/mob/living/carbon/nymph/diona.dm +++ b/code/modules/mob/living/carbon/nymph/diona.dm @@ -28,9 +28,9 @@ var/global/list/_nymph_default_emotes = list( name = "diona nymph" voice_name = "diona nymph" speak_emote = list("chirrups") + icon = 'icons/mob/alien.dmi' icon_state = "nymph" item_state = "nymph" - icon = 'icons/mob/alien.dmi' species_language = LANGUAGE_ROOTLOCAL only_species_language = TRUE gender = NEUTER