Setting FermiReact to be part of a PROCESSING call.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user