Refactors kudzu on_hit processing, fixes bug

Refactors kudzu on_hit processing, fixes bug
This commit is contained in:
Razharas
2016-06-11 03:23:03 +03:00
parent 4f1415b88d
commit c0273fc8cb
+23 -34
View File
@@ -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)