From 9f342be1a550612516a20f8b9dc19856cdea59e9 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Wed, 15 Feb 2017 02:30:19 -0800 Subject: [PATCH 1/2] Kudzu is now more intelligent about where it tries to grow This makes it spread monstrously fast; none shall be spared. This might be better as a specific mutation, instead of standard, extremely deadly behavior --- code/modules/events/spacevine.dm | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index d5d581a814b..e2772398ee0 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -150,6 +150,7 @@ /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) + . = TRUE /datum/spacevine_mutation/light name = "light" @@ -218,6 +219,7 @@ var/obj/effect/spacevine/prey = locate() in target if(prey && !prey.mutations.Find(src)) //Eat all vines that are not of the same origin qdel(prey) + . = TRUE /datum/spacevine_mutation/aggressive_spread //very OP, but im out of other ideas currently name = "aggressive spreading" @@ -227,6 +229,7 @@ /datum/spacevine_mutation/aggressive_spread/on_spread(obj/effect/spacevine/holder, turf/target) target.ex_act(severity) // vine immunity handled at /mob/ex_act + . = TRUE /datum/spacevine_mutation/aggressive_spread/on_buckle(obj/effect/spacevine/holder, mob/living/buckled) buckled.ex_act(severity) @@ -532,15 +535,22 @@ buckle_mob(V, 1) /obj/effect/spacevine/proc/spread() - var/direction = pick(cardinal) - var/turf/stepturf = get_step(src,direction) - for(var/datum/spacevine_mutation/SM in mutations) - 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) + var/list/dir_list = cardinal.Copy() + while(dir_list.len) + var/direction = pick(dir_list) + dir_list -= direction + var/turf/stepturf = get_step(src,direction) + var/spread_success = FALSE + for(var/datum/spacevine_mutation/SM in mutations) + spread_success |= SM.on_spread(src, stepturf) // If this returns 1, spreading succeeded + 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) + spread_success = TRUE + if(spread_success) + break /obj/effect/spacevine/ex_act(severity) var/i From 5c0e2a43b3d272258caf0cc76f580c543fd32bd8 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Wed, 15 Feb 2017 07:17:21 -0800 Subject: [PATCH 2/2] Smart Kudzu is now a mutation, instead of standard behavior --- code/modules/events/spacevine.dm | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index e2772398ee0..d232342042a 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -66,6 +66,9 @@ /datum/spacevine_mutation/proc/on_explosion(severity, obj/effect/spacevine/holder) return +/datum/spacevine_mutation/proc/on_search(severity, obj/effect/spacevine/holder) + return + /datum/spacevine_mutation/space_covering name = "space protective" @@ -294,6 +297,14 @@ holder.entangle(crosser) +/datum/spacevine_mutation/virulent_spread + name = "virulently spreading" + hue = "#FF8080" + quality = MINOR_NEGATIVE + +/datum/spacevine_mutation/virulent_spread/on_search(obj/effect/spacevine/holder) + return 1 + // SPACE VINES (Note that this code is very similar to Biomass code) /obj/effect/spacevine name = "space vines" @@ -536,6 +547,9 @@ /obj/effect/spacevine/proc/spread() var/list/dir_list = cardinal.Copy() + var/spread_search = FALSE // Whether to exhaustive search all 4 cardinal dirs for an open direction + for(var/datum/spacevine_mutation/SM in mutations) + spread_search |= SM.on_search(src) while(dir_list.len) var/direction = pick(dir_list) dir_list -= direction @@ -543,13 +557,12 @@ var/spread_success = FALSE for(var/datum/spacevine_mutation/SM in mutations) spread_success |= SM.on_spread(src, stepturf) // If this returns 1, spreading succeeded - 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) spread_success = TRUE - if(spread_success) + if(spread_success || !spread_search) break /obj/effect/spacevine/ex_act(severity)