diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 40f290aa304..d6bf374fd6f 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -190,6 +190,8 @@ /datum/spacevine_mutation/fire_proof/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage) if(I && I.damtype == "fire") . = 0 + else + . = expected_damage /datum/spacevine_mutation/vine_eating name = "vine eating" @@ -294,11 +296,12 @@ M.adjustBruteLoss(5) M << "You cut yourself on the thorny vines." -/datum/spacevine_mutation/thorns/on_hit(obj/effect/spacevine/holder, mob/living/hitter) +/datum/spacevine_mutation/thorns/on_hit(obj/effect/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage) if(prob(severity) && istype(hitter)) var/mob/living/M = hitter M.adjustBruteLoss(5) M << "You cut yourself on the thorny vines." + . = expected_damage /datum/spacevine_mutation/woodening name = "hardened" @@ -308,15 +311,14 @@ /datum/spacevine_mutation/woodening/on_grow(obj/effect/spacevine/holder) if(holder.energy) holder.density = 1 + holder.maxhealth = 100 + holder.health = holder.maxhealth -/datum/spacevine_mutation/woodening/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage) - if(!expected_damage) - return - if(hitter) - if(I) - . = I.force * 2 - else - . = 8 +/datum/spacevine_mutation/woodening/on_hit(obj/effect/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage) + if(I.is_sharp()) + . = expected_damage * 0.5 + else + . = expected_damage /datum/spacevine_mutation/flowering name = "flowering" @@ -343,6 +345,8 @@ layer = SPACEVINE_LAYER mouse_opacity = 2 //Clicking anywhere on the turf is good enough pass_flags = PASSTABLE | PASSGRILLE + var/health = 50 + var/maxhealth = 50 var/energy = 0 var/obj/effect/spacevine_controller/master = null var/list/mutations = list() @@ -385,22 +389,33 @@ if (!W || !user || !W.type) return user.changeNext_move(CLICK_CD_MELEE) + var/force = W.force - var/override = W.force - if(W.is_sharp()) - override = 100 if(istype(W, /obj/item/weapon/scythe)) - var/local_override = override + force = force * 4 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) + B.health = health - force + if(B.health < 1) + qdel(B) + + health = health - force + + if(health < 1) + qdel(src) + + return + + if(W.is_sharp()) + force = force * 4 + + if(W && W.damtype == "fire") + force = force * 4 for(var/datum/spacevine_mutation/SM in mutations) - 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 + force = SM.on_hit(src, user, W, force) //on_hit now takes override damage as arg and returns new value for other mutations to permutate further - if(prob(override)) + health = health - force + if(health < 1) qdel(src) ..()