Converts Reagents to Typepaths and Centralises Reagent Spawning (#9140)

Converts reagents to use typepaths instead of IDs.
    Centralises reagent spawning in a lot of places to use reagents_to_add instead of a variety of custom methods or initialise overrides.
This commit is contained in:
MarinaGryphon
2020-07-05 20:47:48 +03:00
committed by GitHub
parent 0867971810
commit 37c80988ce
177 changed files with 3151 additions and 4767 deletions
+11 -11
View File
@@ -14,13 +14,13 @@
if(species && species.flags & NO_BLOOD) //We want the var for safety but we can do without the actual blood.
return
vessel.add_reagent("blood", species.blood_volume)
vessel.add_reagent(/datum/reagent/blood, species.blood_volume)
fixblood()
//Resets blood data
/mob/living/carbon/human/proc/fixblood()
for(var/datum/reagent/blood/B in vessel.reagent_list)
if(B.id == "blood")
if(B.type == /datum/reagent/blood)
B.data = list(
"donor" = WEAKREF(src),
"species" = species.bodytype,
@@ -41,7 +41,7 @@
if(!amt)
return
vessel.remove_reagent("blood",amt)
vessel.remove_reagent(/datum/reagent/blood,amt)
blood_splatter(tar, src, spray_dir = spraydir)
#define BLOOD_SPRAY_DISTANCE 2
@@ -93,7 +93,7 @@
#undef BLOOD_SPRAY_DISTANCE
/mob/living/carbon/human/proc/get_blood_volume()
return round((vessel.get_reagent_amount("blood")/species.blood_volume)*100)
return round((vessel.get_reagent_amount(/datum/reagent/blood)/species.blood_volume)*100)
/mob/living/carbon/human/proc/get_blood_circulation()
var/obj/item/organ/internal/heart/heart = internal_organs_by_name[BP_HEART]
@@ -174,8 +174,8 @@
var/list/temp_chem = list()
for(var/datum/reagent/R in src.reagents.reagent_list)
temp_chem += R.id
temp_chem[R.id] = R.volume
temp_chem += R.type
temp_chem[R.type] = R.volume
B.data["trace_chem"] = list2params(temp_chem)
return B
@@ -185,11 +185,11 @@
if(species && species.flags & NO_BLOOD)
return null
if(vessel.get_reagent_amount("blood") < amount)
if(vessel.get_reagent_amount(/datum/reagent/blood) < amount)
return null
. = ..()
vessel.remove_reagent("blood",amount) // Removes blood if human
vessel.remove_reagent(/datum/reagent/blood,amount) // Removes blood if human
//Transfers blood from container ot vessels
/mob/living/carbon/proc/inject_blood(var/datum/reagent/blood/injected, var/amount)
@@ -205,7 +205,7 @@
/mob/living/carbon/human/inject_blood(var/datum/reagent/blood/injected, var/amount)
// In case of mobs without blood, put it in their chem storage.
if(species.flags & NO_BLOOD)
reagents.add_reagent("blood", amount, injected.data)
reagents.add_reagent(/datum/reagent/blood, amount, injected.data)
reagents.update_total()
return
@@ -214,10 +214,10 @@
if (!injected || !our)
return
if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"],injected.data["species"],our.data["species"]) && !(mind && mind.vampire))
reagents.add_reagent("toxin",amount * 0.5)
reagents.add_reagent(/datum/reagent/toxin,amount * 0.5)
reagents.update_total()
else
vessel.add_reagent("blood", amount, injected.data)
vessel.add_reagent(/datum/reagent/blood, amount, injected.data)
vessel.update_total()
..()
+2 -2
View File
@@ -116,7 +116,7 @@
return
if(pulse != PULSE_NONE || BP_IS_ROBOTIC(src))
var/blood_volume = round(owner.vessel.get_reagent_amount("blood"))
var/blood_volume = round(owner.vessel.get_reagent_amount(/datum/reagent/blood))
//Blood regeneration if there is some space
if(blood_volume < species.blood_volume && blood_volume)
@@ -160,7 +160,7 @@
blood_max += bleed_amount
do_spray += "[temp.name]"
else
owner.vessel.remove_reagent("blood", bleed_amount)
owner.vessel.remove_reagent(/datum/reagent/blood, bleed_amount)
switch(pulse)
if(PULSE_SLOW)
+5 -5
View File
@@ -22,7 +22,7 @@
// Coffee is really bad for you with busted kidneys.
// This should probably be expanded in some way, but fucked if I know
// what else kidneys can process in our reagent list.
var/datum/reagent/coffee = locate(/datum/reagent/drink/coffee) in owner.reagents.reagent_list
var/datum/reagent/drink/coffee = locate(/datum/reagent/drink/coffee) in owner.reagents.reagent_list
if(coffee)
if(is_bruised())
owner.adjustToxLoss(0.1 * PROCESS_ACCURACY)
@@ -30,11 +30,11 @@
owner.adjustToxLoss(0.3 * PROCESS_ACCURACY)
if(is_bruised())
if(prob(5) && reagents.get_reagent_amount("potassium") < 5)
reagents.add_reagent("potassium", REM*5)
if(prob(5) && reagents.get_reagent_amount(/datum/reagent/potassium) < 5)
reagents.add_reagent(/datum/reagent/potassium, REM*5)
if(is_broken())
if(owner.reagents.get_reagent_amount("potassium") < 15)
owner.reagents.add_reagent("potassium", REM*2)
if(owner.reagents.get_reagent_amount(/datum/reagent/potassium) < 15)
owner.reagents.add_reagent(/datum/reagent/potassium, REM*2)
//If your kidneys aren't working, your body's going to have a hard time cleaning your blood.
if(!owner.chem_effects[CE_ANTITOXIN])
+1 -1
View File
@@ -199,7 +199,7 @@
if(toxins_pp > safe_toxins_max)
var/ratio = (poison/safe_toxins_max) * 10
if(reagents)
reagents.add_reagent("toxin", Clamp(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE))
reagents.add_reagent(/datum/reagent/toxin, Clamp(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE))
breath.adjust_gas(poison_type, -poison/6, update = 0) //update after
owner.phoron_alert = max(owner.phoron_alert, 1)
else
+3 -3
View File
@@ -171,7 +171,7 @@
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list
if(B && !(status & ORGAN_ROBOT) && prob(40))
reagents.remove_reagent("blood",0.1)
reagents.remove_reagent(/datum/reagent/blood,0.1)
if (isturf(loc))
blood_splatter(src,B,1)
if(config.organs_decay) damage += rand(1,3)
@@ -246,7 +246,7 @@
germ_level += rand(2,3)
if(501 to INFINITY)
germ_level += rand(3,5)
owner.reagents.add_reagent("toxin", rand(1,2))
owner.reagents.add_reagent(/datum/reagent/toxin, rand(1,2))
/obj/item/organ/proc/receive_chem(chemical as obj)
return 0
@@ -269,7 +269,7 @@
if(!owner)
return
var/antibiotics = owner.reagents?.get_reagent_amount("thetamycin")
var/antibiotics = owner.reagents?.get_reagent_amount(/datum/reagent/thetamycin)
if (!germ_level || antibiotics < 5)
return
+4 -4
View File
@@ -137,7 +137,7 @@
to_chat(owner, "<span class='notice'>\The [src] activates, releasing a stream of chemicals into your veins!</span>")
owner.reagents.add_reagent("adrenaline", 15)
owner.reagents.add_reagent(/datum/reagent/adrenaline, 15)
/obj/item/organ/internal/augment/venomous_rest
name = "venomous rest implant"
@@ -156,9 +156,9 @@
return FALSE
if(owner.reagents)
owner.reagents.add_reagent("norepinephrine", 10)
owner.reagents.add_reagent("tricordrazine", 10)
owner.reagents.add_reagent("stoxin", 15)
owner.reagents.add_reagent(/datum/reagent/norepinephrine, 10)
owner.reagents.add_reagent(/datum/reagent/tricordrazine, 10)
owner.reagents.add_reagent(/datum/reagent/soporific, 15)
take_damage(15)
to_chat(owner, "<span class='notice'>\The [src] activates, releasing a stream of chemicals into your veins!</span>")
+7 -7
View File
@@ -79,8 +79,8 @@
set_light(1, l_color = "#E6E600")
if(prob(10))
to_chat(owner, "<span class='warning'>You feel something squirming inside of you!</span>")
owner.reagents.add_reagent("phoron", 8)
owner.reagents.add_reagent("koispaste", 5)
owner.reagents.add_reagent(/datum/reagent/toxin/phoron, 8)
owner.reagents.add_reagent(/datum/reagent/kois, 5)
if(stage >= 4)
if(prob(10))
@@ -90,8 +90,8 @@
var/turf/T = get_turf(owner)
var/datum/reagents/R = new/datum/reagents(100)
R.add_reagent("koispaste",10)
R.add_reagent("phoron",10)
R.add_reagent(/datum/reagent/kois,10)
R.add_reagent(/datum/reagent/toxin/phoron,10)
var/datum/effect/effect/system/smoke_spread/chem/spores/S = new("koisspore")
S.attach(T)
@@ -146,7 +146,7 @@
if(prob(5))
to_chat(owner, "<span class='warning'>You feel something squirming inside of you!</span>")
owner.reagents.add_reagent("blackkois", 4)
owner.reagents.add_reagent(/datum/reagent/kois/black, 4)
else if(prob(10))
to_chat(owner, "<span class='warning'>You feel disorientated!</span>")
@@ -188,8 +188,8 @@
var/turf/T = get_turf(owner)
var/datum/reagents/R = new/datum/reagents(100)
R.add_reagent("blackkois",10)
R.add_reagent("phoron",5)
R.add_reagent(/datum/reagent/kois/black,10)
R.add_reagent(/datum/reagent/toxin/phoron,5)
var/datum/effect/effect/system/smoke_spread/chem/spores/S = new("blackkois")
S.attach(T)