mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Fixes #1984
Adds new proc for reagents to do something when they would be deleted from their mob.
This commit is contained in:
@@ -367,10 +367,12 @@ var/global/list/damage_icon_parts = list()
|
||||
var/g = "m"
|
||||
if(gender == FEMALE) g = "f"
|
||||
// DNA2 - Drawing underlays.
|
||||
var/hulk = 0
|
||||
for(var/datum/dna/gene/gene in dna_genes)
|
||||
if(!gene.block)
|
||||
continue
|
||||
if(gene.is_active(src))
|
||||
if(gene.name == "Hulk") hulk = 1
|
||||
var/underlay=gene.OnDrawUnderlays(src,g,fat)
|
||||
if(underlay)
|
||||
//standing.underlays += underlay
|
||||
@@ -378,14 +380,14 @@ var/global/list/damage_icon_parts = list()
|
||||
add_image = 1
|
||||
for(var/mut in mutations)
|
||||
switch(mut)
|
||||
/*
|
||||
if(M_HULK)
|
||||
if(fat)
|
||||
standing.underlays += "hulk_[fat]_s"
|
||||
else
|
||||
standing.underlays += "hulk_[g]_s"
|
||||
add_image = 1
|
||||
if(M_RESIST_COLD)
|
||||
if(!hulk)
|
||||
if(fat)
|
||||
standing.underlays += "hulk_[fat]_s"
|
||||
else
|
||||
standing.underlays += "hulk_[g]_s"
|
||||
add_image = 1
|
||||
/*if(M_RESIST_COLD)
|
||||
standing.underlays += "fire[fat]_s"
|
||||
add_image = 1
|
||||
if(M_RESIST_HEAT)
|
||||
|
||||
@@ -405,6 +405,7 @@ datum
|
||||
for(var/A in reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if (R.id == reagent)
|
||||
R.reagent_deleted()
|
||||
reagent_list -= A
|
||||
R.holder = null
|
||||
total_dirty=1
|
||||
|
||||
@@ -2597,7 +2597,16 @@
|
||||
var/hulked_at = 0 // World.time
|
||||
|
||||
custom_metabolism=0.1
|
||||
|
||||
/datum/reagent/creatine/reagent_deleted()
|
||||
..()
|
||||
if(!holder) return
|
||||
var/mob/M = holder.my_atom
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!has_been_hulk || has_ripped_and_torn || (!(M_HULK in H.mutations))) return
|
||||
var/timedmg = ((30 SECONDS) - (H.hulk_time - world.time)) / 10
|
||||
dehulk(H, timedmg * 3, 1, 0)
|
||||
return
|
||||
/datum/reagent/creatine/on_mob_life(var/mob/living/M as mob)
|
||||
|
||||
if(!holder) return
|
||||
@@ -2633,26 +2642,28 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/creatine/proc/dehulk(var/mob/living/carbon/human/H)
|
||||
/datum/reagent/creatine/proc/dehulk(var/mob/living/carbon/human/H, damage = 200, override_remove = 0, gib = 1, )
|
||||
if(has_been_hulk && !has_ripped_and_torn)
|
||||
H << "<span class='warning'>You feel like your muscles are ripping apart!</span>"
|
||||
has_ripped_and_torn=1
|
||||
holder.remove_reagent(src.id) // Clean them out
|
||||
H.adjustBruteLoss(200) // Crit
|
||||
if(!override_remove)
|
||||
holder.remove_reagent(src.id) // Clean them out
|
||||
H.adjustBruteLoss(damage) // Crit
|
||||
|
||||
for(var/datum/organ/external/E in H.organs)
|
||||
if(istype(E, /datum/organ/external/chest))
|
||||
continue
|
||||
if(istype(E, /datum/organ/external/head))
|
||||
continue // Permit basket cases.
|
||||
if(prob(50))
|
||||
// Override the current limb status and don't cause an explosion
|
||||
E.droplimb(1,1)
|
||||
if(gib)
|
||||
for(var/datum/organ/external/E in H.organs)
|
||||
if(istype(E, /datum/organ/external/chest))
|
||||
continue
|
||||
if(istype(E, /datum/organ/external/head))
|
||||
continue // Permit basket cases.
|
||||
if(prob(50))
|
||||
// Override the current limb status and don't cause an explosion
|
||||
E.droplimb(1,1)
|
||||
|
||||
if(H.species)
|
||||
hgibs(H.loc, H.viruses, H.dna, H.species.flesh_color, H.species.blood_color)
|
||||
else
|
||||
hgibs(H.loc, H.viruses, H.dna)
|
||||
if(H.species)
|
||||
hgibs(H.loc, H.viruses, H.dna, H.species.flesh_color, H.species.blood_color)
|
||||
else
|
||||
hgibs(H.loc, H.viruses, H.dna)
|
||||
|
||||
H.hulk_time=0 // Just to be sure.
|
||||
H.mutations.Remove(M_HULK)
|
||||
|
||||
@@ -3,6 +3,9 @@ var/global/list/charcoal_doesnt_remove=list(
|
||||
"blood"
|
||||
)
|
||||
|
||||
/datum/reagent/proc/reagent_deleted()
|
||||
return
|
||||
|
||||
/datum/reagent/charcoal
|
||||
//data must contain virus type
|
||||
name = "Activated Charcoal"
|
||||
|
||||
Reference in New Issue
Block a user