mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-23 12:06:22 +01:00
Organ rewrite mapclean attempt.
This commit is contained in:
@@ -95,7 +95,7 @@ datum
|
||||
|
||||
|
||||
blood
|
||||
data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null, "antibodies" = null)
|
||||
data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"blood_colour"= "#A10808","resistances"=null,"trace_chem"=null, "antibodies" = null)
|
||||
name = "Blood"
|
||||
id = "blood"
|
||||
reagent_state = LIQUID
|
||||
@@ -128,49 +128,30 @@ datum
|
||||
var/mob/living/carbon/C = M
|
||||
C.antibodies |= self.data["antibodies"]
|
||||
|
||||
on_merge(var/data)
|
||||
if(data["blood_colour"])
|
||||
color = data["blood_colour"]
|
||||
return ..()
|
||||
|
||||
|
||||
on_update(var/atom/A)
|
||||
if(data["blood_colour"])
|
||||
color = data["blood_colour"]
|
||||
return ..()
|
||||
|
||||
reaction_turf(var/turf/simulated/T, var/volume)//splash the blood all over the place
|
||||
if(!istype(T)) return
|
||||
var/datum/reagent/blood/self = src
|
||||
src = null
|
||||
if(!(volume >= 3)) return
|
||||
//var/datum/disease/D = self.data["virus"]
|
||||
|
||||
if(!self.data["donor"] || istype(self.data["donor"], /mob/living/carbon/human))
|
||||
var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T //find some blood here
|
||||
if(!blood_prop) //first blood!
|
||||
blood_prop = new(T)
|
||||
blood_prop.blood_DNA[self.data["blood_DNA"]] = self.data["blood_type"]
|
||||
|
||||
for(var/datum/disease/D in self.data["viruses"])
|
||||
var/datum/disease/newVirus = D.Copy(1)
|
||||
blood_prop.viruses += newVirus
|
||||
newVirus.holder = blood_prop
|
||||
|
||||
if(self.data["virus2"])
|
||||
blood_prop.virus2 = virus_copylist(self.data["virus2"])
|
||||
|
||||
|
||||
blood_splatter(T,self,1)
|
||||
else if(istype(self.data["donor"], /mob/living/carbon/monkey))
|
||||
var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T
|
||||
if(!blood_prop)
|
||||
blood_prop = new(T)
|
||||
blood_prop.blood_DNA["Non-Human DNA"] = "A+"
|
||||
for(var/datum/disease/D in self.data["viruses"])
|
||||
var/datum/disease/newVirus = D.Copy(1)
|
||||
blood_prop.viruses += newVirus
|
||||
newVirus.holder = blood_prop
|
||||
|
||||
var/obj/effect/decal/cleanable/blood/B = blood_splatter(T,self,1)
|
||||
if(B) B.blood_DNA["Non-Human DNA"] = "A+"
|
||||
else if(istype(self.data["donor"], /mob/living/carbon/alien))
|
||||
var/obj/effect/decal/cleanable/blood/xeno/blood_prop = locate() in T
|
||||
if(!blood_prop)
|
||||
blood_prop = new(T)
|
||||
blood_prop.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*"
|
||||
for(var/datum/disease/D in self.data["viruses"])
|
||||
var/datum/disease/newVirus = D.Copy(1)
|
||||
blood_prop.viruses += newVirus
|
||||
newVirus.holder = blood_prop
|
||||
var/obj/effect/decal/cleanable/blood/B = blood_splatter(T,self,1)
|
||||
if(B) B.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*"
|
||||
return
|
||||
|
||||
/* Must check the transfering of reagents and their data first. They all can point to one disease datum.
|
||||
@@ -1276,7 +1257,7 @@ datum
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/internal/eyes/E = H.internal_organs_by_name["eyes"]
|
||||
if(istype(E))
|
||||
if(E && istype(E))
|
||||
if(E.damage > 0)
|
||||
E.damage = max(E.damage - 1, 0)
|
||||
..()
|
||||
@@ -3024,7 +3005,9 @@ datum
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/internal/liver/L = H.internal_organs_by_name["liver"]
|
||||
if (istype(L))
|
||||
if (!L)
|
||||
H.adjustToxLoss(5)
|
||||
else if(istype(L))
|
||||
L.take_damage(0.1, 1)
|
||||
H.adjustToxLoss(0.1)
|
||||
..()
|
||||
@@ -3264,13 +3247,13 @@ datum
|
||||
if(prob(5)) if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/internal/heart/L = H.internal_organs_by_name["heart"]
|
||||
if (istype(L))
|
||||
if (L && istype(L))
|
||||
L.take_damage(5, 0)
|
||||
if (300 to INFINITY)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/internal/heart/L = H.internal_organs_by_name["heart"]
|
||||
if (istype(L))
|
||||
if (L && istype(L))
|
||||
L.take_damage(100, 0)
|
||||
holder.remove_reagent(src.id, FOOD_METABOLISM)
|
||||
|
||||
|
||||
@@ -590,25 +590,20 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/appendix
|
||||
//yes, this is the same as meat. I might do something different in future
|
||||
name = "appendix"
|
||||
desc = "An appendix which looks perfectly healthy."
|
||||
/obj/item/weapon/reagent_containers/food/snacks/organ
|
||||
|
||||
name = "organ"
|
||||
desc = "It's good for you."
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "appendix"
|
||||
filling_color = "#E00D34"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("nutriment", rand(3,5))
|
||||
reagents.add_reagent("toxin", rand(1,3))
|
||||
src.bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/appendix/inflamed
|
||||
name = "inflamed appendix"
|
||||
desc = "An appendix which appears to be inflamed."
|
||||
icon_state = "appendixinflamed"
|
||||
filling_color = "#E00D7A"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu
|
||||
name = "Tofu"
|
||||
icon_state = "tofu"
|
||||
@@ -1559,7 +1554,6 @@
|
||||
On_Consume(var/mob/M)
|
||||
M << "<span class = 'warning'>Something inside of you suddently expands!</span>"
|
||||
|
||||
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
//Do not try to understand.
|
||||
var/obj/item/weapon/surprise = new/obj/item/weapon(M)
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
|
||||
if(SYRINGE_INJECT)
|
||||
if(!reagents.total_volume)
|
||||
user << "\red The Syringe is empty."
|
||||
user << "\red The syringe is empty."
|
||||
return
|
||||
if(istype(target, /obj/item/weapon/implantcase/chem))
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user