From 31d851d315b31bebdc88f5aba9fd129fa9b8f6d8 Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 10 Apr 2014 07:51:20 +0400 Subject: [PATCH 1/6] Such vines So mutation --- code/modules/events/spacevine.dm | 155 +++++++++++++++++++++++++++++- code/modules/hydroponics/seeds.dm | 3 +- 2 files changed, 153 insertions(+), 5 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index a0e24f81570..35162d4ded4 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -17,6 +17,107 @@ spawn(0) new/obj/effect/spacevine_controller(T) //spawn a controller at turf +/datum/spacevine_mutation + var/name = "" + var/severity = 1 + var/hue + +/datum/spacevine_mutation/proc/process_mutation(obj/effect/spacevine/holder) + return + +/datum/spacevine_mutation/proc/on_birth(obj/effect/spacevine/holder) + return + +/datum/spacevine_mutation/proc/on_grow(obj/effect/spacevine/holder) + return + +/datum/spacevine_mutation/proc/on_death(obj/effect/spacevine/holder) + return + +/datum/spacevine_mutation/proc/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I) + return + +/datum/spacevine_mutation/proc/on_cross(obj/effect/spacevine/holder, mob/crosser) + return + +/datum/spacevine_mutation/oxy_eater + name = "oxygen consumption" + hue = "#ffff00" + +/datum/spacevine_mutation/transparency + name = "oxygen consumption" + hue = "" + +/datum/spacevine_mutation/transparency/on_grow(obj/effect/spacevine/holder) + holder.SetOpacity(0) + holder.alpha = 125 + +/datum/spacevine_mutation/oxy_eater/process_mutation(obj/effect/spacevine/holder) + var/turf/simulated/floor/T = holder.loc + var/datum/gas_mixture/GM = T.air + GM.oxygen = max(0, GM.oxygen - severity * 0.5 * holder.energy) + +/datum/spacevine_mutation/nitro_eater + name = "nitrogen consumption" + hue = "#ffff00" + +/datum/spacevine_mutation/nitro_eater/process_mutation(obj/effect/spacevine/holder) + var/turf/simulated/floor/T = holder.loc + var/datum/gas_mixture/GM = T.air + GM.nitrogen = max(0, GM.nitrogen - severity * 0.5 * holder.energy) + +/datum/spacevine_mutation/carbondioxide_eater + name = "CO2 consumption" + hue = "#00ffff" + +/datum/spacevine_mutation/carbondioxide_eater/process_mutation(obj/effect/spacevine/holder) + var/turf/simulated/floor/T = holder.loc + var/datum/gas_mixture/GM = T.air + GM.carbon_dioxide = max(0, GM.carbon_dioxide - severity * 0.5 * holder.energy) + +/datum/spacevine_mutation/plasma_eater + name = "toxins consumption" + hue = "#dd00dd" + +/datum/spacevine_mutation/plasma_eater/process_mutation(obj/effect/spacevine/holder) + var/turf/simulated/floor/T = holder.loc + var/datum/gas_mixture/GM = T.air + GM.toxins = max(0, GM.toxins - severity * 0.5 * holder.energy) + +/datum/spacevine_mutation/thorns + name = "thorns" + hue = "#666666" + +/datum/spacevine_mutation/thorns/on_cross(obj/effect/spacevine/holder, crosser) + if(isliving(crosser) && prob(severity)) + var/mob/living/M = crosser + M.adjustBruteLoss(5) + M << "You cut yourself on all these vines." + +/datum/spacevine_mutation/thorns/on_hit(obj/effect/spacevine/holder, hitter) + if(ismob(hitter) && prob(severity)) + var/mob/living/M = hitter + M.adjustBruteLoss(5) + M << "You cut yourself on all these vines." + +/datum/spacevine_mutation/woodening + name = "hardening" + hue = "#997700" + +/datum/spacevine_mutation/woodening/on_grow(obj/effect/spacevine/holder) + if(holder.energy) + holder.density = 1 + +/datum/spacevine_mutation/woodening/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I) + if(hitter) + var/chance + if(I) + chance = I.force + else + chance = 4 + if(prob(chance)) + qdel(holder) + return 1 // SPACE VINES (Note that this code is very similar to Biomass code) @@ -32,19 +133,35 @@ var/energy = 0 var/obj/effect/spacevine_controller/master = null var/mob/living/buckled_mob + var/list/mutations = list() New() return Destroy() + for(var/datum/spacevine_mutation/SM in mutations) + SM.on_death(src) if(master) master.vines -= src master.growth_queue -= src + if(!master.vines.len) + var/obj/item/seeds/kudzuseed/KZ = new(loc) + KZ.mutations |= mutations ..() /obj/effect/spacevine/attackby(obj/item/weapon/W as obj, mob/user as mob) if (!W || !user || !W.type) return + + var/override = 0 + + for(var/datum/spacevine_mutation/SM in mutations) + override += SM.on_hit(src, user) + + if(override) + ..() + return + switch(W.type) if(/obj/item/weapon/circular_saw) qdel(src) if(/obj/item/weapon/kitchen/utensil/knife) qdel(src) @@ -70,12 +187,20 @@ //Plant-b-gone damage is handled in its entry in chemistry-reagents.dm ..() +/obj/effect/spacevine/Crossed(mob/crosser) + if(isliving(crosser)) + for(var/datum/spacevine_mutation/SM in mutations) + SM.on_cross(src, crosser) /obj/effect/spacevine/attack_hand(mob/user as mob) + for(var/datum/spacevine_mutation/SM in mutations) + SM.on_hit(src, user) manual_unbuckle(user) /obj/effect/spacevine/attack_paw(mob/user as mob) + for(var/datum/spacevine_mutation/SM in mutations) + SM.on_hit(src, user) manual_unbuckle(user) /obj/effect/spacevine/proc/unbuckle() @@ -115,25 +240,42 @@ var/list/growth_queue = list() var/reached_collapse_size var/reached_slowdown_size + var/list/mutations_list = list() + var/mutativness = 1 //What this does is that instead of having the grow minimum of 1, required to start growing, the minimum will be 0, //meaning if you get the spacevines' size to something less than 20 plots, it won't grow anymore. - New() + New(loc, list/muts, mttv) if(!istype(src.loc,/turf/simulated/floor)) qdel(src) - spawn_spacevine_piece(src.loc) + spawn_spacevine_piece(src.loc, , muts) processing_objects.Add(src) + init_subtypes(/datum/spacevine_mutation/, mutations_list) + if(mttv != null) + mutativness = mttv Destroy() processing_objects.Remove(src) ..() - proc/spawn_spacevine_piece(var/turf/location) + proc/spawn_spacevine_piece(var/turf/location, obj/effect/spacevine/parent, list/muts) var/obj/effect/spacevine/SV = new(location) growth_queue += SV vines += SV SV.master = src + if(muts && muts.len) + SV.mutations |= muts + if(parent) + SV.mutations |= parent.mutations + SV.color = parent.color + if(prob(mutativness)) + SV.mutations |= pick(mutations_list) + var/datum/spacevine_mutation/randmut = pick(SV.mutations) + SV.color = randmut.hue + + for(var/datum/spacevine_mutation/SM in SV.mutations) + SM.on_birth(SV) process() if(!vines) @@ -165,6 +307,8 @@ i++ queue_end += SV growth_queue -= SV + for(var/datum/spacevine_mutation/SM in SV.mutations) + SM.process_mutation(SV) if(SV.energy < 2) //If tile isn't fully grown if(prob(20)) SV.grow() @@ -190,6 +334,9 @@ src.icon_state = pick("Hvy1", "Hvy2", "Hvy3") energy = 2 + for(var/datum/spacevine_mutation/SM in mutations) + SM.on_grow(src) + /obj/effect/spacevine/proc/buckle_mob() if(!buckled_mob && prob(25)) for(var/mob/living/carbon/V in src.loc) @@ -209,7 +356,7 @@ if(!locate(/obj/effect/spacevine,F)) if(F.Enter(src)) if(master) - master.spawn_spacevine_piece( F ) + master.spawn_spacevine_piece(F, src) /* /obj/effect/spacevine/proc/Life() diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 442624ca632..d3c26f73806 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -1033,12 +1033,13 @@ growthstages = 4 plant_type = 1 rarity = 30 + var/list/mutations = list() /obj/item/seeds/kudzuseed/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) return user << "You plant the kudzu. You monster." - new /obj/effect/spacevine_controller(user.loc) + new /obj/effect/spacevine_controller(user.loc, mutations, 1) qdel(src) /obj/item/seeds/chillighost From cb5eaf0b100118377c00a2e58d1ae3820f8c93a9 Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 11 Apr 2014 01:36:38 +0400 Subject: [PATCH 2/6] Tweaks and giggles --- code/defines/obj/weapon.dm | 8 -- code/modules/events/spacevine.dm | 9 +- code/modules/hydroponics/grown.dm | 117 +++++++++++---------- code/modules/hydroponics/hydroponics.dm | 6 +- code/modules/hydroponics/seed_extractor.dm | 10 +- code/modules/hydroponics/seeds.dm | 17 ++- 6 files changed, 92 insertions(+), 75 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 58431d24fd5..21f89fb2e7b 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -369,14 +369,6 @@ attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/bladeslice.ogg' -/obj/item/weapon/scythe/afterattack(atom/A, mob/user as mob, proximity) - if(!proximity) return - if(istype(A, /obj/effect/spacevine)) - for(var/obj/effect/spacevine/B in orange(A,1)) - if(prob(80)) - qdel(B) - qdel(A) - /* /obj/item/weapon/cigarpacket name = "Pete's Cuban Cigars" diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 35162d4ded4..4323a6a65e8 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -112,9 +112,9 @@ if(hitter) var/chance if(I) - chance = I.force + chance = I.force * 2 else - chance = 4 + chance = 8 if(prob(chance)) qdel(holder) return 1 @@ -169,6 +169,11 @@ if(/obj/item/weapon/twohanded/fireaxe) qdel(src) if(/obj/item/weapon/hatchet) qdel(src) if(/obj/item/weapon/melee/energy) qdel(src) + if(/obj/item/weapon/scythe) + for(var/obj/effect/spacevine/B in orange(src,1)) + if(prob(80)) + qdel(B) + qdel(src) //less effective weapons if(/obj/item/weapon/wirecutters) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 6915ca7e1c7..3a0fc8d9da1 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -86,7 +86,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/cherries seed = "/obj/item/seeds/cherryseed" @@ -100,7 +100,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 15), 1)) reagents.add_reagent("sugar", 1+round((potency / 15), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/poppy seed = "/obj/item/seeds/poppyseed" @@ -114,7 +114,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) reagents.add_reagent("bicaridine", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 3, 1) + bitesize = 1+round(reagents.total_volume / 3, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/harebell seed = "obj/item/seeds/harebellseed" @@ -127,7 +127,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 3, 1) + bitesize = 1+round(reagents.total_volume / 3, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/potato seed = "/obj/item/seeds/potatoseed" @@ -138,8 +138,8 @@ New(var/loc, var/potency = 25) ..() if(reagents) - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = reagents.total_volume + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + bitesize = reagents.total_volume /obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() @@ -165,7 +165,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) reagents.add_reagent("sugar", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes seed = "/obj/item/seeds/greengrapeseed" @@ -178,7 +178,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) reagents.add_reagent("kelotane", 3+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage seed = "/obj/item/seeds/cabbageseed" @@ -190,7 +190,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = reagents.total_volume + bitesize = reagents.total_volume /obj/item/weapon/reagent_containers/food/snacks/grown/berries seed = "/obj/item/seeds/berryseed" @@ -202,7 +202,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/glowberries seed = "/obj/item/seeds/glowberryseed" @@ -217,7 +217,7 @@ if(reagents) reagents.add_reagent("nutriment", round((potency / 10), 1)) reagents.add_reagent("uranium", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/glowberries/Destroy() if(istype(loc,/mob)) @@ -243,7 +243,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) reagents.add_reagent("coco", 4+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane seed = "/obj/item/seeds/sugarcaneseed" @@ -254,7 +254,7 @@ New(var/loc, var/potency = 50) ..() if(reagents) - reagents.add_reagent("sugar", 4+round((potency / 5), 1)) + reagents.add_reagent("sugar", 4+round((potency / 5), 1)) /obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries seed = "/obj/item/seeds/poisonberryseed" @@ -268,7 +268,7 @@ if(reagents) reagents.add_reagent("nutriment", 1) reagents.add_reagent("toxin", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/deathberries seed = "/obj/item/seeds/deathberryseed" @@ -283,7 +283,7 @@ reagents.add_reagent("nutriment", 1) reagents.add_reagent("toxin", 3+round(potency / 3, 1)) reagents.add_reagent("lexorin", 1+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris seed = "/obj/item/seeds/ambrosiavulgaris" @@ -300,7 +300,7 @@ reagents.add_reagent("kelotane", 1+round(potency / 8, 1)) reagents.add_reagent("bicaridine", 1+round(potency / 10, 1)) reagents.add_reagent("toxin", 1+round(potency / 10, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus seed = "/obj/item/seeds/ambrosiadeus" @@ -317,7 +317,7 @@ reagents.add_reagent("synaptizine", 1+round(potency / 8, 1)) reagents.add_reagent("hyperzine", 1+round(potency / 10, 1)) reagents.add_reagent("space_drugs", 1+round(potency / 10, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/apple seed = "/obj/item/seeds/appleseed" @@ -330,7 +330,7 @@ if(reagents) reagents.maximum_volume = 20 reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = reagents.maximum_volume // Always eat the apple in one + bitesize = reagents.maximum_volume // Always eat the apple in one /obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned seed = "/obj/item/seeds/poisonedappleseed" @@ -343,7 +343,7 @@ if(reagents) reagents.maximum_volume = 20 reagents.add_reagent("cyanide", 1+round((potency / 5), 1)) - bitesize = reagents.maximum_volume // Always eat the apple in one + bitesize = reagents.maximum_volume // Always eat the apple in one /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple seed = "/obj/item/seeds/goldappleseed" @@ -356,7 +356,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) reagents.add_reagent("gold", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -375,7 +375,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 6), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin seed = "/obj/item/seeds/pumpkinseed" @@ -387,7 +387,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 6), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -408,7 +408,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/lemon seed = "/obj/item/seeds/lemonseed" @@ -420,7 +420,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/orange seed = "/obj/item/seeds/orangeseed" @@ -432,7 +432,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet seed = "/obj/item/seeds/whitebeetseed" @@ -445,7 +445,7 @@ if(reagents) reagents.add_reagent("nutriment", round((potency / 20), 1)) reagents.add_reagent("sugar", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/banana seed = "/obj/item/seeds/bananaseed" @@ -461,7 +461,7 @@ ..() if(reagents) reagents.add_reagent("banana", 1+round((potency / 10), 1)) - bitesize = 5 + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/grown/chili seed = "/obj/item/seeds/chiliseed" @@ -474,7 +474,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) reagents.add_reagent("capsaicin", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/chili/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -494,7 +494,7 @@ reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) reagents.add_reagent("capsaicin", 8+round(potency / 2, 1)) reagents.add_reagent("condensedcapsaicin", 4+round(potency / 4, 1)) - bitesize = 1+round(reagents.total_volume / 4, 1) + bitesize = 1+round(reagents.total_volume / 4, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chilli/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -529,7 +529,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans seed = "/obj/item/seeds/soyaseed" @@ -542,7 +542,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/koibeans seed = "/obj/item/seeds/koiseed" @@ -555,7 +555,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 30), 1)) reagents.add_reagent("carpotoxin", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/moonflower seed = "/obj/item/seeds/moonflowerseed" @@ -568,7 +568,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) reagents.add_reagent("moonshine", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/tomato seed = "/obj/item/seeds/tomatoseed" @@ -580,7 +580,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) throw_impact(atom/hit_atom) ..() @@ -598,7 +598,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/killertomato/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) @@ -619,7 +619,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) reagents.add_reagent("blood", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato/throw_impact(atom/hit_atom) ..() @@ -642,7 +642,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) reagents.add_reagent("lube", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato/throw_impact(atom/hit_atom) ..() @@ -677,7 +677,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/grass seed = "/obj/item/seeds/grassseed" @@ -688,7 +688,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/grass/attack_self(mob/user as mob) user << "You prepare the astroturf." @@ -706,12 +706,15 @@ name = "kudzu pod" desc = "Pueraria Virallis: An invasive species with vines that rapidly creep and wrap around whatever they contact." icon_state = "kudzupod" + var/list/mutations = list() + var/mutating = 0 + New(var/loc, var/potency = 10) ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) reagents.add_reagent("anti_toxin", 1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper seed = "/obj/item/seeds/icepepperseed" @@ -724,7 +727,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) reagents.add_reagent("frostoil", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -742,7 +745,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) reagents.add_reagent("imidazoline", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi seed = "/obj/item/seeds/reishimycelium" @@ -756,7 +759,7 @@ reagents.add_reagent("nutriment", 1) reagents.add_reagent("anti_toxin", 3+round(potency / 3, 1)) reagents.add_reagent("stoxin", 3+round(potency / 3, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -776,7 +779,7 @@ reagents.add_reagent("nutriment", 1) reagents.add_reagent("amatoxin", 3+round(potency / 3, 1)) reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -795,7 +798,7 @@ reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) reagents.add_reagent("amatoxin", 13+round(potency / 3, 1)) reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -814,7 +817,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) reagents.add_reagent("mushroomhallucinogen", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -831,7 +834,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 2+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom seed = "/obj/item/seeds/walkingmushroom" @@ -842,7 +845,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 2+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) @@ -867,7 +870,7 @@ ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom seed = "/obj/item/seeds/glowshroom" @@ -887,7 +890,7 @@ potency = 30 plant_type = 2 if(reagents) - reagents.add_reagent("radium", 1+round((potency / 20), 1)) + reagents.add_reagent("radium", 1+round((potency / 20), 1)) if(istype(src.loc,/mob)) pickup(src.loc)//adjusts the lighting on the mob else @@ -959,7 +962,7 @@ if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) reagents.add_reagent("singulo", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/gatfruit seed = "/obj/item/seeds/gatfruit" @@ -975,7 +978,7 @@ reagents.add_reagent("carbon", 1+round((potency / 10), 1)) reagents.add_reagent("nitrogen", 1+round((potency / 15), 1)) reagents.add_reagent("potassium", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_arabica @@ -987,7 +990,7 @@ New(var/loc, var/potency = 20) ..() if(reagents) - reagents.add_reagent("coffeepowder", 1+round((potency / 10), 2)) + reagents.add_reagent("coffeepowder", 1+round((potency / 10), 2)) /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_robusta seed = "/obj/item/seeds/coffee_robusta_seed" @@ -999,7 +1002,7 @@ ..() if(reagents) reagents.add_reagent("coffeepowder", 1+round((potency / 10), 2)) - reagents.add_reagent("hyperzine", 1+round((potency / 20), 1)) + reagents.add_reagent("hyperzine", 1+round((potency / 20), 1)) /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco seed = "/obj/item/seeds/tobacco_seed" @@ -1020,7 +1023,7 @@ New(var/loc, var/potency = 20) ..() if(reagents) - reagents.add_reagent("dexalin", 1+round((potency / 20), 1)) + reagents.add_reagent("dexalin", 1+round((potency / 20), 1)) /obj/item/weapon/reagent_containers/food/snacks/grown/tea_aspera @@ -1032,7 +1035,7 @@ New(var/loc, var/potency = 20) ..() if(reagents) - reagents.add_reagent("teapowder", 1+round((potency / 10), 2)) + reagents.add_reagent("teapowder", 1+round((potency / 10), 2)) /obj/item/weapon/reagent_containers/food/snacks/grown/tea_astra @@ -1045,4 +1048,4 @@ ..() if(reagents) reagents.add_reagent("teapowder", 1+round((potency / 10), 2)) - reagents.add_reagent("kelotane", 1+round((potency / 20), 1)) + reagents.add_reagent("kelotane", 1+round((potency / 20), 1)) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 95178e74be7..80642e3957b 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -768,9 +768,11 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) /obj/item/seeds/proc/harvest(mob/user = usr) var/obj/machinery/hydroponics/parent = loc //for ease of access var/t_amount = 0 + var/list/result = list() while(t_amount < getYield()) - var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new product(user.loc, potency) // User gets a consumable + var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new product(user.loc, potency) + result.Add(t_prod) // User gets a consumable if(!t_prod) return t_prod.seed = type t_prod.lifespan = lifespan @@ -783,6 +785,8 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) t_amount++ parent.update_tray() + + return result /* /obj/item/seeds/grassseed/harvest(mob/user = usr) var/obj/machinery/hydroponics/parent = loc //for ease of access diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 758bd4c27af..090746089dd 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -6,7 +6,7 @@ if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/)) var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O while(t_amount < t_max) - var/obj/item/seeds/t_prod = new F.seed(O.loc) + var/obj/item/seeds/t_prod = new F.seed(O.loc, O) t_prod.lifespan = F.lifespan t_prod.endurance = F.endurance t_prod.maturation = F.maturation @@ -21,7 +21,7 @@ var/obj/item/weapon/grown/F = O if(F.seed) while(t_amount < t_max) - var/obj/item/seeds/t_prod = new F.seed(O.loc) + var/obj/item/seeds/t_prod = new F.seed(O.loc, O) t_prod.lifespan = F.lifespan t_prod.endurance = F.endurance t_prod.maturation = F.maturation @@ -55,7 +55,7 @@ obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob) if(isrobot(user)) return - + if (istype(O,/obj/item/weapon/storage/bag/plants)) var/obj/item/weapon/storage/P = O var/loaded = 0 @@ -112,9 +112,9 @@ datum/seed_pile/New(var/name, var/life, var/endur, var/matur, var/prod, var/yie, obj/machinery/seed_extractor/interact(mob/user as mob) if (stat) return 0 - + var/dat = "Stored seeds:
" - + if (contents.len == 0) dat += "No seeds" else diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index d3c26f73806..c0a4eda32d0 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -22,7 +22,7 @@ var/rarity = 0 //How rare the plant is. Used for giving points to cargo when shipping off to Centcom. var/list/mutatelist = list() //The type of plants that this plant can mutate into. -/obj/item/seeds/New() +/obj/item/seeds/New(loc, parent) ..() pixel_x = rand(-8, 8) pixel_y = rand(-8, 8) @@ -1034,12 +1034,25 @@ plant_type = 1 rarity = 30 var/list/mutations = list() + var/mutating + +/obj/item/seeds/kudzuseed/New(loc, obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod/parent) + ..() + if(parent) + mutations = parent.mutations + mutating = parent.mutating + +/obj/item/seeds/kudzuseed/harvest() + var/list/prod = ..() + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod/K in prod) + K.mutations = mutations + K.mutating = prob(15) /obj/item/seeds/kudzuseed/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) return user << "You plant the kudzu. You monster." - new /obj/effect/spacevine_controller(user.loc, mutations, 1) + new /obj/effect/spacevine_controller(user.loc, mutations) qdel(src) /obj/item/seeds/chillighost From d26e1ee5ac94473fc082effdc1d951c6e42c6791 Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 11 Apr 2014 02:28:41 +0400 Subject: [PATCH 3/6] Fastfix of name --- code/modules/events/spacevine.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 4323a6a65e8..7517609aac2 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -40,18 +40,18 @@ /datum/spacevine_mutation/proc/on_cross(obj/effect/spacevine/holder, mob/crosser) return -/datum/spacevine_mutation/oxy_eater - name = "oxygen consumption" - hue = "#ffff00" - /datum/spacevine_mutation/transparency - name = "oxygen consumption" + name = "transparency" hue = "" /datum/spacevine_mutation/transparency/on_grow(obj/effect/spacevine/holder) holder.SetOpacity(0) holder.alpha = 125 +/datum/spacevine_mutation/oxy_eater + name = "oxygen consumption" + hue = "#ffff00" + /datum/spacevine_mutation/oxy_eater/process_mutation(obj/effect/spacevine/holder) var/turf/simulated/floor/T = holder.loc var/datum/gas_mixture/GM = T.air From 6e641397bf758c118e721e8e9d4169e26d38c54a Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 11 Apr 2014 02:31:52 +0400 Subject: [PATCH 4/6] Message fix --- code/modules/events/spacevine.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 7517609aac2..48805478522 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -92,13 +92,13 @@ if(isliving(crosser) && prob(severity)) var/mob/living/M = crosser M.adjustBruteLoss(5) - M << "You cut yourself on all these vines." + M << "You cut yourself on the thorny vines." /datum/spacevine_mutation/thorns/on_hit(obj/effect/spacevine/holder, hitter) if(ismob(hitter) && prob(severity)) var/mob/living/M = hitter M.adjustBruteLoss(5) - M << "You cut yourself on all these vines." + M << "You cut yourself on the thorny vines." /datum/spacevine_mutation/woodening name = "hardening" From a250e5f670b499664b4847ffb62c897a036ac96a Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 13 Apr 2014 00:04:41 +0400 Subject: [PATCH 5/6] More !!FUN!! Im open to discussion as to remove some of the TOO op mutations --- code/modules/events/spacevine.dm | 107 ++++++++++++++++-- .../simple_animal/friendly/farm_animals.dm | 9 +- code/modules/reagents/Chemistry-Reagents.dm | 4 +- 3 files changed, 102 insertions(+), 18 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 48805478522..52986f4cf46 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -25,6 +25,9 @@ /datum/spacevine_mutation/proc/process_mutation(obj/effect/spacevine/holder) return +/datum/spacevine_mutation/proc/process_temperature(obj/effect/spacevine/holder, temp, volume) + return + /datum/spacevine_mutation/proc/on_birth(obj/effect/spacevine/holder) return @@ -40,6 +43,68 @@ /datum/spacevine_mutation/proc/on_cross(obj/effect/spacevine/holder, mob/crosser) return +/datum/spacevine_mutation/proc/on_chem(obj/effect/spacevine/holder, datum/reagent/R) + return + +/datum/spacevine_mutation/proc/on_eat(obj/effect/spacevine/holder, mob/living/eater) + return + +/datum/spacevine_mutation/proc/on_spread(obj/effect/spacevine/holder, turf/target) + return + +/datum/spacevine_mutation/proc/on_buckle(obj/effect/spacevine/holder, mob/living/buckled) + return + +/datum/spacevine_mutation/toxity + name = "toxity" + hue = "ff00ff" + +/datum/spacevine_mutation/toxity/on_cross(obj/effect/spacevine/holder, mob/living/crosser) + if(issilicon(crosser)) + return + if(prob(severity)) + if(crosser.client) + crosser << "You accidently touch the vine and feel a strange sensation." + crosser.adjustToxLoss(5) + +/datum/spacevine_mutation/toxity/on_eat(obj/effect/spacevine/holder, mob/living/eater) + eater.adjustToxLoss(5) + +/datum/spacevine_mutation/expsolive //OH SHIT IT CAN CHAINREACT RUN!!! + name = "explosive" + hue = "ffff00" + +/datum/spacevine_mutation/expsolive/on_death(obj/effect/spacevine/holder, mob/hitter, obj/item/I) + spawn(1) + explosion(holder.loc, 0, 0, 2, 0) + +/datum/spacevine_mutation/fire_proof + name = "fire resist" + hue = "ffff88" + +/datum/spacevine_mutation/fire_proof/process_temperature(obj/effect/spacevine/holder, temp, volume) + return 1 + +/datum/spacevine_mutation/vine_eating + name = "vine eating" + hue = "ff7777" + +/datum/spacevine_mutation/vine_eating/on_spread(obj/effect/spacevine/holder, turf/target) + var/obj/effect/spacevine/prey = locate() in target + if(prey) + prey.Destroy() + +/datum/spacevine_mutation/agressive_spread //very OP, but im out of other ideas currently + name = "agressive spreading" + hue = "777777" + +/datum/spacevine_mutation/agressive_spread/on_spread(obj/effect/spacevine/holder, turf/target) + for(var/atom/A in target) + A.ex_act(severity) + +/datum/spacevine_mutation/agressive_spread/on_buckle(obj/effect/spacevine/holder, mob/living/buckled) + buckled.ex_act(severity) + /datum/spacevine_mutation/transparency name = "transparency" hue = "" @@ -50,7 +115,7 @@ /datum/spacevine_mutation/oxy_eater name = "oxygen consumption" - hue = "#ffff00" + hue = "#ffff88" /datum/spacevine_mutation/oxy_eater/process_mutation(obj/effect/spacevine/holder) var/turf/simulated/floor/T = holder.loc @@ -59,7 +124,7 @@ /datum/spacevine_mutation/nitro_eater name = "nitrogen consumption" - hue = "#ffff00" + hue = "#8888ff" /datum/spacevine_mutation/nitro_eater/process_mutation(obj/effect/spacevine/holder) var/turf/simulated/floor/T = holder.loc @@ -77,7 +142,7 @@ /datum/spacevine_mutation/plasma_eater name = "toxins consumption" - hue = "#dd00dd" + hue = "#ffbbff" /datum/spacevine_mutation/plasma_eater/process_mutation(obj/effect/spacevine/holder) var/turf/simulated/floor/T = holder.loc @@ -116,7 +181,7 @@ else chance = 8 if(prob(chance)) - qdel(holder) + holder.Destroy() return 1 @@ -149,6 +214,21 @@ KZ.mutations |= mutations ..() +/obj/effect/spacevine/proc/on_chem_effect(datum/reagent/R) + var/override = 0 + for(var/datum/spacevine_mutation/SM in mutations) + override += SM.on_chem(src, R) + if(!override && istype(R, /datum/reagent/toxin/plantbgone)) + if(prob(50)) + Destroy() + +/obj/effect/spacevine/proc/eat(mob/eater) + var/override = 0 + for(var/datum/spacevine_mutation/SM in mutations) + override += SM.on_eat(src, eater) + if(!override) + if(prob(10)) + eater.say("Nom") /obj/effect/spacevine/attackby(obj/item/weapon/W as obj, mob/user as mob) if (!W || !user || !W.type) return @@ -345,6 +425,8 @@ /obj/effect/spacevine/proc/buckle_mob() if(!buckled_mob && prob(25)) for(var/mob/living/carbon/V in src.loc) + for(var/datum/spacevine_mutation/SM in mutations) + SM.on_buckle(src, V) if((V.stat != DEAD) && (V.buckled != src)) //if mob not dead or captured V.buckled = src V.loc = src.loc @@ -356,6 +438,8 @@ /obj/effect/spacevine/proc/spread() var/direction = pick(cardinal) var/step = get_step(src,direction) + for(var/datum/spacevine_mutation/SM in mutations) + SM.on_spread(src, step) if(istype(step,/turf/simulated/floor)) var/turf/simulated/floor/F = step if(!locate(/obj/effect/spacevine,F)) @@ -400,18 +484,21 @@ /obj/effect/spacevine/ex_act(severity) switch(severity) if(1.0) - qdel(src) + Destroy() return if(2.0) if (prob(90)) - qdel(src) + Destroy() return if(3.0) if (prob(50)) - qdel(src) + Destroy() return return -/obj/effect/spacevine/temperature_expose(null, temp, volume) //hotspots kill vines - qdel(src) - +/obj/effect/spacevine/temperature_expose(null, temp, volume) + var/override = 0 + for(var/datum/spacevine_mutation/SM in mutations) + override += SM.process_temperature(src, temp, volume) + if(!override) + Destroy() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index ac5350437e2..fa363a1f7d9 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -48,9 +48,7 @@ if(locate(/obj/effect/spacevine) in loc) var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc - qdel(SV) - if(prob(10)) - say("Nom") + SV.eat(src) if(!pulledby) for(var/direction in shuffle(list(1,2,4,8,5,6,9,10))) @@ -68,9 +66,8 @@ if(!stat) if(locate(/obj/effect/spacevine) in loc) var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc - qdel(SV) - if(prob(10)) - say("Nom") + SV.eat(src) + /mob/living/simple_animal/hostile/retaliate/goat/attackby(var/obj/item/O as obj, var/mob/user as mob) if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 5300f47f082..b24a66d4f2d 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1495,8 +1495,8 @@ datum else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it qdel(O) else if(istype(O,/obj/effect/spacevine)) - if(prob(50)) qdel(O) //Kills kudzu too. - // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics + var/obj/effect/spacevine/SV = O + SV.on_chem_effect(src) reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) src = null From 40c349c052cb566091c7b2b762e5f18be75d53ca Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 15 Apr 2014 01:24:36 +0400 Subject: [PATCH 6/6] A little tweak --- code/modules/events/spacevine.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 52986f4cf46..f6f50df6959 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -91,16 +91,17 @@ /datum/spacevine_mutation/vine_eating/on_spread(obj/effect/spacevine/holder, turf/target) var/obj/effect/spacevine/prey = locate() in target - if(prey) + if(prey && !prey.mutations.Find(src)) //Eat all vines that are not of the same origin prey.Destroy() -/datum/spacevine_mutation/agressive_spread //very OP, but im out of other ideas currently - name = "agressive spreading" +/datum/spacevine_mutation/aggressive_spread //very OP, but im out of other ideas currently + name = "aggressive spreading" hue = "777777" -/datum/spacevine_mutation/agressive_spread/on_spread(obj/effect/spacevine/holder, turf/target) +/datum/spacevine_mutation/aggressive_spread/on_spread(obj/effect/spacevine/holder, turf/target) for(var/atom/A in target) - A.ex_act(severity) + if(!istype(A, /obj/effect)) + A.ex_act(severity) //To not be the same as self-eating vine /datum/spacevine_mutation/agressive_spread/on_buckle(obj/effect/spacevine/holder, mob/living/buckled) buckled.ex_act(severity)