[MIRROR] Implements Plant Biotype (#4401)

* Implements Plant Biotype (#57108)

Implements a plant biotype for plant based mobs. Changes the wood golem mob to be an organic, humanoid, and plant biotype---because wood is an organic substance, not a mineral.

This additionally adds the ability for plantbgone/weedkiller to deal damage to plant biotypes.
Why It's Good For The Game

There's a curious lack of a defined plant biotype, despite plants sharing a unique number of traits. Ideally, this behavior can be more consistently implemented with something like biotypes. A minor example of this is utilized in this PR: weedkiller and plantbgone impacting plant-like mobs, which is what you'd expect.
Changelog

cl
add: Plant-like mobs are now impacted and take damage from plant-b-gone and weedkiller reagents
add: Plant-like mobs can be health scanned with a plant analyzer
add: Plant-like mobs are impacted by the floral gun in the same manner pod people are
/cl

* Implements Plant Biotype

Co-authored-by: Fox McCloud <Fox-McCloud@users.noreply.github.com>
This commit is contained in:
SkyratBot
2021-03-25 21:31:29 +00:00
committed by GitHub
co-authored by Fox McCloud
parent 3ce603a5e6
commit acd2690d2e
12 changed files with 68 additions and 38 deletions
@@ -6,6 +6,27 @@
nodamage = TRUE
flag = ENERGY
/obj/projectile/energy/floramut/on_hit(atom/target, blocked = FALSE)
. = ..()
if(isliving(target))
var/mob/living/L = target
if(L.mob_biotypes & MOB_PLANT)
if(prob(15))
L.rad_act(rand(30, 80))
L.Paralyze(100)
L.visible_message("<span class='warning'>[L] writhes in pain as [L.p_their()] vacuoles boil.</span>", "<span class='userdanger'>You writhe in pain as your vacuoles boil!</span>", "<span class='hear'>You hear the crunching of leaves.</span>")
if(iscarbon(L) && L.has_dna())
var/mob/living/carbon/C = L
if(prob(80))
C.easy_randmut(NEGATIVE + MINOR_NEGATIVE)
else
C.easy_randmut(POSITIVE)
C.randmuti()
C.domutcheck()
else
L.adjustFireLoss(rand(5, 15))
L.show_message("<span class='userdanger'>The radiation beam singes you!</span>")
/obj/projectile/energy/florayield
name = "beta somatoray"
icon_state = "energy2"
@@ -14,6 +35,13 @@
nodamage = TRUE
flag = ENERGY
/obj/projectile/energy/florayield/on_hit(atom/target, blocked = FALSE)
. = ..()
if(isliving(target))
var/mob/living/L = target
if(L.mob_biotypes & MOB_PLANT)
L.set_nutrition(min(L.nutrition + 30, NUTRITION_LEVEL_FULL))
/obj/projectile/energy/florarevolution
name = "gamma somatoray"
icon_state = "energy3"
@@ -21,3 +49,13 @@
damage_type = TOX
nodamage = TRUE
flag = ENERGY
/obj/projectile/energy/florarevolution/on_hit(atom/target, blocked = FALSE)
. = ..()
if(isliving(target))
var/mob/living/L = target
if(L.mob_biotypes & MOB_PLANT)
L.show_message("<span class='notice'>The radiation beam leaves you feeling disoriented!</span>")
L.Dizzy(15)
L.emote("flip")
L.emote("spin")