Merge pull request #6176 from Fox-McCloud/reagents-noreact-refactor

Makes Reagents Holder Process and Refactors NOREACT
This commit is contained in:
Crazy Lemon
2017-01-26 03:47:30 -08:00
committed by GitHub
13 changed files with 45 additions and 28 deletions
+21 -6
View File
@@ -13,10 +13,12 @@ var/const/INGEST = 2
var/atom/my_atom = null
var/chem_temp = 300
var/list/datum/reagent/addiction_list = new/list()
var/flags
/datum/reagents/New(maximum=100)
/datum/reagents/New(maximum = 100)
maximum_volume = maximum
if(!(flags & REAGENT_NOREACT))
processing_objects |= src
//I dislike having these here but map-objects are initialised before world/New() is called. >_>
if(!chemical_reagents_list)
//Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id
@@ -288,11 +290,24 @@ var/const/INGEST = 2
od_chems.Add(R.id)
return od_chems
/datum/reagents/proc/process()
if(flags & REAGENT_NOREACT)
processing_objects -= src
return
/datum/reagents/proc/reagent_on_tick()
for(var/datum/reagent/R in reagent_list)
R.on_tick()
return
/datum/reagents/proc/set_reacting(react = TRUE)
if(react)
// Order is important, process() can remove from processing if
// the flag is present
flags &= ~(REAGENT_NOREACT)
processing_objects |= src
else
processing_objects -= src
flags |= REAGENT_NOREACT
/*
if(!target) return
var/total_transfered = 0
@@ -337,7 +352,7 @@ var/const/INGEST = 2
update_total()
/datum/reagents/proc/handle_reactions()
if(my_atom.flags & NOREACT)
if(flags & REAGENT_NOREACT)
return //Yup, no reactions here. No siree.
var/reaction_occured = 0
@@ -721,7 +736,7 @@ atom/proc/create_reagents(max_vol)
/datum/reagents/Destroy()
. = ..()
processing_objects.Remove(src)
processing_objects -= src
for(var/datum/reagent/R in reagent_list)
qdel(R)
reagent_list.Cut()
@@ -30,7 +30,6 @@
if(!possible_transfer_amounts)
verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT
create_reagents(volume)
processing_objects.Add(src)
if(spawned_disease)
var/datum/disease/F = new spawned_disease(0)
var/list/data = list("viruses" = list(F), "blood_colour" = "#A10808")
@@ -38,11 +37,6 @@
if(list_reagents)
reagents.add_reagent_list(list_reagents)
/obj/item/weapon/reagent_containers/process()
if(reagents)
reagents.reagent_on_tick()
return
/obj/item/weapon/reagent_containers/ex_act()
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
@@ -290,7 +290,11 @@
materials = list(MAT_GLASS=500)
volume = 50
amount_per_transfer_from_this = 10
flags = OPENCONTAINER | NOREACT
flags = OPENCONTAINER
/obj/item/weapon/reagent_containers/glass/beaker/noreact/New()
..()
reagents.set_reacting(FALSE)
/obj/item/weapon/reagent_containers/glass/beaker/bluespace
name = "bluespace beaker"