From 7571189a359e498957d3b6e737b6b6f93cca0012 Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 13 Feb 2015 01:13:13 +0300 Subject: [PATCH 1/5] More vines for the god of vines Added bluespace vines that are able to grow through walls, glass and anything and everything Added space-protective vines that change the space into "vineturfs" which are basically resprited floors Made vines be able to spread into space Changed some vinecontroller vars, now you can adjust the speed of spreading both by capping the max vines per tick and new-vines to existing-vines spread ratio Made the chance to mutate per spread be dependant on the potency of the seed Made the spreading speed be dependant on productivity of the seed(can be both slower and faster then current one) Fixed some potential runtimes with calling destroy() instead of qdel() where needed Removed the colon added by carn, its all checked in Enter call few lines later anyway I like vines --- code/modules/events/spacevine.dm | 127 ++++++++++++++++++------------ code/modules/hydroponics/grown.dm | 1 - code/modules/hydroponics/seeds.dm | 5 +- icons/turf/floors.dmi | Bin 350853 -> 353218 bytes 4 files changed, 77 insertions(+), 56 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index e1d9486c63c..86010e1f9b8 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -55,6 +55,38 @@ /datum/spacevine_mutation/proc/on_buckle(obj/effect/spacevine/holder, mob/living/buckled) return + +/datum/spacevine_mutation/space_covering + name = "space protective" + hue = "#aa77aa" + +/turf/simulated/floor/vines + color = "#aa77aa" + icon_state = "vinefloor" + +/datum/spacevine_mutation/space_covering/on_grow(obj/effect/spacevine/holder) + if(istype(holder.loc, /turf/space)) + var/turf/spaceturf = holder.loc + spaceturf.ChangeTurf(/turf/simulated/floor/vines) + +/datum/spacevine_mutation/space_covering/process_mutation(obj/effect/spacevine/holder) + if(istype(holder.loc, /turf/space)) + var/turf/spaceturf = holder.loc + spaceturf.ChangeTurf(/turf/simulated/floor/vines) + +/datum/spacevine_mutation/space_covering/on_death(obj/effect/spacevine/holder) + if(istype(holder.loc, /turf/simulated/floor/vines)) + var/turf/spaceturf = holder.loc + spaceturf.ChangeTurf(/turf/space) + +/datum/spacevine_mutation/bluespace + name = "bluespace" + hue = "#3333ff" + +/datum/spacevine_mutation/bluespace/on_spread(obj/effect/spacevine/holder, turf/target) + if(holder.energy > 1 && !locate(/obj/effect/spacevine) in target) + holder.master.spawn_spacevine_piece(target, holder) + /datum/spacevine_mutation/light name = "light" hue = "#ffff00" @@ -66,13 +98,13 @@ /datum/spacevine_mutation/toxicity name = "toxic" hue = "#ff00ff" + severity = 10 /datum/spacevine_mutation/toxicity/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." + if(prob(severity) && istype(crosser)) + crosser << "You accidently touch the vine and feel a strange sensation." crosser.adjustToxLoss(5) /datum/spacevine_mutation/toxicity/on_eat(obj/effect/spacevine/holder, mob/living/eater) @@ -100,7 +132,7 @@ /datum/spacevine_mutation/vine_eating/on_spread(obj/effect/spacevine/holder, turf/target) var/obj/effect/spacevine/prey = locate() in target if(prey && !prey.mutations.Find(src)) //Eat all vines that are not of the same origin - prey.Destroy() + qdel(prey) /datum/spacevine_mutation/aggressive_spread //very OP, but im out of other ideas currently name = "aggressive spreading" @@ -126,9 +158,10 @@ /datum/spacevine_mutation/oxy_eater name = "oxygen consuming" hue = "#ffff88" + severity = 3 /datum/spacevine_mutation/oxy_eater/process_mutation(obj/effect/spacevine/holder) - var/turf/simulated/T = holder.loc + var/turf/simulated/floor/T = holder.loc if(istype(T)) var/datum/gas_mixture/GM = T.air GM.oxygen = max(0, GM.oxygen - severity * holder.energy) @@ -136,9 +169,10 @@ /datum/spacevine_mutation/nitro_eater name = "nitrogen consuming" hue = "#8888ff" + severity = 3 /datum/spacevine_mutation/nitro_eater/process_mutation(obj/effect/spacevine/holder) - var/turf/simulated/T = holder.loc + var/turf/simulated/floor/T = holder.loc if(istype(T)) var/datum/gas_mixture/GM = T.air GM.nitrogen = max(0, GM.nitrogen - severity * holder.energy) @@ -146,9 +180,10 @@ /datum/spacevine_mutation/carbondioxide_eater name = "CO2 consuming" hue = "#00ffff" + severity = 3 /datum/spacevine_mutation/carbondioxide_eater/process_mutation(obj/effect/spacevine/holder) - var/turf/simulated/T = holder.loc + var/turf/simulated/floor/T = holder.loc if(istype(T)) var/datum/gas_mixture/GM = T.air GM.carbon_dioxide = max(0, GM.carbon_dioxide - severity * holder.energy) @@ -156,9 +191,10 @@ /datum/spacevine_mutation/plasma_eater name = "toxins consuming" hue = "#ffbbff" + severity = 3 /datum/spacevine_mutation/plasma_eater/process_mutation(obj/effect/spacevine/holder) - var/turf/simulated/T = holder.loc + var/turf/simulated/floor/T = holder.loc if(istype(T)) var/datum/gas_mixture/GM = T.air GM.toxins = max(0, GM.toxins - severity * holder.energy) @@ -166,21 +202,22 @@ /datum/spacevine_mutation/thorns name = "thorny" hue = "#666666" + severity = 10 -/datum/spacevine_mutation/thorns/on_cross(obj/effect/spacevine/holder, crosser) - if(isliving(crosser) && prob(severity)) +/datum/spacevine_mutation/thorns/on_cross(obj/effect/spacevine/holder, mob/living/crosser) + if(prob(severity) && istype(crosser)) var/mob/living/M = crosser M.adjustBruteLoss(5) M << "You cut yourself on the thorny vines." -/datum/spacevine_mutation/thorns/on_hit(obj/effect/spacevine/holder, hitter) - if(ismob(hitter) && prob(severity)) +/datum/spacevine_mutation/thorns/on_hit(obj/effect/spacevine/holder, mob/living/hitter) + if(prob(severity) && istype(hitter)) var/mob/living/M = hitter M.adjustBruteLoss(5) M << "You cut yourself on the thorny vines." /datum/spacevine_mutation/woodening - name = "hardening" + name = "hardened" hue = "#997700" /datum/spacevine_mutation/woodening/on_grow(obj/effect/spacevine/holder) @@ -195,7 +232,7 @@ else chance = 8 if(prob(chance)) - holder.Destroy() + qdel(holder) return 1 @@ -225,6 +262,8 @@ if(!master.vines.len) var/obj/item/seeds/kudzuseed/KZ = new(loc) KZ.mutations |= mutations + KZ.potency = min(100, master.mutativness * 10) + KZ.production = (master.spread_cap / initial(master.spread_cap)) * 50 mutations = list() SetOpacity(0) ..() @@ -235,7 +274,7 @@ override += SM.on_chem(src, R) if(!override && istype(R, /datum/reagent/toxin/plantbgone)) if(prob(50)) - Destroy() + qdel(src) /obj/effect/spacevine/proc/eat(mob/eater) var/override = 0 @@ -244,7 +283,7 @@ if(!override) if(prob(10)) eater.say("Nom") - Destroy() + qdel(src) /obj/effect/spacevine/attackby(obj/item/weapon/W as obj, mob/user as mob) if (!W || !user || !W.type) return @@ -311,22 +350,20 @@ /obj/effect/spacevine_controller var/list/obj/effect/spacevine/vines = list() var/list/growth_queue = list() - var/reached_collapse_size - var/reached_slowdown_size + var/spread_multiplier = 5 + var/spread_cap = 30 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. - -/obj/effect/spacevine_controller/New(loc, list/muts, mttv) - if(!istype(loc, /turf/simulated) || loc:density) - qdel(src) +/obj/effect/spacevine_controller/New(loc, list/muts, mttv, spreading) spawn_spacevine_piece(loc, , muts) SSobj.processing.Add(src) init_subtypes(/datum/spacevine_mutation/, mutations_list) if(mttv != null) - mutativness = mttv + mutativness = mttv / 10 + if(spreading != null) + spread_cap *= spreading / 50 + spread_multiplier /= spreading / 50 /obj/effect/spacevine_controller/Destroy() SSobj.processing.Remove(src) @@ -362,26 +399,15 @@ if(!growth_queue) qdel(src) //Sanity check return - if(vines.len >= 250 && !reached_collapse_size) - reached_collapse_size = 1 - if(vines.len >= 30 && !reached_slowdown_size ) - reached_slowdown_size = 1 var/length = 0 - if(reached_collapse_size) - length = 0 - else if(reached_slowdown_size) - if(prob(25)) - length = 1 - else - length = 0 - else - length = 1 - length = min( 30 , max( length , vines.len / 5 ) ) + + length = min( spread_cap , max( 1 , vines.len / spread_multiplier ) ) var/i = 0 var/list/obj/effect/spacevine/queue_end = list() for( var/obj/effect/spacevine/SV in growth_queue ) + if(SV.gc_destroyed) continue i++ queue_end += SV growth_queue -= SV @@ -427,15 +453,14 @@ /obj/effect/spacevine/proc/spread() var/direction = pick(cardinal) - var/step = get_step(src,direction) + var/turf/stepturf = get_step(src,direction) for(var/datum/spacevine_mutation/SM in mutations) - SM.on_spread(src, step) - if(istype(step,/turf/simulated) && !step:density) - var/turf/simulated/F = step - if(!locate(/obj/effect/spacevine,F)) - if(F.Enter(src)) - if(master) - master.spawn_spacevine_piece(F, src) + SM.on_spread(src, stepturf) + stepturf = get_step(src,direction) //in case turf changes, to make sure no runtimes happen + if(!locate(/obj/effect/spacevine, stepturf)) + if(stepturf.Enter(src)) + if(master) + master.spawn_spacevine_piece(stepturf, src) /* /obj/effect/spacevine/proc/Life() @@ -474,15 +499,15 @@ /obj/effect/spacevine/ex_act(severity, target) switch(severity) if(1.0) - Destroy() + qdel(src) return if(2.0) if (prob(90)) - Destroy() + qdel(src) return if(3.0) if (prob(50)) - Destroy() + qdel(src) return return @@ -491,4 +516,4 @@ for(var/datum/spacevine_mutation/SM in mutations) override += SM.process_temperature(src, temp, volume) if(!override) - Destroy() \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 00926b153d0..80e707c43a8 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -859,7 +859,6 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() 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 filling_color = "#6B8E23" /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod/add_juice() diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 0fb1587d716..910cdbb31bc 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -1073,25 +1073,22 @@ 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) + new /obj/effect/spacevine_controller(user.loc, mutations, potency, production) qdel(src) /obj/item/seeds/chilighost diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index d9d349900ad13ebc801ae4f1a16e5a06ec9ef383..e266268a6f8dcbe662cc78e5ef75199d131e33dc 100644 GIT binary patch delta 26396 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 Date: Wed, 18 Feb 2015 01:27:52 +0300 Subject: [PATCH 2/5] Made vines cultivatable Added special proc to all seeds that give plant anazyler special information if needed in form of list of strings that will be displayed to user one by one Added special proc to seeds that make them have some special chem interactions on growth if needed Made vine mutations have quality of either good, bad or neutral Made some chems remove the mutations of certain quality from growing seeds Made some chems tweak potency and production of the growing vine seeds both ways so you can make unmutatable slowly growing vines if needed Vine seeds now show mutations on the plant analyzing Cut some copypaste in analyzer proc --- code/modules/events/spacevine.dm | 18 ++++++++- code/modules/hydroponics/hydroponics.dm | 24 ++++++------ code/modules/hydroponics/seeds.dm | 51 +++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 13 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 79c8ec31bdb..7dd40009dd5 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -21,6 +21,7 @@ var/name = "" var/severity = 1 var/hue + var/quality /datum/spacevine_mutation/proc/process_mutation(obj/effect/spacevine/holder) return @@ -59,6 +60,7 @@ /datum/spacevine_mutation/space_covering name = "space protective" hue = "#aa77aa" + quality = POSITIVE /turf/simulated/floor/vines color = "#aa77aa" @@ -82,6 +84,7 @@ /datum/spacevine_mutation/bluespace name = "bluespace" hue = "#3333ff" + quality = MINOR_NEGATIVE /datum/spacevine_mutation/bluespace/on_spread(obj/effect/spacevine/holder, turf/target) if(holder.energy > 1 && !locate(/obj/effect/spacevine) in target) @@ -90,6 +93,7 @@ /datum/spacevine_mutation/light name = "light" hue = "#ffff00" + quality = POSITIVE /datum/spacevine_mutation/light/on_grow(obj/effect/spacevine/holder) if(prob(10*severity)) @@ -99,6 +103,7 @@ name = "toxic" hue = "#ff00ff" severity = 10 + quality = NEGATIVE /datum/spacevine_mutation/toxicity/on_cross(obj/effect/spacevine/holder, mob/living/crosser) if(issilicon(crosser)) @@ -113,6 +118,7 @@ /datum/spacevine_mutation/explosive //OH SHIT IT CAN CHAINREACT RUN!!! name = "explosive" hue = "#ff0000" + quality = NEGATIVE /datum/spacevine_mutation/explosive/on_death(obj/effect/spacevine/holder, mob/hitter, obj/item/I) sleep(10) @@ -121,6 +127,7 @@ /datum/spacevine_mutation/fire_proof name = "fire proof" hue = "#ff8888" + quality = MINOR_NEGATIVE /datum/spacevine_mutation/fire_proof/process_temperature(obj/effect/spacevine/holder, temp, volume) return 1 @@ -128,6 +135,7 @@ /datum/spacevine_mutation/vine_eating name = "vine eating" hue = "#ff7700" + quality = MINOR_NEGATIVE /datum/spacevine_mutation/vine_eating/on_spread(obj/effect/spacevine/holder, turf/target) var/obj/effect/spacevine/prey = locate() in target @@ -138,6 +146,7 @@ name = "aggressive spreading" hue = "#333333" severity = 3 + quality = NEGATIVE /datum/spacevine_mutation/aggressive_spread/on_spread(obj/effect/spacevine/holder, turf/target) for(var/atom/A in target) @@ -150,6 +159,7 @@ /datum/spacevine_mutation/transparency name = "transparent" hue = "" + quality = POSITIVE /datum/spacevine_mutation/transparency/on_grow(obj/effect/spacevine/holder) holder.SetOpacity(0) @@ -159,6 +169,7 @@ name = "oxygen consuming" hue = "#ffff88" severity = 3 + quality = NEGATIVE /datum/spacevine_mutation/oxy_eater/process_mutation(obj/effect/spacevine/holder) var/turf/simulated/floor/T = holder.loc @@ -170,6 +181,7 @@ name = "nitrogen consuming" hue = "#8888ff" severity = 3 + quality = NEGATIVE /datum/spacevine_mutation/nitro_eater/process_mutation(obj/effect/spacevine/holder) var/turf/simulated/floor/T = holder.loc @@ -181,6 +193,7 @@ name = "CO2 consuming" hue = "#00ffff" severity = 3 + quality = POSITIVE /datum/spacevine_mutation/carbondioxide_eater/process_mutation(obj/effect/spacevine/holder) var/turf/simulated/floor/T = holder.loc @@ -192,6 +205,7 @@ name = "toxins consuming" hue = "#ffbbff" severity = 3 + quality = POSITIVE /datum/spacevine_mutation/plasma_eater/process_mutation(obj/effect/spacevine/holder) var/turf/simulated/floor/T = holder.loc @@ -203,6 +217,7 @@ name = "thorny" hue = "#666666" severity = 10 + quality = NEGATIVE /datum/spacevine_mutation/thorns/on_cross(obj/effect/spacevine/holder, mob/living/crosser) if(prob(severity) && istype(crosser)) @@ -219,6 +234,7 @@ /datum/spacevine_mutation/woodening name = "hardened" hue = "#997700" + quality = NEGATIVE /datum/spacevine_mutation/woodening/on_grow(obj/effect/spacevine/holder) if(holder.energy) @@ -516,4 +532,4 @@ for(var/datum/spacevine_mutation/SM in mutations) override += SM.process_temperature(src, temp, volume) if(!override) - qdel(src) + qdel(src) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 200a6349dfa..a3e2a5abe1a 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -402,6 +402,8 @@ obj/machinery/hydroponics/proc/mutatepest() obj/machinery/hydroponics/proc/applyChemicals(var/datum/reagents/S) + myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines + // Requires 5 mutagen to possibly change species.// Poor man's mutagen. if(S.has_reagent("mutagen", 5) || S.has_reagent("radium", 10) || S.has_reagent("uranium", 10)) switch(rand(100)) @@ -671,20 +673,18 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) user << "-Plant Production: [myseed.production]" if(myseed.potency != -1) user << "-Plant Potency: [myseed.potency]" - user << "-Weed level: [weedlevel] / 10" - user << "-Pest level: [pestlevel] / 10" - user << "-Toxicity level: [toxic] / 100" - user << "-Water level: [waterlevel] / [maxwater]" - user << "-Nutrition level: [nutrilevel] / [maxnutri]" - user << "" + var/list/text_strings = myseed.get_analyzer_text() + if(text_strings) + for(var/string in text_strings) + user << string else user << "No plant found." - user << "-Weed level: [weedlevel] / 10" - user << "-Pest level: [pestlevel] / 10" - user << "-Toxicity level: [toxic] / 100" - user << "-Water level: [waterlevel] / [maxwater]" - user << "-Nutrition level: [nutrilevel] / [maxnutri]" - user << "" + user << "-Weed level: [weedlevel] / 10" + user << "-Pest level: [pestlevel] / 10" + user << "-Toxicity level: [toxic] / 100" + user << "-Water level: [waterlevel] / [maxwater]" + user << "-Nutrition level: [nutrilevel] / [maxnutri]" + user << "" else if(istype(O, /obj/item/weapon/minihoe)) if(weedlevel > 0) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 910cdbb31bc..3a815f34c6f 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -27,6 +27,12 @@ pixel_x = rand(-8, 8) pixel_y = rand(-8, 8) +/obj/item/seeds/proc/get_analyzer_text() //in case seeds have something special to tell to the analyzer + return + +/obj/item/seeds/proc/on_chem_reaction(var/datum/reagents/S) //in case seeds have some special interaction with special chems + return + /obj/item/seeds/attackby(var/obj/item/O as obj, var/mob/user as mob) if (istype(O, /obj/item/device/analyzer/plant_analyzer)) user << "*** [plantname] ***" @@ -38,6 +44,10 @@ user << "-Plant Production: [production]" if(potency != -1) user << "-Plant Potency: [potency]" + var/list/text_strings = get_analyzer_text() + if(text_strings) + for(var/string in text_strings) + user << string return ..() // Fallthrough to item/attackby() so that bags can pick seeds up @@ -1091,6 +1101,47 @@ new /obj/effect/spacevine_controller(user.loc, mutations, potency, production) qdel(src) +/obj/item/seeds/kudzuseed/get_analyzer_text() + var/list/mut_text = list() + var/text_string = "" + for(var/datum/spacevine_mutation/SM in mutations) + text_string += "[(text_string == "") ? "" : ", "][SM.name]" + mut_text += "-Plant Mutations: [(text_string == "") ? "None" : text_string]" + return mut_text + +/obj/item/seeds/kudzuseed/on_chem_reaction(var/datum/reagents/S) + + var/list/temp_mut_list = list() + + if(S.has_reagent("sterilizine", 5)) + for(var/datum/spacevine_mutation/SM in mutations) + if(SM.quality == NEGATIVE) + temp_mut_list += SM + if(prob(20)) + mutations.Remove(pick(temp_mut_list)) + temp_mut_list.Cut() + if(S.has_reagent("fuel", 5)) + for(var/datum/spacevine_mutation/SM in mutations) + if(SM.quality == POSITIVE) + temp_mut_list += SM + if(prob(20)) + mutations.Remove(pick(temp_mut_list)) + temp_mut_list.Cut() + if(S.has_reagent("phenol", 5)) + for(var/datum/spacevine_mutation/SM in mutations) + if(SM.quality == MINOR_NEGATIVE) + temp_mut_list += SM + if(prob(20)) + mutations.Remove(pick(temp_mut_list)) + if(S.has_reagent("blood", 15)) + production += rand(15, -5) + if(S.has_reagent("amatoxin", 5)) + production += rand(5, -15) + if(S.has_reagent("plasma", 5)) + potency += rand(5, -15) + if(S.has_reagent("holywater", 10)) + potency += rand(15, -5) + /obj/item/seeds/chilighost name = "pack of ghost chili seeds" desc = "These seeds grow into a chili said to be the hottest in the galaxy." From 5efd05ec00e387a1b244cf0d7dea993c66553e3a Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 19 Feb 2015 01:48:12 +0300 Subject: [PATCH 3/5] Changelog and vineturf sanity checks Added changelog and disabled most of floor procs for vines --- code/modules/events/spacevine.dm | 35 ++++++++++++++++++++++++++++++++ html/changelogs/Razharas.yml | 15 ++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 html/changelogs/Razharas.yml diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 7dd40009dd5..5666e57fc2a 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -65,6 +65,41 @@ /turf/simulated/floor/vines color = "#aa77aa" icon_state = "vinefloor" + broken_states = list() + ignoredirt = 1 + + +//All of this shit is useless for vines + +/turf/simulated/floor/vines/attackby() + return + +/turf/simulated/floor/vines/burn_tile() + return + +/turf/simulated/floor/vines/break_tile() + return + +/turf/simulated/floor/vines/make_plating() + return + +/turf/simulated/floor/vines/break_tile_to_plating() + return + +/turf/simulated/floor/vines/narsie_act() + if(prob(20)) + ChangeTurf(/turf/space) //nar sie eats this shit + +/turf/simulated/floor/vines/singularity_pull(S, current_size) + if(current_size >= STAGE_FIVE) + if(prob(50)) + ChangeTurf(/turf/space) + +/turf/simulated/floor/vines/ChangeTurf(turf/simulated/floor/T) + for(var/obj/effect/spacevine/SV in src) + qdel(src) + ..() + /datum/spacevine_mutation/space_covering/on_grow(obj/effect/spacevine/holder) if(istype(holder.loc, /turf/space)) diff --git a/html/changelogs/Razharas.yml b/html/changelogs/Razharas.yml new file mode 100644 index 00000000000..b7f2e8aaf79 --- /dev/null +++ b/html/changelogs/Razharas.yml @@ -0,0 +1,15 @@ + +author: Razharas + +delete-after: False + +changes: + - rscadd: "Vines now can grow on any tiles that is not dense, including space, shuttles, centcomm tiles and so on." + - rscadd: "Added 'Bluespace' mutation to vines, makes them be able to grow through absolutely everything." + - rscadd: "Added 'Space Proofing' mutation to vines, after they grow if the tile under them is space it will become special vinetile, which is just resprited regular floor, if the vine on the vinetile dies the vineturf changes back to space." + - rscadd: "Made vines spreading speed depend on the seed's production, can be both slower and faster than current." + - rscadd: "Made vines mutation chance be 1/10th of the potency of the seed it is spawned from." + - rscadd: "Special chemicals added to vine seeds durning their growth can increase/decrease their potency and productivity." + - rscadd: "Special chemicals now can remove good, bad or neutral mutations from vine seeds while they are growing, cultivating actually helpful vines is now possible." + - rscadd: "Plant analyzers now show the vine seeds mutations." + - tweak: "Buffed numbers in some of the more useless mutations." \ No newline at end of file From ac4b8f6d42dc5c56adf1ab013d8db94abb542e86 Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 24 Feb 2015 00:06:28 +0300 Subject: [PATCH 4/5] Fixes unincluded files Fixes unincluded files --- tgstation.dme | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 7b389919821..05330a54d85 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -503,7 +503,6 @@ #include "code\game\objects\effects\aliens.dm" #include "code\game\objects\effects\anomalies.dm" #include "code\game\objects\effects\bump_teleporter.dm" -#include "code\game\objects\effects\effect_system.dm" #include "code\game\objects\effects\explosion_particles.dm" #include "code\game\objects\effects\forcefields.dm" #include "code\game\objects\effects\gibs.dm" @@ -526,6 +525,12 @@ #include "code\game\objects\effects\decals\Cleanable\humans.dm" #include "code\game\objects\effects\decals\Cleanable\misc.dm" #include "code\game\objects\effects\decals\Cleanable\robots.dm" +#include "code\game\objects\effects\effect_system\effect_system.dm" +#include "code\game\objects\effects\effect_system\effects_foam.dm" +#include "code\game\objects\effects\effect_system\effects_other.dm" +#include "code\game\objects\effects\effect_system\effects_smoke.dm" +#include "code\game\objects\effects\effect_system\effects_sparks.dm" +#include "code\game\objects\effects\effect_system\effects_water.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" #include "code\game\objects\effects\spawners\lootdrop.dm" @@ -657,6 +662,7 @@ #include "code\game\objects\items\weapons\tanks\tank_types.dm" #include "code\game\objects\items\weapons\tanks\tanks.dm" #include "code\game\objects\items\weapons\tanks\watertank.dm" +#include "code\game\objects\structures\barsigns.dm" #include "code\game\objects\structures\bedsheet_bin.dm" #include "code\game\objects\structures\displaycase.dm" #include "code\game\objects\structures\door_assembly.dm" From 4a962b546bbc4b600bf6a177d21fd6fba2de52ee Mon Sep 17 00:00:00 2001 From: Razharas Date: Wed, 25 Feb 2015 15:09:32 +0300 Subject: [PATCH 5/5] Fixes runtimes Fixes runtimes and explosive vines being pants on head retarded --- code/modules/events/spacevine.dm | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 5666e57fc2a..ebf4867cb2a 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -86,6 +86,10 @@ /turf/simulated/floor/vines/break_tile_to_plating() return +/turf/simulated/floor/vines/ex_act(severity, target) + if(severity < 3 || target == src) + ChangeTurf(/turf/space) + /turf/simulated/floor/vines/narsie_act() if(prob(20)) ChangeTurf(/turf/space) //nar sie eats this shit @@ -97,9 +101,9 @@ /turf/simulated/floor/vines/ChangeTurf(turf/simulated/floor/T) for(var/obj/effect/spacevine/SV in src) - qdel(src) + qdel(SV) ..() - + UpdateAffectingLights() /datum/spacevine_mutation/space_covering/on_grow(obj/effect/spacevine/holder) if(istype(holder.loc, /turf/space)) @@ -114,7 +118,8 @@ /datum/spacevine_mutation/space_covering/on_death(obj/effect/spacevine/holder) if(istype(holder.loc, /turf/simulated/floor/vines)) var/turf/spaceturf = holder.loc - spaceturf.ChangeTurf(/turf/space) + spawn(0) + spaceturf.ChangeTurf(/turf/space) /datum/spacevine_mutation/bluespace name = "bluespace" @@ -156,8 +161,10 @@ quality = NEGATIVE /datum/spacevine_mutation/explosive/on_death(obj/effect/spacevine/holder, mob/hitter, obj/item/I) - sleep(10) - explosion(holder.loc, 0, 0, 2, 0, 0) + var/turf/T = holder.loc + src = T + spawn(10) + explosion(T, 0, 0, 2, 0, 0) /datum/spacevine_mutation/fire_proof name = "fire proof" @@ -416,6 +423,15 @@ spread_cap *= spreading / 50 spread_multiplier /= spreading / 50 +/obj/effect/spacevine_controller/ex_act() //only killing all vines will end this suffering + return + +/obj/effect/spacevine_controller/singularity_act() + return + +/obj/effect/spacevine_controller/singularity_pull() + return + /obj/effect/spacevine_controller/Destroy() SSobj.processing.Remove(src) ..()