/datum/seed/proc/diverge_mutate_gene(var/datum/decl/plantgene/G, var/turf/T) if(!istype(G)) log_runtime("Attempted to mutate [src] with a non-plantgene var.") return src var/datum/seed/S = diverge() //Let's not modify all of the seeds. T.visible_message(span_infoplain(span_bold("\The [S.display_name]") + " quivers!")) //Mimicks the normal mutation. G.mutate(S, T) return S /datum/decl/plantgene var/gene_tag /datum/decl/plantgene/biochem gene_tag = GENE_BIOCHEMISTRY /datum/decl/plantgene/hardiness gene_tag = GENE_HARDINESS /datum/decl/plantgene/environment gene_tag = GENE_ENVIRONMENT /datum/decl/plantgene/metabolism gene_tag = GENE_METABOLISM /datum/decl/plantgene/structure gene_tag = GENE_STRUCTURE /datum/decl/plantgene/diet gene_tag = GENE_DIET /datum/decl/plantgene/pigment gene_tag = GENE_PIGMENT /datum/decl/plantgene/output gene_tag = GENE_OUTPUT /datum/decl/plantgene/atmosphere gene_tag = GENE_ATMOSPHERE /datum/decl/plantgene/vigour gene_tag = GENE_VIGOUR /datum/decl/plantgene/fruit gene_tag = GENE_FRUIT /datum/decl/plantgene/special gene_tag = GENE_SPECIAL /datum/decl/plantgene/proc/mutate(var/datum/seed/S) return /datum/decl/plantgene/biochem/mutate(var/datum/seed/S) S.set_trait(TRAIT_POTENCY, S.get_trait(TRAIT_POTENCY)+rand(-20,20),200, 0) /datum/decl/plantgene/hardiness/mutate(var/datum/seed/S) if(prob(60)) S.set_trait(TRAIT_TOXINS_TOLERANCE, S.get_trait(TRAIT_TOXINS_TOLERANCE)+rand(-2,2),10,0) if(prob(60)) S.set_trait(TRAIT_PEST_TOLERANCE, S.get_trait(TRAIT_PEST_TOLERANCE)+rand(-2,2),10,0) if(prob(60)) S.set_trait(TRAIT_WEED_TOLERANCE, S.get_trait(TRAIT_WEED_TOLERANCE)+rand(-2,2),10,0) if(prob(60)) S.set_trait(TRAIT_ENDURANCE, S.get_trait(TRAIT_ENDURANCE)+rand(-5,5),100,0) /datum/decl/plantgene/environment/mutate(var/datum/seed/S) if(prob(60)) S.set_trait(TRAIT_IDEAL_HEAT, S.get_trait(TRAIT_IDEAL_HEAT)+rand(-2,2),10,0) if(prob(60)) S.set_trait(TRAIT_IDEAL_LIGHT, S.get_trait(TRAIT_IDEAL_LIGHT)+rand(-2,2),10,0) if(prob(60)) S.set_trait(TRAIT_LIGHT_TOLERANCE, S.get_trait(TRAIT_LIGHT_TOLERANCE)+rand(-5,5),100,0) /datum/decl/plantgene/metabolism/mutate(var/datum/seed/S) if(prob(65)) S.set_trait(TRAIT_REQUIRES_NUTRIENTS, S.get_trait(TRAIT_REQUIRES_NUTRIENTS)+rand(-2,2),10,0) if(prob(65)) S.set_trait(TRAIT_REQUIRES_WATER, S.get_trait(TRAIT_REQUIRES_WATER)+rand(-2,2),10,0) if(prob(40)) S.set_trait(TRAIT_ALTER_TEMP, S.get_trait(TRAIT_ALTER_TEMP)+rand(-5,5),100,0) /datum/decl/plantgene/diet/mutate(var/datum/seed/S) if(prob(60)) S.set_trait(TRAIT_CARNIVOROUS, S.get_trait(TRAIT_CARNIVOROUS)+rand(-1,1),2,0) if(prob(60)) S.set_trait(TRAIT_PARASITE, !S.get_trait(TRAIT_PARASITE)) if(prob(65)) S.set_trait(TRAIT_NUTRIENT_CONSUMPTION, S.get_trait(TRAIT_NUTRIENT_CONSUMPTION)+rand(-0.1,0.1),5,0) if(prob(65)) S.set_trait(TRAIT_WATER_CONSUMPTION, S.get_trait(TRAIT_WATER_CONSUMPTION)+rand(-1,1),50,0) /datum/decl/plantgene/output/mutate(var/datum/seed/S, var/turf/T) if(prob(50)) S.set_trait(TRAIT_BIOLUM, !S.get_trait(TRAIT_BIOLUM)) if(S.get_trait(TRAIT_BIOLUM)) T.visible_message(span_notice("\The [S.display_name] begins to glow!")) if(prob(50)) S.set_trait(TRAIT_BIOLUM_COLOUR,get_random_colour(0,75,190)) T.visible_message(span_notice("\The [S.display_name]'s glow") + " changes colour!") else T.visible_message(span_notice("\The [S.display_name]'s glow dims...")) if(prob(60)) S.set_trait(TRAIT_PRODUCES_POWER, !S.get_trait(TRAIT_PRODUCES_POWER)) if(prob(30)) S.set_trait(TRAIT_SPORING, !S.get_trait(TRAIT_SPORING)) if(S.get_trait(TRAIT_SPORING)) T.visible_message(span_notice("\The [S.display_name] releases a cloud of spores!")) S.create_spores(T) else T.visible_message(span_notice("\The [S.display_name]'s spores no longer fall.")) /datum/decl/plantgene/atmosphere/mutate(var/datum/seed/S) if(prob(60)) S.set_trait(TRAIT_HEAT_TOLERANCE, S.get_trait(TRAIT_HEAT_TOLERANCE)+rand(-2,2),40,0) if(prob(60)) S.set_trait(TRAIT_LOWKPA_TOLERANCE, S.get_trait(TRAIT_LOWKPA_TOLERANCE)+rand(-10,10),100,10) if(prob(60)) S.set_trait(TRAIT_HIGHKPA_TOLERANCE, S.get_trait(TRAIT_HIGHKPA_TOLERANCE)+rand(-10,10),500,100) /datum/decl/plantgene/vigour/mutate(var/datum/seed/S, var/turf/T) if(prob(65)) S.set_trait(TRAIT_PRODUCTION, S.get_trait(TRAIT_PRODUCTION)+rand(-1,1),10,0) if(prob(65)) S.set_trait(TRAIT_MATURATION, S.get_trait(TRAIT_MATURATION)+rand(-1,1),30,0) if(prob(55)) S.set_trait(TRAIT_SPREAD, S.get_trait(TRAIT_SPREAD)+rand(-1,1),2,0) T.visible_message(span_infoplain(span_bold("\The [S.display_name]") + " spasms visibly, shifting in the tray.")) /datum/decl/plantgene/fruit/mutate(var/datum/seed/S) if(prob(65)) S.set_trait(TRAIT_STINGS, !S.get_trait(TRAIT_STINGS)) if(prob(65)) S.set_trait(TRAIT_EXPLOSIVE, !S.get_trait(TRAIT_EXPLOSIVE)) if(prob(65)) S.set_trait(TRAIT_JUICY, !S.get_trait(TRAIT_JUICY)) /datum/decl/plantgene/special/mutate(var/datum/seed/S) if(prob(65)) S.set_trait(TRAIT_TELEPORTING, !S.get_trait(TRAIT_TELEPORTING))