Adds new proc for reagents to do something when they would be deleted from their mob.
This commit is contained in:
D3athrow
2015-02-17 17:54:03 -06:00
parent c4d84da16c
commit b939ba508b
4 changed files with 40 additions and 23 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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"