Setting FermiReact to be part of a PROCESSING call.

This commit is contained in:
Fermi
2019-04-22 23:53:16 +01:00
parent 95ed826faf
commit 3ba7f57cd1
3 changed files with 49 additions and 14 deletions
+32 -9
View File
@@ -53,6 +53,10 @@
var/addiction_tick = 1
var/list/datum/reagent/addiction_list = new/list()
var/reagents_holder_flags
//var/targetVol = 0
//var/reactedVol = 0
var/fermiIsReacting = FALSE
var/fermiReactID = null
/datum/reagents/New(maximum=100)
maximum_volume = maximum
@@ -346,8 +350,16 @@
var/reaction_occurred = 0 // checks if reaction, binary variable
var/continue_reacting = FALSE //Helps keep track what kind of reaction is occuring; standard or fermi.
var/targetVol = 0
var/reactedVol = 0
if(fermiIsReacting == TRUE)
if (reactedVol >= targetVol)
STOP_PROCESSING(SSprocessing, src)
fermiIsReacting = FALSE
message_admins("FermiChem processing stopped")
reaction_occurred = 1
return
do //What does do do in byond? It sounds very redundant? is it a while loop?
var/list/possible_reactions = list() //init list
@@ -450,16 +462,24 @@
//if(selected_reaction)
var/datum/chemical_reaction/C = selected_reaction
if (C.FermiChem == TRUE && !continue_reacting == TRUE)
if (C.FermiChem == TRUE && !continue_reacting)
message_admins("FermiChem Proc'd")
reaction_occurred = 1
for(var/P in selected_reaction.results)
targetVol = cached_results[P]*multiplier
if (chem_temp > C.C.OptimalTempMin)//To prevent pointless reactions
while (reactedVol < targetVol)
reactedVol = FermiReact(selected_reaction, chem_temp, pH, multiplier, reactedVol, targetVol, cached_required_reagents, cached_results)
if (chem_temp > C.OptimalTempMin)//To prevent pointless reactions
if (reactedVol < targetVol)
reactedVol = FermiReact(selected_reaction, chem_temp, pH, multiplier, reactedVol, targetVol, cached_required_reagents, cached_results)
START_PROCESSING(SSprocessing, src)
message_admins("FermiChem processing started")
fermiIsReacting = TRUE
else
fermiIsReacting = FALSE
STOP_PROCESSING(SSprocessing, src)
message_admins("FermiChem processing stopped, 2nd catch, this shouldn't appear.")
SSblackbox.record_feedback("tally", "Fermi_chemical_reaction", reactedVol, C.id)//log
@@ -506,12 +526,15 @@
update_total()//Don't know waht this does.
return 0//end!
/datum/reagents/process()
handle_reactions()
/datum/reagents/proc/FermiReact(selected_reaction, chem_temp, pH, multiplier, reactedVol, targetVol, cached_required_reagents, cached_results)
var/datum/chemical_reaction/C = selected_reaction
var/deltaT = 0
var/deltapH = 0
var/stepChemAmmount = 0
var/ammoReacted = 0
//var/ammoReacted = 0
//get purity from combined beaker reactant purities HERE.
var/purity = 1
//var/tempVol = totalVol
@@ -577,7 +600,7 @@
message_admins("target volume reached. Reaction should stop after this loop")
if (reactedVol > 0)
purity = ((purity * ammoReacted) + (deltapH * stepChemAmmount)) /((ammoReacted + stepChemAmmount)) //This should add the purity to the product
purity = ((purity * reactedVol) + (deltapH * stepChemAmmount)) /((reactedVol+ stepChemAmmount)) //This should add the purity to the product
else
purity = deltapH
message_admins("purity: [purity], purity of beaker")
@@ -608,7 +631,7 @@
reactedVol = reactedVol + stepChemAmmount
return (reactedVol)
return //(reactedVol)
/datum/reagents/proc/FermiExplode()
return
@@ -33,6 +33,7 @@
var/addiction_stage4_end = 40
var/overdosed = 0 // You fucked up and this is now triggering its overdose effects, purge that shit quick.
var/self_consuming = FALSE
var/purity = 1 //Fermichem var
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
. = ..()
@@ -32,15 +32,22 @@
overdose_threshold = 20
addiction_threshold = 30
metabolization_rate = 0.5 * REAGENTS_METABOLISM
addiction_stage3_end = 40
addiction_stage4_end = 55 //Incase it's too long
addiction_stage2_end = 20
addiction_stage3_end = 22
addiction_stage4_end = 24 //Incase it's too long
var/turf/open/location_created = null
var/turf/open/location_return = null
var/addictCyc3 = 1
var/mob/living/fermi_Tclone = null
var/teleBool = FALSE
///obj/item/reagent/fermi/eigenstate/Initialize()
/datum/reagent/fermi/eigenstate/on_new()
. = ..() //Needed!
location_created = get_turf(src) //Sets up coordinate of where it was created
..()
/datum/reagent/fermi/eigenstate/New()
. = ..() //Needed!
location_created = get_turf(src) //Sets up coordinate of where it was created
@@ -48,7 +55,7 @@
/datum/reagent/fermi/eigenstate/on_mob_life(mob/living/carbon/M) //Teleports to chemistry!
if (holder.has_reagent("eigenstate"))
if (teleBool == TRUE)
do_sparks(5,FALSE,M)
else
location_return = get_turf(src) //sets up return point
@@ -56,6 +63,7 @@
do_sparks(5,FALSE,M)
M.forceMove(location_created) //Teleports to creation location
do_sparks(5,FALSE,M)
teleBool = TRUE
..()
/datum/reagent/fermi/eigenstate/on_mob_delete(mob/living/M) //returns back to original location
@@ -63,6 +71,7 @@
to_chat(M, "<span class='userdanger'>You feel your wavefunction collapse!</span>")
M.forceMove(location_return) //Teleports home
do_sparks(5,FALSE,src)
teleBool = FALSE
..()
/datum/reagent/fermi/eigenstate/overdose_start(mob/living/M) //Overdose, makes you teleport randomly
@@ -95,8 +104,9 @@
M.AdjustKnockdown(-40, 0)
for(var/item in M.get_contents())
var/obj/item/I = item
M.dropItemToGround(I, TRUE)
do_teleport(I, get_turf(I), 5, no_effects=TRUE);
..()
//..()
/datum/reagent/fermi/eigenstate/addiction_act_stage3(mob/living/M)//Pulls multiple copies of the character from alternative realities while teleporting them around!
M.Jitter(100)
@@ -119,6 +129,7 @@
// C.updateappearance(mutcolor_update=1)
M.visible_message("[M] collapses in from an alternative reality!")
message_admins("Fermi T Clone: [fermi_Tclone]")
if(2)
do_teleport(fermi_Tclone, get_turf(fermi_Tclone), 3, no_effects=TRUE) //teleports clone so it's hard to find the real one!
if(3)
@@ -136,7 +147,7 @@
to_chat(M, "<span class='userdanger'>You feel your eigenstate settle, snapping an alternative version of yourself into reality. All your previous memories are lost and replaced with the alternative version of yourself. This version of you feels more [pick("affectionate", "happy", "lusty", "radical", "shy", "ambitious", "frank", "voracious", "sensible", "witty")] than your previous self, sent to god knows what universe.</span>")
M.emote("me",1,"gasps and gazes around in a bewildered and highly confused fashion!",TRUE)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "Alternative dimension", /datum/mood_event/eigenstate)
..()
//..()
///datum/reagent/fermi/eigenstate/overheat_explode(mob/living/M)
// return