From c0273fc8cb6d4d9ffc20bf74664bbafbc6fdf0cf Mon Sep 17 00:00:00 2001 From: Razharas Date: Sat, 11 Jun 2016 03:23:03 +0300 Subject: [PATCH] Refactors kudzu on_hit processing, fixes bug Refactors kudzu on_hit processing, fixes bug --- code/modules/events/spacevine.dm | 57 +++++++++++++------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 3794875dd68..68b18d0f607 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -43,8 +43,8 @@ /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_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage) + . = expected_damage /datum/spacevine_mutation/proc/on_cross(obj/effect/spacevine/holder, mob/crosser) return @@ -188,6 +188,10 @@ /datum/spacevine_mutation/fire_proof/process_temperature(obj/effect/spacevine/holder, temp, volume) return 1 +/datum/spacevine_mutation/fire_proof/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage) + if(I && I.damtype == "fire") + . = 0 + /datum/spacevine_mutation/vine_eating name = "vine eating" hue = "#ff7700" @@ -306,17 +310,14 @@ if(holder.energy) holder.density = 1 -/datum/spacevine_mutation/woodening/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I) +/datum/spacevine_mutation/woodening/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage) + if(!expected_damage) + return if(hitter) - var/chance if(I) - chance = I.force * 2 + . = I.force * 2 else - chance = 8 - if(prob(chance)) - qdel(holder) - return 1 - + . = 8 /datum/spacevine_mutation/flowering name = "flowering" @@ -324,17 +325,14 @@ quality = NEGATIVE severity = 10 - /datum/spacevine_mutation/flowering/on_grow(obj/effect/spacevine/holder) if(holder.energy == 2 && prob(severity) && !locate(/obj/structure/alien/resin/flower_bud_enemy) in range(5,holder)) new/obj/structure/alien/resin/flower_bud_enemy(get_turf(holder)) - /datum/spacevine_mutation/flowering/on_cross(obj/effect/spacevine/holder, mob/living/crosser) holder.entangle(crosser) - // SPACE VINES (Note that this code is very similar to Biomass code) /obj/effect/spacevine name = "space vines" @@ -389,32 +387,23 @@ return user.changeNext_move(CLICK_CD_MELEE) - var/override = 0 + var/override = W.force + if(W.is_sharp()) + override = 100 + if(istype(W, /obj/item/weapon/scythe)) + var/local_override = override + for(var/obj/effect/spacevine/B in orange(1,src)) + for(var/datum/spacevine_mutation/SM in mutations) + local_override = SM.on_hit(src, user, W, local_override) + if(prob(local_override)) + qdel(B) for(var/datum/spacevine_mutation/SM in mutations) - override += SM.on_hit(src, user) + override = SM.on_hit(src, user, W, override) //on_hit now takes override damage as arg and returns new value for other mutations to permutate further - if(override) - ..() - return - - if(istype(W, /obj/item/weapon/scythe)) - for(var/obj/effect/spacevine/B in orange(1,src)) - if(prob(80)) - qdel(B) + if(prob(override)) qdel(src) - else if(W.is_sharp()) - qdel(src) - - else if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.remove_fuel(0, user)) - qdel(src) - else - user_unbuckle_mob(user,user) - return - //Plant-b-gone damage is handled in its entry in chemistry-reagents.dm ..() /obj/effect/spacevine/Crossed(mob/crosser)