mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 20:43:10 +01:00
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:
@@ -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()
|
||||
..()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user