[Ready for code review] Moves alien verbs to spells (#20002)

* Moves alien verbs to spells

* lol

* Standardization, polish, making alien plasma huds more consistant

* The very cursed way of handling touch spells

* logging + more polish

* snakecase + documentation

* finishing touches

* oops, ty henri

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* sprites from TGstation

* sprites, again

* oops

* farie's review part 1

* farie's review p2, signals

* Erics PR compat

* farie's review 3

* that too

* the shawnshank redemption

* boink

* removes larva transfer plasma

* you want a sprite cranberry?

* TM fix 1

* FUCK I BROKE LOGGING

* bam

* final touches

---------

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
GDN
2023-02-12 21:34:11 +01:00
committed by GitHub
co-authored by Henri215
parent 98d7440f75
commit aa56d75f93
41 changed files with 548 additions and 403 deletions
@@ -40,7 +40,7 @@
RETURN_TYPE(/list/obj/item/organ/internal)
return list(
/obj/item/organ/internal/brain/xeno,
/obj/item/organ/internal/xenos/hivenode,
/obj/item/organ/internal/alien/hivenode,
/obj/item/organ/internal/ears
)
@@ -220,14 +220,19 @@ Des: Removes all infected images from the alien.
return
/mob/living/carbon/alien/canBeHandcuffed()
return 1
return TRUE
/mob/living/carbon/alien/proc/updatePlasmaDisplay()
if(hud_used) //clientless aliens
hud_used.alien_plasma_display.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'> <font face='Small Fonts' color='magenta'>[getPlasma()]</font></div>"
hud_used.alien_plasma_display.maptext_x = -3
/* Although this is on the carbon level, we only want this proc'ing for aliens that do have this hud. Only humanoid aliens do at the moment, so we have a check
and carry the owner just to make sure*/
/mob/living/carbon/proc/update_plasma_display(mob/owner)
for(var/datum/action/spell_action/action in actions)
action.UpdateButtonIcon()
if(!hud_used || !isalien(owner)) //clientless aliens or non aliens
return
hud_used.alien_plasma_display.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'> <font face='Small Fonts' color='magenta'>[get_plasma()]</font></div>"
hud_used.alien_plasma_display.maptext_x = -3
/mob/living/carbon/alien/larva/updatePlasmaDisplay()
/mob/living/carbon/alien/larva/update_plasma_display()
return
/mob/living/carbon/alien/can_use_vents()
@@ -3,13 +3,13 @@
/*Code for aliens attacking aliens. Because aliens act on a hivemind, I don't see them as very aggressive with each other.
As such, they can either help or harm other aliens. Help works like the human help command while harm is a simple nibble.
In all, this is a lot like the monkey code. /N
In all, this is a lot like the monkey code.
This code could certainly use with a touch of TLC, but it functions alright. Bit odd aliens attacking other aliens are like, full logged though
*/
/mob/living/carbon/alien/attack_alien(mob/living/carbon/alien/M)
if(isturf(loc) && istype(loc.loc, /area/start))
to_chat(M, "No attacking people at spawn, you jackass.")
return
switch(M.a_intent)
if(INTENT_HELP)
AdjustSleeping(-10 SECONDS)
@@ -39,7 +39,7 @@ In all, this is a lot like the monkey code. /N
/mob/living/carbon/alien/attack_hand(mob/living/carbon/human/M)
if(..()) //to allow surgery to return properly.
return 0
return FALSE
switch(M.a_intent)
if(INTENT_HELP)
@@ -53,8 +53,8 @@ In all, this is a lot like the monkey code. /N
M.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
if(INTENT_DISARM)
M.do_attack_animation(src, ATTACK_EFFECT_DISARM)
return 1
return 0
return TRUE
return FALSE
/mob/living/carbon/alien/attack_animal(mob/living/simple_animal/M)
. = ..()
@@ -75,9 +75,9 @@ In all, this is a lot like the monkey code. /N
adjustStaminaLoss(damage)
/mob/living/carbon/alien/acid_act(acidpwr, acid_volume)
return 0 //aliens are immune to acid.
return FALSE //aliens are immune to acid.
/mob/living/carbon/alien/attack_slime(mob/living/simple_animal/slime/M)
/mob/living/carbon/alien/attack_slime(mob/living/simple_animal/slime/M) // This is very RNG based, maybe come back to this later - GDN
if(..()) //successful slime attack
var/damage = rand(5, 35)
if(M.is_adult)
@@ -14,7 +14,7 @@
var/Toxins_pp = (breath.toxins / breath.total_moles()) * breath_pressure
if(Toxins_pp > tox_detect_threshold) // Detect toxins in air
adjustPlasma(breath.toxins*250)
add_plasma(breath.toxins * 250)
throw_alert("alien_tox", /obj/screen/alert/alien_tox)
toxins_used = breath.toxins
@@ -1,4 +1,5 @@
/mob/living/carbon/alien/Login()
..()
AddInfectionImages()
update_plasma_display(src)
return
@@ -1,191 +0,0 @@
/*NOTES:
These are general powers. Specific powers are stored under the appropriate alien creature type.
*/
/*Alien spit now works like a taser shot. It won't home in on the target but will act the same once it does hit.
Doesn't work on other aliens/AI.*/
/mob/living/carbon/proc/powerc(X, Y)//Y is optional, checks for weed planting. X can be null.
if(stat)
to_chat(src, "<span class='noticealien'>You must be conscious to do this.</span>")
return 0
else if(X && getPlasma() < X)
to_chat(src, "<span class='noticealien'>Not enough plasma stored.</span>")
return 0
else if(Y && (!isturf(src.loc) || isspaceturf(src.loc)))
to_chat(src, "<span class='noticealien'>You can't place that here!</span>")
return 0
else return 1
/mob/living/carbon/alien/humanoid/verb/plant()
set name = "Plant Weeds (50)"
set desc = "Plants some alien weeds"
set category = "Alien"
if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
to_chat(src, "<span class='noticealien'>There's already a weed node here.</span>")
return
if(powerc(50,1))
for(var/obj/structure/alien/resin in get_turf(src))
to_chat(src, "<span class='danger'>There is already a resin construction here.</span>")
return
adjustPlasma(-50)
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class='alertalien'>[src] has planted some alien weeds!</span>"), 1)
for(var/obj/structure/alien/weeds/W in get_turf(src))
qdel(W)
new /obj/structure/alien/weeds/node(loc)
return
/mob/living/carbon/alien/humanoid/verb/whisp(mob/M as mob in oview())
set name = "Whisper (10)"
set desc = "Whisper to someone"
set category = "Alien"
if(powerc(10))
adjustPlasma(-10)
var/msg = sanitize(input("Message:", "Alien Whisper") as text|null)
if(msg)
log_say("(AWHISPER to [key_name(M)]) [msg]", src)
to_chat(M, "<span class='noticealien'>You hear a strange, alien voice in your head...<span class='noticealien'>[msg]")
to_chat(src, "<span class='noticealien'>You said: [msg] to [M]</span>")
for(var/mob/dead/observer/G in GLOB.player_list)
G.show_message("<i>Alien message from <b>[src]</b> ([ghost_follow_link(src, ghost=G)]) to <b>[M]</b> ([ghost_follow_link(M, ghost=G)]): [msg]</i>")
return
/mob/living/carbon/alien/humanoid/verb/transfer_plasma(mob/living/carbon/alien/M as mob in oview())
set name = "Transfer Plasma"
set desc = "Transfer Plasma to another alien"
set category = "Alien"
if(isalien(M))
var/amount = input("Amount:", "Transfer Plasma to [M]") as num
if(amount)
amount = abs(round(amount))
if(powerc(amount))
if(get_dist(src,M) <= 1)
M.adjustPlasma(amount)
adjustPlasma(-amount)
to_chat(M, "<span class='noticealien'>[src] has transfered [amount] plasma to you.</span>")
to_chat(src, {"<span class='noticealien'>You have trasferred [amount] plasma to [M]</span>"})
else
to_chat(src, "<span class='noticealien'>You need to be closer.</span>")
return
/mob/living/carbon/alien/humanoid/proc/corrosive_acid(atom/target) //If they right click to corrode, an error will flash if its an invalid target./N
set name = "Corrossive Acid (200)"
set desc = "Drench an object in acid, destroying it over time."
set category = "Alien"
if(powerc(200))
if(target in oview(1))
if(target.acid_act(200, 100))
visible_message("<span class='alertalien'>[src] vomits globs of vile stuff all over [target]. It begins to sizzle and melt under the bubbling mess of acid!</span>")
adjustPlasma(-200)
else
to_chat(src, "<span class='noticealien'>You cannot dissolve this object.</span>")
else
to_chat(src, "<span class='noticealien'>[target] is too far away.</span>")
/mob/living/carbon/alien/humanoid/proc/neurotoxin() // ok
set name = "Spit Neurotoxin (50)"
set desc = "Spits neurotoxin at someone, paralyzing them for a short time."
set category = "Alien"
var/obj/item/organ/internal/xenos/neurotoxin/organ = locate() in internal_organs
if(powerc(50) && !organ.neurotoxin_cooldown)
adjustPlasma(-50)
visible_message("<span class='danger'>[src] spits neurotoxin!</span>", "<span class='alertalien'>You spit neurotoxin.</span>")
organ.neurotoxin_cooldown = TRUE
addtimer(VARSET_CALLBACK(organ, neurotoxin_cooldown, FALSE), organ.neurotoxin_cooldown_time)
var/turf/T = loc
var/turf/U = get_step(src, dir) // Get the tile infront of the move, based on their direction
if(!isturf(U) || !isturf(T))
return
var/obj/item/projectile/bullet/neurotoxin/A = new /obj/item/projectile/bullet/neurotoxin(usr.loc)
A.current = U
A.firer = src
A.firer_source_atom = src
A.yo = U.y - T.y
A.xo = U.x - T.x
A.fire()
A.newtonian_move(get_dir(U, T))
newtonian_move(get_dir(U, T))
return
/mob/living/carbon/alien/humanoid/proc/resin() // -- TLE
set name = "Secrete Resin"
set desc = "Secrete tough malleable resin."
set category = "Alien"
var/list/resin_buildings = list("Resin Wall (55)" = image(icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi', icon_state = "resin_wall-0"),
"Resin Nest (55)" = image(icon = 'icons/mob/alien.dmi', icon_state = "nest"),
"Resin Door (80)" = image(icon = 'icons/obj/smooth_structures/alien/resin_door.dmi', icon_state = "resin"))
var/choice = show_radial_menu(src, src, resin_buildings, src, radius = 40)
if(powerc(55, TRUE))
var/built = FALSE
if(locate(/obj/structure/alien/resin) in get_turf(src))
to_chat(src, "<span class='danger'>There is already a resin construction here.</span>")
return
adjustPlasma(-55)
switch(choice)
if("Resin Wall (55)")
new /obj/structure/alien/resin/wall(loc)
built = TRUE
if("Resin Nest (55)")
new /obj/structure/bed/nest(loc)
built = TRUE
if("Resin Door (80)")
if(powerc(25, TRUE))
var/obj/structure/alien/resin/door/door = new(loc)
door.dir = dir
adjustPlasma(-25)
built = TRUE
else
to_chat(src, "<span class='noticealien'>Not enough plasma stored.</span>")
adjustPlasma(55)
if(built)
visible_message("<span class='alertalien'>[src] vomits up a thick purple substance and shapes it!</span>")
return
/mob/living/carbon/alien/humanoid/verb/regurgitate()
set name = "Regurgitate"
set desc = "Empties the contents of your stomach"
set category = "Alien"
if(powerc())
if(LAZYLEN(stomach_contents))
for(var/mob/M in src)
LAZYREMOVE(stomach_contents, M)
M.forceMove(drop_location())
visible_message("<span class='alertalien'><B>[src] hurls out the contents of [p_their()] stomach!</span>")
/mob/living/carbon/proc/getPlasma()
var/obj/item/organ/internal/xenos/plasmavessel/vessel = get_int_organ(/obj/item/organ/internal/xenos/plasmavessel)
if(!vessel) return 0
return vessel.stored_plasma
/mob/living/carbon/proc/adjustPlasma(amount)
var/obj/item/organ/internal/xenos/plasmavessel/vessel = get_int_organ(/obj/item/organ/internal/xenos/plasmavessel)
if(!vessel) return
vessel.stored_plasma = max(vessel.stored_plasma + amount,0)
vessel.stored_plasma = min(vessel.stored_plasma, vessel.max_plasma) //upper limit of max_plasma, lower limit of 0
return 1
/mob/living/carbon/alien/adjustPlasma(amount)
. = ..()
updatePlasmaDisplay()
/mob/living/carbon/proc/usePlasma(amount)
if(getPlasma() >= amount)
adjustPlasma(-amount)
return 1
return 0
@@ -10,42 +10,17 @@
if(src.name == "alien drone")
src.name = "alien drone ([rand(1, 1000)])"
src.real_name = src.name
AddSpell(new /obj/effect/proc_holder/spell/alien_spell/evolve_queen)
/mob/living/carbon/alien/humanoid/drone/get_caste_organs()
. = ..()
. += list(
/obj/item/organ/internal/xenos/plasmavessel/drone,
/obj/item/organ/internal/xenos/acidgland,
/obj/item/organ/internal/xenos/resinspinner,
/obj/item/organ/internal/alien/plasmavessel/drone,
/obj/item/organ/internal/alien/acidgland,
/obj/item/organ/internal/alien/resinspinner,
)
//Drones use the same base as generic humanoids.
//Drone verbs
/mob/living/carbon/alien/humanoid/drone/verb/evolve() // -- TLE
set name = "Evolve (500)"
set desc = "Produce an interal egg sac capable of spawning children. Only one queen can exist at a time."
set category = "Alien"
if(powerc(500))
// Queen check
var/no_queen = TRUE
for(var/mob/living/carbon/alien/humanoid/queen/Q in GLOB.alive_mob_list)
if(!Q.key && Q.get_int_organ(/obj/item/organ/internal/brain/))
continue
no_queen = FALSE
if(no_queen)
adjustPlasma(-500)
to_chat(src, "<span class='noticealien'>You begin to evolve!</span>")
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class='alertalien'>[src] begins to twist and contort!</span>"), 1)
var/mob/living/carbon/alien/humanoid/queen/new_xeno = new(loc)
mind.transfer_to(new_xeno)
new_xeno.mind.name = new_xeno.name
SSblackbox.record_feedback("tally", "alien_growth", 1, "queen")
qdel(src)
else
to_chat(src, "<span class='notice'>We already have an alive queen.</span>")
return
@@ -14,14 +14,14 @@
/mob/living/carbon/alien/humanoid/hunter/get_caste_organs()
. = ..()
. += /obj/item/organ/internal/xenos/plasmavessel/hunter
. += /obj/item/organ/internal/alien/plasmavessel/hunter
/mob/living/carbon/alien/humanoid/hunter/handle_environment()
if(m_intent == MOVE_INTENT_RUN || IS_HORIZONTAL(src))
..()
else
adjustPlasma(-heal_rate)
add_plasma(-heal_rate)
//Hunter verbs
@@ -41,7 +41,7 @@
/mob/living/carbon/alien/humanoid/sentinel/get_caste_organs()
. = ..()
. += list(
/obj/item/organ/internal/xenos/plasmavessel,
/obj/item/organ/internal/xenos/acidgland,
/obj/item/organ/internal/xenos/neurotoxin,
/obj/item/organ/internal/alien/plasmavessel,
/obj/item/organ/internal/alien/acidgland,
/obj/item/organ/internal/alien/neurotoxin,
)
@@ -51,25 +51,9 @@
/mob/living/carbon/alien/humanoid/empress/get_caste_organs()
. = ..()
. += list(
/obj/item/organ/internal/xenos/plasmavessel/queen,
/obj/item/organ/internal/xenos/acidgland,
/obj/item/organ/internal/xenos/eggsac,
/obj/item/organ/internal/xenos/resinspinner,
/obj/item/organ/internal/xenos/neurotoxin,
/obj/item/organ/internal/alien/plasmavessel/queen,
/obj/item/organ/internal/alien/acidgland,
/obj/item/organ/internal/alien/eggsac,
/obj/item/organ/internal/alien/resinspinner,
/obj/item/organ/internal/alien/neurotoxin,
)
/mob/living/carbon/alien/humanoid/empress/verb/lay_egg()
set name = "Lay Egg (250)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
set category = "Alien"
if(locate(/obj/structure/alien/egg) in get_turf(src))
to_chat(src, "<span class='noticealien'>There's already an egg here.</span>")
return
if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
adjustPlasma(-250)
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class=notice'><B>[src] has laid an egg!</B></span>"), 1)
new /obj/structure/alien/egg(loc)
return
@@ -19,13 +19,14 @@
pass_flags = PASSTABLE
//This is fine right now, if we're adding organ specific damage this needs to be updated
/mob/living/carbon/alien/humanoid/New()
/mob/living/carbon/alien/humanoid/Initialize(mapload)
if(name == "alien")
name = text("alien ([rand(1, 1000)])")
real_name = name
add_language("Xenomorph")
add_language("Hivemind")
..()
AddSpell(new /obj/effect/proc_holder/spell/alien_spell/regurgitate)
. = ..()
AddComponent(/datum/component/footstep, FOOTSTEP_MOB_CLAW, 0.5, -11)
/mob/living/carbon/alien/humanoid/Process_Spacemove(check_drift = 0)
@@ -56,6 +56,6 @@
visible_message("<span class='danger'>[M] has attempted to disarm [src]!</span>")
/mob/living/carbon/alien/humanoid/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
if(!no_effect && !visual_effect_icon)
if(!no_effect && !visual_effect_icon && !get_active_hand())
visual_effect_icon = ATTACK_EFFECT_CLAW
..()
@@ -12,6 +12,15 @@
l_store = null
update_inv_pockets()
/mob/living/carbon/alien/humanoid/put_in_hands(obj/item/I)
if(!I)
return FALSE
if(put_in_active_hand(I))
return TRUE
if(put_in_inactive_hand(I))
return TRUE
return FALSE
/mob/living/carbon/alien/humanoid/attack_ui(slot_id)
var/obj/item/W = get_active_hand()
if(W)
@@ -34,35 +34,17 @@
/mob/living/carbon/alien/humanoid/queen/get_caste_organs()
. = ..()
. += list(
/obj/item/organ/internal/xenos/plasmavessel/queen,
/obj/item/organ/internal/xenos/acidgland,
/obj/item/organ/internal/xenos/eggsac,
/obj/item/organ/internal/xenos/resinspinner,
/obj/item/organ/internal/xenos/neurotoxin,
/obj/item/organ/internal/alien/plasmavessel/queen,
/obj/item/organ/internal/alien/acidgland,
/obj/item/organ/internal/alien/eggsac,
/obj/item/organ/internal/alien/resinspinner,
/obj/item/organ/internal/alien/neurotoxin,
)
/mob/living/carbon/alien/humanoid/queen/can_inject(mob/user, error_msg, target_zone, penetrate_thick)
return FALSE
//Queen verbs
/mob/living/carbon/alien/humanoid/queen/verb/lay_egg()
set name = "Lay Egg (75)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
set category = "Alien"
if(locate(/obj/structure/alien/egg) in get_turf(src))
to_chat(src, "<span class='noticealien'>There's already an egg here.</span>")
return
if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
adjustPlasma(-75)
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class='alertalien'>[src] has laid an egg!</span>"), 1)
new /obj/structure/alien/egg(loc)
return
/mob/living/carbon/alien/humanoid/queen/large
icon = 'icons/mob/alienlarge.dmi'
icon_state = "queen_s"
@@ -24,18 +24,18 @@
regenerate_icons()
add_language("Xenomorph")
add_language("Hivemind")
AddSpell(new /obj/effect/proc_holder/spell/alien_spell/evolve_larva)
/mob/living/carbon/alien/larva/get_caste_organs()
. = ..()
. += /obj/item/organ/internal/xenos/plasmavessel/larva
. += /obj/item/organ/internal/alien/plasmavessel/larva
//This needs to be fixed
/mob/living/carbon/alien/larva/Stat()
..()
stat(null, "Progress: [amount_grown]/[max_grown]")
/mob/living/carbon/alien/larva/adjustPlasma(amount)
/mob/living/carbon/alien/larva/add_plasma(amount)
if(stat != DEAD && amount > 0)
amount_grown = min(amount_grown + 1, max_grown)
..(amount)
@@ -43,30 +43,24 @@
/mob/living/carbon/alien/larva/ex_act(severity)
..()
var/b_loss = null
var/f_loss = null
var/brute_loss = null
var/fire_loss = null
switch(severity)
if(1.0)
gib()
return
if(2.0)
b_loss += 60
f_loss += 60
brute_loss += 60
fire_loss += 60
AdjustEarDamage(30, 120)
if(3.0)
b_loss += 30
brute_loss += 30
if(prob(50))
Paralyse(2 SECONDS)
AdjustEarDamage(15, 60)
adjustBruteLoss(b_loss)
adjustFireLoss(f_loss)
adjustBruteLoss(brute_loss)
adjustFireLoss(fire_loss)
updatehealth()
//can't equip anything
@@ -74,7 +68,7 @@
return
/mob/living/carbon/alien/larva/restrained()
return 0
return FALSE
/mob/living/carbon/alien/larva/var/temperature_resistance = T0C+75
@@ -1,4 +1,3 @@
/mob/living/carbon/alien/larva/verb/hide()
set name = "Hide"
set desc = "Allows to hide beneath tables or certain items. Toggled on or off."
@@ -14,42 +13,3 @@
layer = MOB_LAYER
visible_message("[src] slowly peeks up from the ground...", "<span class=notice'>You have stopped hiding.</span>")
/mob/living/carbon/alien/larva/verb/evolve()
set name = "Evolve"
set desc = "Evolve into a fully grown Alien."
set category = "Alien"
if(stat != CONSCIOUS)
return
if(handcuffed || legcuffed)
to_chat(src, "<span class='warning'>You cannot evolve when you are cuffed.</span>")
if(amount_grown >= max_grown) //TODO ~Carn
//green is impossible to read, so i made these blue and changed the formatting slightly
to_chat(src, "<span class='boldnotice'>You are growing into a beautiful alien! It is time to choose a caste.</span>")
to_chat(src, "<span class='notice'>There are three to choose from:</span>")
to_chat(src, "<B>Hunters</B> <span class='notice'>are strong and agile, able to hunt away from the hive and rapidly move through ventilation shafts. Hunters generate plasma slowly and have low reserves.</span>")
to_chat(src, "<B>Sentinels</B> <span class='notice'>are tasked with protecting the hive and are deadly up close and at a range. They are not as physically imposing nor fast as the hunters.</span>")
to_chat(src, "<B>Drones</B> <span class='notice'>are the working class, offering the largest plasma storage and generation. They are the only caste which may evolve again, turning into the dreaded alien queen.</span>")
var/alien_caste = alert(src, "Please choose which alien caste you shall belong to.",,"Hunter","Sentinel","Drone")
var/mob/living/carbon/alien/humanoid/new_xeno
switch(alien_caste)
if("Hunter")
new_xeno = new /mob/living/carbon/alien/humanoid/hunter(loc)
if("Sentinel")
new_xeno = new /mob/living/carbon/alien/humanoid/sentinel(loc)
if("Drone")
new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc)
if(mind)
mind.transfer_to(new_xeno)
else
new_xeno.key = key
SSblackbox.record_feedback("tally", "alien_growth", 1, "[lowertext(alien_caste)]")
new_xeno.mind.name = new_xeno.name
qdel(src)
return
else
to_chat(src, "<span class='warning'>You are not fully grown.</span>")
return
+1 -1
View File
@@ -1051,7 +1051,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
/mob/living/carbon/Stat()
..()
if(statpanel("Status"))
var/obj/item/organ/internal/xenos/plasmavessel/vessel = get_int_organ(/obj/item/organ/internal/xenos/plasmavessel)
var/obj/item/organ/internal/alien/plasmavessel/vessel = get_int_organ(/obj/item/organ/internal/alien/plasmavessel)
if(vessel)
stat(null, "Plasma Stored: [vessel.stored_plasma]/[vessel.max_plasma]")
@@ -167,7 +167,7 @@
if(R.id == "plasma" || R.id == "plasma_dust")
H.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
H.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
H.adjustPlasma(20)
H.add_plasma(20)
H.reagents.remove_reagent(R.id, REAGENTS_METABOLISM)
return FALSE //Handling reagent removal on our own. Prevents plasma from dealing toxin damage to Plasmamen.