Merge pull request #16229 from MadmanMartian/biomass_scything

Can now use a scythe against biomass
This commit is contained in:
Rob Nelson
2017-10-13 09:42:08 -07:00
committed by GitHub
2 changed files with 20 additions and 11 deletions

View File

@@ -12,6 +12,7 @@
pass_flags = PASSTABLE | PASSGRILLE pass_flags = PASSTABLE | PASSGRILLE
var/energy = 0 var/energy = 0
var/obj/effect/biomass_controller/master = null var/obj/effect/biomass_controller/master = null
var/health = 15
/obj/effect/biomass/Destroy() /obj/effect/biomass/Destroy()
unreferenceMaster() unreferenceMaster()
@@ -28,21 +29,21 @@
if(prob(30)) if(prob(30))
user.visible_message("<span class = 'warning'>\The [user] cuts through \the [src] with \the [W]'s sharp edge.</span>",\ user.visible_message("<span class = 'warning'>\The [user] cuts through \the [src] with \the [W]'s sharp edge.</span>",\
"<span class = 'notice'>You cut through \the [src] with \the [W]'s sharp edge.</span>") "<span class = 'notice'>You cut through \the [src] with \the [W]'s sharp edge.</span>")
qdel(src) adjust_health(rand(5,15))
return return
if(W.sharpness_flags & (SERRATED_BLADE|CHOPWOOD)) //Guaranteed, but takes some work if(W.sharpness_flags & (SERRATED_BLADE|CHOPWOOD)) //Guaranteed, but takes some work
if(do_after(user, src, rand(10,30))) if(do_after(user, src, rand(10,30)))
if(prob(30)) if(prob(30))
user.visible_message("<span class = 'warning'>\The [user] chops through \the [src] with \the [W].</span>",\ user.visible_message("<span class = 'warning'>\The [user] chops through \the [src] with \the [W].</span>",\
"<span class = 'notice'>You saw through \the [src].</span>") "<span class = 'notice'>You saw through \the [src].</span>")
qdel(src) adjust_health(rand(25,50))
return return
if(W.sharpness_flags & HOT_EDGE) if(W.sharpness_flags & HOT_EDGE)
if(do_after(user, src, rand(5,15))) //Guaranteed, rarer sharpness flag so less time taken if(do_after(user, src, rand(5,15))) //Guaranteed, rarer sharpness flag so less time taken
if(prob(30)) if(prob(30))
user.visible_message("<span class = 'warning'>\The [user] sears through \the [src] with \the [W].</span>",\ user.visible_message("<span class = 'warning'>\The [user] sears through \the [src] with \the [W].</span>",\
"<span class = 'notice'>You use \the [W]'s hot edge to burn through \the [src].</span>") "<span class = 'notice'>You use \the [W]'s hot edge to burn through \the [src].</span>")
qdel(src) adjust_health(rand(20,35))
return return
var/weapon_temp = W.is_hot() var/weapon_temp = W.is_hot()
if(weapon_temp >= AUTOIGNITION_WOOD)//Yes it's not technically wood, but fibrous chitin's pretty close when held above a flame if(weapon_temp >= AUTOIGNITION_WOOD)//Yes it's not technically wood, but fibrous chitin's pretty close when held above a flame
@@ -51,7 +52,7 @@
if(prob(30)) if(prob(30))
user.visible_message("<span class = 'warning'>\The [user] burns away \the [src] with \the [W].</span>",\ user.visible_message("<span class = 'warning'>\The [user] burns away \the [src] with \the [W].</span>",\
"<span class = 'notice'>You use \the [W] to burn away \the [src].</span>") "<span class = 'notice'>You use \the [W] to burn away \the [src].</span>")
qdel(src) adjust_health(rand(40,70))
return return
..() ..()
@@ -59,10 +60,17 @@
if(energy <= 0) if(energy <= 0)
icon_state = "stage2" icon_state = "stage2"
energy = 1 energy = 1
adjust_health(-30)
else else
icon_state = "stage3" icon_state = "stage3"
density = 1 density = 1
energy = 2 energy = 2
adjust_health(-30)
/obj/effect/biomass/proc/adjust_health(var/amount)
health -= amount
if(health <= 0)
qdel(src)
/obj/effect/biomass/proc/spread() /obj/effect/biomass/proc/spread()
var/location = get_step_rand(src) var/location = get_step_rand(src)
@@ -80,16 +88,15 @@
/obj/effect/biomass/ex_act(severity) /obj/effect/biomass/ex_act(severity)
switch(severity) switch(severity)
if(1.0) if(1.0)
qdel(src) adjust_health(100)
if(2.0) if(2.0)
if(prob(90)) adjust_health(65)
qdel(src)
if(3.0) if(3.0)
if(prob(50)) adjust_health(25)
qdel(src)
/obj/effect/biomass/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) //hotspots kill biomass /obj/effect/biomass/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) //hotspots kill biomass
qdel(src) if(exposed_temperature >= AUTOIGNITION_WOOD)
adjust_health(70)
/obj/effect/biomass_controller /obj/effect/biomass_controller
invisibility = 60 // ghost only invisibility = 60 // ghost only

View File

@@ -457,9 +457,11 @@
/obj/item/weapon/scythe/afterattack(atom/A, mob/user as mob, proximity) /obj/item/weapon/scythe/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity) if(!proximity)
return return
if(istype(A, /obj/effect/plantsegment) || istype(A, /turf/simulated/floor)) if(istype(A, /obj/effect/plantsegment) || istype(A, /turf/simulated/floor) || istype(A, /obj/effect/biomass))
for(var/obj/effect/plantsegment/B in range(user,1)) for(var/obj/effect/plantsegment/B in range(user,1))
B.take_damage(src) B.take_damage(src)
for(var/obj/effect/biomass/BM in range(user,1))
BM.adjust_health(rand(15,45))
user.delayNextAttack(10) user.delayNextAttack(10)
/*var/olddir = user.dir /*var/olddir = user.dir
spawn for(var/i=-2, i<=2, i++) //hheeeehehe i'm so dumb spawn for(var/i=-2, i<=2, i++) //hheeeehehe i'm so dumb