Endless fixes
This commit is contained in:
@@ -478,15 +478,16 @@ im
|
||||
targetVol = cached_results[P]*multiplier
|
||||
message_admins("FermiChem target volume: [targetVol]")
|
||||
|
||||
if (chem_temp > C.OptimalTempMin)//To prevent pointless reactions
|
||||
if ((chem_temp > C.OptimalTempMin) && (pH > (C.OptimalpHMin - C.ReactpHLim)) && (pH < (C.OptimalpHMax + C.ReactpHLim)))//To prevent pointless reactions
|
||||
//if (reactedVol < targetVol)
|
||||
if (fermiIsReacting == TRUE)
|
||||
return 0
|
||||
else
|
||||
//reactedVol = FermiReact(selected_reaction, chem_temp, pH, multiplier, reactedVol, targetVol, cached_required_reagents, cached_results)
|
||||
selected_reaction.on_reaction(src, multiplier)
|
||||
//selected_reaction.on_reaction(src, my_atom, multiplier)
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
message_admins("FermiChem processing started")
|
||||
selected_reaction.on_reaction(src, my_atom, multiplier)
|
||||
fermiIsReacting = TRUE
|
||||
fermiReactID = selected_reaction
|
||||
reaction_occurred = 1
|
||||
@@ -560,7 +561,7 @@ im
|
||||
targetVol = 0
|
||||
handle_reactions()
|
||||
update_total()
|
||||
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C]
|
||||
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
|
||||
Ferm.FermiFinish(src, multiplier)
|
||||
//C.on_reaction(src, multiplier, special_react_result)
|
||||
return
|
||||
@@ -585,7 +586,7 @@ im
|
||||
targetVol = 0
|
||||
handle_reactions()
|
||||
update_total()
|
||||
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C]
|
||||
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
|
||||
Ferm.FermiFinish(src, multiplier)
|
||||
//C.on_reaction(src, multiplier, special_react_result)
|
||||
return
|
||||
@@ -597,14 +598,14 @@ im
|
||||
targetVol = 0
|
||||
handle_reactions()
|
||||
update_total()
|
||||
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C]
|
||||
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
|
||||
Ferm.FermiFinish(src, multiplier)
|
||||
//C.on_reaction(src, multiplier, special_react_result)
|
||||
return
|
||||
|
||||
//handle_reactions()
|
||||
|
||||
/datum/reagents/proc/FermiReact(selected_reaction, chem_temp, pH, reactedVol, targetVol, cached_required_reagents, cached_results, multiplier)
|
||||
/datum/reagents/proc/FermiReact(selected_reaction, cached_temp, pH, reactedVol, targetVol, cached_required_reagents, cached_results, multiplier)
|
||||
var/datum/chemical_reaction/fermi/C = selected_reaction
|
||||
var/deltaT = 0
|
||||
var/deltapH = 0
|
||||
@@ -620,10 +621,10 @@ im
|
||||
|
||||
|
||||
//Check extremes first
|
||||
if (chem_temp > C.ExplodeTemp)
|
||||
if (cached_temp > C.ExplodeTemp)
|
||||
//go to explode proc
|
||||
message_admins("temperature is over limit: [C.ExplodeTemp] Current temperature: [chem_temp]")
|
||||
C.FermiExplode(src, my_atom, (reactedVol+targetVol), chem_temp, pH)
|
||||
message_admins("temperature is over limit: [C.ExplodeTemp] Current temperature: [cached_temp]")
|
||||
C.FermiExplode(src, my_atom, (reactedVol+targetVol), cached_temp, pH)
|
||||
|
||||
if (pH > 14)
|
||||
pH = 14
|
||||
@@ -635,7 +636,7 @@ im
|
||||
message_admins("pH is lover limit, cur pH: [pH]")
|
||||
|
||||
if ((purity < C.PurityMin) && (!C.PurityMin == 0))//If purity is below the min, blow it up.
|
||||
C.FermiExplode(src, (reactedVol+targetVol), chem_temp, pH, C)
|
||||
C.FermiExplode(src, (reactedVol+targetVol), cached_temp, pH, C)
|
||||
|
||||
//For now, purity is handled elsewhere
|
||||
|
||||
@@ -648,8 +649,8 @@ im
|
||||
else
|
||||
deltapH = (((pH - (C.OptimalpHMin - C.ReactpHLim))**C.CurveSharppH)/((C.ReactpHLim**C.CurveSharppH)))
|
||||
//Upper range
|
||||
else if (pH > C.OptimalpHMin)
|
||||
if (pH > (C.OptimalpHMin + C.ReactpHLim))
|
||||
else if (pH > C.OptimalpHMax)
|
||||
if (pH > (C.OptimalpHMax + C.ReactpHLim))
|
||||
deltapH = 0
|
||||
return //If outside pH range, no reaction
|
||||
else
|
||||
@@ -665,9 +666,9 @@ im
|
||||
message_admins("calculating pH factor(purity), pH: [pH], min: [C.OptimalpHMin]-[C.ReactpHLim], max: [C.OptimalpHMax]+[C.ReactpHLim], deltapH: [deltapH]")
|
||||
|
||||
//Calculate DeltaT (Deviation of T from optimal)
|
||||
if (chem_temp < C.OptimalTempMax && chem_temp >= C.OptimalTempMin)
|
||||
deltaT = (((chem_temp - C.OptimalTempMin)**C.CurveSharpT)/((C.OptimalTempMax - C.OptimalTempMin)**C.CurveSharpT))
|
||||
else if (chem_temp >= C.OptimalTempMax)
|
||||
if (cached_temp < C.OptimalTempMax && cached_temp >= C.OptimalTempMin)
|
||||
deltaT = (((cached_temp - C.OptimalTempMin)**C.CurveSharpT)/((C.OptimalTempMax - C.OptimalTempMin)**C.CurveSharpT))
|
||||
else if (cached_temp >= C.OptimalTempMax)
|
||||
deltaT = 1
|
||||
else
|
||||
deltaT = 0
|
||||
@@ -706,14 +707,14 @@ im
|
||||
for(var/P in cached_results)//Not sure how this works, what is selected_reaction.results?
|
||||
//reactedVol = max(reactedVol, 1) //this shouldnt happen ...
|
||||
SSblackbox.record_feedback("tally", "chemical_reaction", cached_results[P]*stepChemAmmount, P)//log
|
||||
add_reagent(P, cached_results[P]*stepChemAmmount, null, chem_temp, purity)//add reagent function!! I THINK I can do this:
|
||||
add_reagent(P, cached_results[P]*stepChemAmmount, null, cached_temp, purity)//add reagent function!! I THINK I can do this:
|
||||
|
||||
C.FermiCreate(src)
|
||||
message_admins("purity: [purity], purity of beaker")
|
||||
message_admins("Temp before change: [chem_temp], pH after change: [pH]")
|
||||
//Apply pH changes and thermal output of reaction to beaker
|
||||
//chem_temp = round(chem_temp + (C.ThermicConstant * stepChemAmmount)) //Why won't you update!!!
|
||||
adjust_thermal_energy((chem_temp*(C.ThermicConstant * stepChemAmmount *100)), 0, 1500) //(J, min_temp = 2.7, max_temp = 1000)
|
||||
chem_temp = round(cached_temp + (C.ThermicConstant * stepChemAmmount)) //Why won't you update!!!
|
||||
//adjust_thermal_energy((cached_temp*(C.ThermicConstant * stepChemAmmount *100)), 0, 1500) //(J, min_temp = 2.7, max_temp = 1000)
|
||||
pH += (C.HIonRelease * stepChemAmmount)
|
||||
message_admins("Temp after change: [chem_temp], pH after change: [pH]")
|
||||
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
/datum/mood_event/enthrall
|
||||
mood_change = 5
|
||||
description = "<span class='warning'>I am a good pet for Master.</span>\n"
|
||||
description = "<span class='nicegreen'>I am a good pet for Master.</span>\n"
|
||||
|
||||
/datum/mood_event/enthrallpraise
|
||||
mood_change = 12
|
||||
description = "<span class='warning'>I feel so happy! I'm a good pet who Master loves!</span>\n"
|
||||
description = "<span class='nicegreen'>I feel so happy! I'm a good pet who Master loves!</span>\n"
|
||||
timeout = 600
|
||||
|
||||
/datum/mood_event/enthrallscold
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
/datum/mood_event/InLove
|
||||
mood_change = 10
|
||||
description = "<span class='warning'>I'm in love!!</span>\n"
|
||||
description = "<span class='nicegreen'>I'm in love!!</span>\n"
|
||||
|
||||
/datum/mood_event/MissingLove
|
||||
mood_change = -10
|
||||
|
||||
@@ -76,27 +76,19 @@
|
||||
o.dropItemToGround(W, TRUE)
|
||||
playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
|
||||
to_chat(owner, "<span class='warning'>Your enormous breasts are way too large to fit anything over them!</b></span>")
|
||||
//message_admins("BElarge tick!")
|
||||
/*
|
||||
var/items = o.get_contents()
|
||||
for(var/obj/item/W in items)
|
||||
if(W == o.w_uniform || W == o.wear_suit)
|
||||
o.dropItemToGround(W)
|
||||
//items |= owner.get_equipped_items(TRUE)
|
||||
|
||||
//owner.dropItemToGround(owner.wear_suit)
|
||||
//owner.dropItemToGround(owner.w_uniform)
|
||||
*/
|
||||
switch(round(B.cached_size))
|
||||
if(9)
|
||||
if (!(B.breast_sizes[B.prev_size] == B.size))
|
||||
to_chat(o, "<span class='notice'>Your expansive chest has become a more managable size, liberating your movements.</b></span>")
|
||||
o.remove_movespeed_modifier("megamilk")
|
||||
o.next_move_modifier = 1
|
||||
if(10 to INFINITY)
|
||||
if (!(B.breast_sizes[B.prev_size] == B.size))
|
||||
to_chat(H, "<span class='warning'>Your indulgent busom is so substantial, it's affecting your movements!</b></span>")
|
||||
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (round(B.cached_size) - 8))
|
||||
o.next_move_modifier = (round(B.cached_size) - 8)
|
||||
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = ((round(B.cached_size) - 8))/3)
|
||||
o.next_move_modifier = (round(B.cached_size) - 8)/3
|
||||
if(prob(5))
|
||||
to_chat(H, "<span class='notice'>Your back is feeling a little sore.</b></span>")
|
||||
..()
|
||||
|
||||
/datum/status_effect/chem/BElarger/on_remove(mob/living/carbon/M)
|
||||
@@ -139,18 +131,21 @@
|
||||
playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
|
||||
to_chat(owner, "<span class='warning'>Your enormous package is way to large to fit anything over!</b></span>")
|
||||
switch(round(P.cached_length))
|
||||
if(11)
|
||||
if(21)
|
||||
if (!(P.prev_size == P.size))
|
||||
to_chat(o, "<span class='warning'>Your rascally willy has become a more managable size, liberating your movements.</b></span>")
|
||||
to_chat(o, "<span class='notice'>Your rascally willy has become a more managable size, liberating your movements.</b></span>")
|
||||
o.remove_movespeed_modifier("hugedick")
|
||||
o.next_move_modifier = 1
|
||||
if(12 to INFINITY)
|
||||
if(22 to INFINITY)
|
||||
if (!(P.prev_size == P.size))
|
||||
to_chat(o, "<span class='warning'>Your indulgent johnson is so substantial, it's affecting your movements!</b></span>")
|
||||
o.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (P.length - 11.1))
|
||||
o.next_move_modifier = (round(P.length) - 11)
|
||||
o.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (P.length - 21.1))
|
||||
o.next_move_modifier = (round(P.length) - 21)
|
||||
..()
|
||||
|
||||
/datum/status_effect/chem/PElarger/on_remove(mob/living/carbon/M)
|
||||
owner.remove_movespeed_modifier("hugedick")
|
||||
owner.next_move_modifier = 1
|
||||
|
||||
/*//////////////////////////////////////////
|
||||
Mind control functions
|
||||
@@ -185,6 +180,14 @@
|
||||
var/cooldown = 0
|
||||
|
||||
/datum/status_effect/chem/enthrall/on_apply(mob/living/carbon/M)
|
||||
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in M.reagents.reagent_list
|
||||
enthrallID = E.creatorID
|
||||
enthrallGender = E.creatorGender
|
||||
master = E.creator
|
||||
if(!E)
|
||||
message_admins("WARNING: No chem found in thrall!!!!")
|
||||
if(!master)
|
||||
message_admins("WARNING: No master! found in thrall!!!!")
|
||||
if(M.key == enthrallID)
|
||||
owner.remove_status_effect(src)//This shouldn't happen, but just in case
|
||||
redirect_component1 = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) //Do resistance calc if resist is pressed#
|
||||
@@ -195,6 +198,7 @@
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "enthrall", /datum/mood_event/enthrall)
|
||||
|
||||
/datum/status_effect/chem/enthrall/tick(mob/living/carbon/M)
|
||||
message_admins("Enthrall processing for [M]: ")
|
||||
|
||||
//chem calculations
|
||||
if (owner.reagents.has_reagent("MKUltra"))
|
||||
@@ -398,6 +402,7 @@
|
||||
cooldown -= (1 + (mental_capacity/1000 ))
|
||||
else
|
||||
to_chat(master, "<span class='notice'><i>Your pet [owner.name] appears to have finished internalising your last command.</i></span>")
|
||||
..()
|
||||
|
||||
//Check for proximity of master DONE
|
||||
//Place triggerreacts here - create a dictionary of triggerword and effect.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
//return ..()
|
||||
|
||||
//Called when reaction stops. #STOP_PROCESSING
|
||||
/datum/reagent/fermi/proc/FermiFinish(holder) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
|
||||
/datum/reagent/fermi/proc/FermiFinish(datum/reagents/holder, multipler) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
|
||||
return
|
||||
|
||||
//Called when added to a beaker without any of the reagent present. #add_reagent
|
||||
@@ -34,6 +34,8 @@
|
||||
//This should process fermichems to find out how pure they are and what effect to do.
|
||||
//TODO: add this to the main on_mob_add proc, and check if Fermichem = TRUE
|
||||
/datum/reagent/fermi/on_mob_add(mob/living/carbon/M)
|
||||
if(!M)
|
||||
return ..()
|
||||
message_admins("purity of chem is [purity]")
|
||||
if(src.purity < 0)
|
||||
CRASH("Purity below 0 for chem: [src.id], Please let Fermis Know!")
|
||||
@@ -53,6 +55,8 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/fermi/on_merge(mob/living/carbon/M, amount, other_purity)
|
||||
if(!M)
|
||||
return ..()
|
||||
if(other_purity < 0)
|
||||
CRASH("Purity below 0 for chem: [src.id], Please let Fermis Know!")
|
||||
if (other_purity == 1 || src.DoNotSplit == TRUE)
|
||||
@@ -364,7 +368,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
//reaction_mob(SM, )I forget what this is for
|
||||
//Damage the clone
|
||||
SM.blood_volume = BLOOD_VOLUME_NORMAL/2
|
||||
SM.adjustCloneLoss(80, 0)
|
||||
SM.adjustCloneLoss(60, 0)
|
||||
SM.setBrainLoss(40)
|
||||
SM.nutrition = startHunger/2
|
||||
//var/datum/reagents/SMR = SM
|
||||
@@ -1049,14 +1053,14 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
|
||||
overdose_threshold = 100 //If this is too easy to get 100u of this, then double it please.
|
||||
DoNotSplit = TRUE
|
||||
data = list("creatorID" = null, "creatorGender" = null, "creatorName" = null)
|
||||
data// = list("creatorID" = null, "creatorGender" = null, "creatorName" = null)
|
||||
var/creatorID //ckey
|
||||
var/creatorGender
|
||||
var/creatorName
|
||||
var/mob/living/creator
|
||||
|
||||
|
||||
/datum/reagent/fermi/enthrall/nn_new(list/data)
|
||||
/datum/reagent/fermi/enthrall/on_new(list/data)
|
||||
message_admins("FermiNew for enthral proc'd")
|
||||
creatorID = data.["creatorID"]
|
||||
creatorGender = data.["creatorGender"]
|
||||
@@ -1073,11 +1077,23 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
creatorID = B.data.["ckey"]
|
||||
*/
|
||||
|
||||
/datum/reagent/fermi/enthrall/FermiFinish(datum/reagents/holder)
|
||||
message_admins("On finish for enthral proc'd")
|
||||
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
|
||||
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in holder.reagent_list
|
||||
if (B.data.["gender"] == "female")
|
||||
E.data.["creatorGender"] = "Mistress"
|
||||
else
|
||||
E.data.["creatorGender"] = "Master"
|
||||
E.data["creatorName"] = B.data.["real_name"]
|
||||
E.data.["creatorID"] = B.data.["ckey"]
|
||||
message_admins("name: [E.creatorName], ID: [E.creatorID], gender: [E.creatorGender]")
|
||||
|
||||
/datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M)
|
||||
. = ..()
|
||||
if(!creatorID)
|
||||
CRASH("Something went wrong in enthral creation")
|
||||
message_admins("key: [M.key] vs [creatorID], ")
|
||||
if(purity < 0.5)//Impure chems don't function as you expect
|
||||
return
|
||||
else if(M.key == creatorID && creatorName == M.real_name) //same name AND same player - same instance of the player. (should work for clones?)
|
||||
@@ -1090,16 +1106,20 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
creator = M
|
||||
else
|
||||
M.apply_status_effect(/datum/status_effect/chem/enthrall)
|
||||
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
//var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
/*
|
||||
if(creator)
|
||||
E.enthrallID = creatorID
|
||||
E.enthrallGender = creatorGender
|
||||
E.master = creator
|
||||
*/
|
||||
|
||||
|
||||
/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
|
||||
if(purity < 0.5)//Placeholder for now. I'd like to get this done.
|
||||
if (M.key == creatorID && creatorName == M.real_name)//If the creator drinks it, they fall in love randomly. If someone else drinks it, the creator falls in love with them.
|
||||
if(M.has_status_effect(STATUS_EFFECT_INLOVE))
|
||||
return
|
||||
var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers
|
||||
for(var/victim in seen)
|
||||
if((victim == /mob/living/simple_animal/pet/) || (victim == M))
|
||||
@@ -1111,6 +1131,8 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
return
|
||||
else // If someone else drinks it, the creator falls in love with them!
|
||||
var/mob/living/carbon/C = get_mob_by_key(creatorID)
|
||||
if(C.has_status_effect(STATUS_EFFECT_INLOVE))
|
||||
return
|
||||
if(C in viewers(7, get_turf(M)))
|
||||
M.reagents.remove_reagent(src.id, src.volume)
|
||||
FallInLove(C, M)
|
||||
@@ -1158,9 +1180,11 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
for(var/victim in seen)
|
||||
if((victim == /mob/living/simple_animal/pet/) || (victim == M))
|
||||
seen = seen - victim
|
||||
if(!seen)
|
||||
if(seen.len == 0)
|
||||
return
|
||||
love = pick(seen)
|
||||
if(!love)
|
||||
return
|
||||
love = seen
|
||||
M.apply_status_effect(STATUS_EFFECT_INLOVE, love)
|
||||
to_chat(M, "<span class='notice'>You develop deep feelings for [love], your heart beginning to race as you look upon them with new eyes.</span>")
|
||||
else
|
||||
|
||||
@@ -6,39 +6,56 @@
|
||||
|
||||
//Called when temperature is above a certain threshold
|
||||
//....Is this too much?
|
||||
/datum/chemical_reaction/fermi/proc/FermiExplode(src, my_atom, volume, temp, pH, Reaction) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
|
||||
var/Svol = volume
|
||||
/datum/chemical_reaction/fermi/proc/FermiExplode(src, var/atom/my_atom, datum/reagents/holder, volume, temp, pH, Reaction, Exploding = FALSE) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
|
||||
//var/Svol = volume
|
||||
if (Exploding == TRUE)
|
||||
return
|
||||
var/ImpureTot = 0
|
||||
var/pHmod = 1
|
||||
var/turf/T = get_turf(my_atom)
|
||||
if(temp>600)//if hot, start a fire
|
||||
switch(temp)
|
||||
if (601 to 800)
|
||||
for(var/turf/turf in range(1,T))
|
||||
new /obj/effect/hotspot(turf)
|
||||
volume /= 3
|
||||
//volume /= 3
|
||||
if (801 to 1100)
|
||||
for(var/turf/turf in range(2,T))
|
||||
new /obj/effect/hotspot(turf)
|
||||
volume /= 4
|
||||
if (1101 to INFINITY)
|
||||
//volume /= 4
|
||||
if (1101 to INFINITY) //If you're crafty
|
||||
for(var/turf/turf in range(3,T))
|
||||
new /obj/effect/hotspot(turf)
|
||||
volume /= 5
|
||||
//volume /= 5
|
||||
|
||||
var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new
|
||||
if(pH < 2.5)
|
||||
s.set_up(/datum/reagent/fermi/fermiAcid, (volume/3), pH*10, T)
|
||||
volume /=3
|
||||
for (var/reagent in holder.reagent_list)
|
||||
var/datum/reagent/R = reagent
|
||||
s.set_up(R, R.volume/3, pH*10, T)
|
||||
//R.on_reaction(T, volume/10) //Uneeded, I think (hope)
|
||||
s.start()
|
||||
|
||||
if (pH > 12)
|
||||
//var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new
|
||||
var/datum/reagents/R = new/datum/reagents(3000)//Hey, just in case.
|
||||
var/datum/effect_system/smoke_spread/chem/s = new()
|
||||
if(pH < 4)
|
||||
//s.set_up(/datum/reagent/fermi/fermiAcid, (volume/3), pH*10, T)
|
||||
R.add_reagent("fermiAcid", ((volume/3)/pH))
|
||||
pHmod = 2
|
||||
if (pH > 10)
|
||||
var/datum/effect_system/reagents_explosion/e = new()
|
||||
e.set_up(round(volume/Svol, 1), T, 0, 0)
|
||||
e.set_up(round((volume/30)*(pH-9)), T, 0, 0)
|
||||
e.start()
|
||||
message_admins("Fermi explosion at [T], with a temperature of [temp], pH of [pH], containing [holder.reagent_list]")
|
||||
pHmod = 1.5
|
||||
for (var/datum/reagent/reagent in my_atom.reagents.reagent_list)
|
||||
if (istype(reagent, /datum/reagent/fermi))
|
||||
var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id]
|
||||
Ferm.FermiExplode(src, my_atom, holder, volume, temp, pH, Exploding = TRUE)
|
||||
continue //Don't allow fermichems into the mix (fermi explosions are handled elsewhere and it's a huge pain)
|
||||
R.add_reagent(reagent, reagent.volume)
|
||||
if (reagent.purity < 0.6)
|
||||
ImpureTot = (ImpureTot + (1-reagent.purity)) / 2
|
||||
if(R.reagent_list)
|
||||
s.set_up(R, (volume/10)*pHmod, T)
|
||||
s.start()
|
||||
if(!ImpureTot == 0)
|
||||
ImpureTot *= volume
|
||||
empulse(T, volume/10, ImpureTot/10, 1)
|
||||
message_admins("Fermi explosion at [T], with a temperature of [temp], pH of [pH], Impurity tot of [ImpureTot], containing [my_atom.reagents.reagent_list]")
|
||||
my_atom.reagents.clear_reagents()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/fermi/eigenstate
|
||||
@@ -95,7 +112,7 @@
|
||||
PurityMin = 0.25
|
||||
|
||||
/datum/chemical_reaction/fermi/SDGF/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)//Spawns an angery teratoma!! Spooky..! be careful!! TODO: Add teratoma slime subspecies
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
var/turf/T = get_turf(holder)
|
||||
var/mob/living/simple_animal/slime/S = new(T,"grey")//should work, in theory
|
||||
S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)//I dunno how slimes work cause fire is burny
|
||||
S.name = "Living teratoma"
|
||||
@@ -127,8 +144,8 @@
|
||||
|
||||
/datum/chemical_reaction/fermi/BElarger/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
|
||||
//var/obj/item/organ/genital/breasts/B =
|
||||
new /obj/item/organ/genital/breasts(holder.my_atom.loc)
|
||||
var/list/seen = viewers(5, get_turf(holder.my_atom))
|
||||
new /obj/item/organ/genital/breasts(get_turf(holder))
|
||||
var/list/seen = viewers(5, get_turf(holder))
|
||||
for(var/mob/M in seen)
|
||||
to_chat(M, "<span class='warning'>The reaction suddenly condenses, creating a pair of breasts!</b></span>")//OwO
|
||||
..()
|
||||
@@ -138,7 +155,6 @@
|
||||
id = "PElarger"
|
||||
results = list("PElarger" = 3)
|
||||
required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 1)
|
||||
required_catalysts = list("blood" = 1)
|
||||
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
|
||||
//FermiChem vars:
|
||||
OptimalTempMin = 200
|
||||
@@ -159,8 +175,8 @@
|
||||
|
||||
/datum/chemical_reaction/fermi/PElarger/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
|
||||
//var/obj/item/organ/genital/penis/nP =
|
||||
new /obj/item/organ/genital/penis(holder.my_atom.loc)
|
||||
var/list/seen = viewers(5, get_turf(holder.my_atom))
|
||||
new /obj/item/organ/genital/penis(get_turf(holder))
|
||||
var/list/seen = viewers(5, get_turf(holder))
|
||||
for(var/mob/M in seen)
|
||||
to_chat(M, "<span class='warning'>The reaction suddenly condenses, creating a penis!</b></span>")//OwO
|
||||
..()
|
||||
@@ -214,10 +230,12 @@
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.15
|
||||
|
||||
/datum/chemical_reaction/fermi/enthrall/on_reaction(var/atom/my_atom)
|
||||
//Apprently works..?Negative
|
||||
/*
|
||||
/datum/chemical_reaction/fermi/enthrall/on_reaction(datum/reagents/holder)
|
||||
message_admins("On reaction for enthral proc'd")
|
||||
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in my_atom.reagent_list
|
||||
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in my_atom.reagent_list
|
||||
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
|
||||
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in holder.reagent_list
|
||||
if (B.data.["gender"] == "female")
|
||||
E.data.["creatorGender"] = "Mistress"
|
||||
else
|
||||
@@ -226,14 +244,19 @@
|
||||
E.data.["creatorID"] = B.data.["ckey"]
|
||||
message_admins("name: [E.creatorName], ID: [E.creatorID], gender: [E.creatorGender]")
|
||||
..()
|
||||
|
||||
//var/enthrallID = B.get_blood_data()
|
||||
*/
|
||||
|
||||
/datum/chemical_reaction/fermi/enthrall/FermiExplode(src, var/atom/my_atom, volume, temp, pH, Reaction)
|
||||
var/turf/T = get_turf(my_atom)
|
||||
var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new
|
||||
s.set_up(/datum/reagent/fermi/enthrallExplo, volume, pH*10, T)
|
||||
var/datum/reagents/R = new/datum/reagents(350)
|
||||
var/datum/effect_system/smoke_spread/chem/s = new()
|
||||
R.add_reagent("enthrallExplo", volume)
|
||||
s.set_up(R, volume, T)
|
||||
s.start()
|
||||
..()
|
||||
my_atom.reagents.clear_reagents()
|
||||
//..() //Please don't kill everyone too.
|
||||
|
||||
/datum/chemical_reaction/fermi/hatmium
|
||||
name = "Hat growth serum"
|
||||
|
||||
@@ -50,35 +50,35 @@
|
||||
to_chat(user, "<span class='warning'>[user] has already been used!</span>")
|
||||
return
|
||||
switch(cont.reagents.pH)
|
||||
if(13.5 to INFINITY)
|
||||
if(14 to INFINITY)
|
||||
color = "#462c83"
|
||||
if(12.5 to 13.5)
|
||||
if(13 to 14)
|
||||
color = "#63459b"
|
||||
if(11.5 to 12.5)
|
||||
if(12 to 13)
|
||||
color = "#5a51a2"
|
||||
if(10.5 to 11.5)
|
||||
if(11 to 12)
|
||||
color = "#3853a4"
|
||||
if(9.5 to 10.5)
|
||||
if(10 to 11)
|
||||
color = "#3f93cf"
|
||||
if(8.5 to 9.5)
|
||||
if(9 to 10)
|
||||
color = "#0bb9b7"
|
||||
if(7.5 to 8.5)
|
||||
if(8 to 9)
|
||||
color = "#23b36e"
|
||||
if(6.5 to 7.5)
|
||||
if(7 to 8)
|
||||
color = "#3aa651"
|
||||
if(5.5 to 6.5)
|
||||
if(6 to 7)
|
||||
color = "#4cb849"
|
||||
if(4.5 to 5.5)
|
||||
if(5 to 6)
|
||||
color = "#b5d335"
|
||||
if(3.5 to 4.5)
|
||||
color = "#b5d333"
|
||||
if(2.5 to 3.5)
|
||||
if(4 to 5)
|
||||
color = "#f7ec1e"
|
||||
if(1.5 to 2.5)
|
||||
if(3 to 4)
|
||||
color = "#fbc314"
|
||||
if(0.5 to 1.5)
|
||||
if(2 to 3)
|
||||
color = "#f26724"
|
||||
if(-INFINITY to 0.5)
|
||||
if(1 to 2)
|
||||
color = "#ef1d26"
|
||||
description += " The paper looks to be around [round(glass.reagents.pH)]"
|
||||
if(-INFINITY to 1)
|
||||
color = "#c6040c"
|
||||
desc += " The paper looks to be around a pH of [round(cont.reagents.pH)]"
|
||||
used = TRUE
|
||||
|
||||
Reference in New Issue
Block a user