From a6ede9fecc75902152d278d0198e8730900cff8c Mon Sep 17 00:00:00 2001 From: Fermi Date: Sun, 19 May 2019 23:32:30 +0100 Subject: [PATCH] Endless fixes --- code/modules/reagents/chemistry/holder.dm | 37 ++++---- .../code/datums/mood_events/chem_events.dm | 6 +- .../code/datums/status_effects/chems.dm | 41 +++++---- .../chemistry/reagents/fermi_reagents.dm | 38 +++++++-- .../reagents/chemistry/recipes/fermi.dm | 85 ++++++++++++------- .../code/modules/reagents/objects/items.dm | 34 ++++---- 6 files changed, 147 insertions(+), 94 deletions(-) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 263fbdde2a..409d584502 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -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]") diff --git a/modular_citadel/code/datums/mood_events/chem_events.dm b/modular_citadel/code/datums/mood_events/chem_events.dm index 79d8c115d5..933128f031 100644 --- a/modular_citadel/code/datums/mood_events/chem_events.dm +++ b/modular_citadel/code/datums/mood_events/chem_events.dm @@ -4,11 +4,11 @@ /datum/mood_event/enthrall mood_change = 5 - description = "I am a good pet for Master.\n" + description = "I am a good pet for Master.\n" /datum/mood_event/enthrallpraise mood_change = 12 - description = "I feel so happy! I'm a good pet who Master loves!\n" + description = "I feel so happy! I'm a good pet who Master loves!\n" timeout = 600 /datum/mood_event/enthrallscold @@ -34,7 +34,7 @@ /datum/mood_event/InLove mood_change = 10 - description = "I'm in love!!\n" + description = "I'm in love!!\n" /datum/mood_event/MissingLove mood_change = -10 diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 5a704e6784..95dee449bd 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -76,27 +76,19 @@ o.dropItemToGround(W, TRUE) playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) to_chat(owner, "Your enormous breasts are way too large to fit anything over them!") - //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, "Your expansive chest has become a more managable size, liberating your movements.") 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, "Your indulgent busom is so substantial, it's affecting your movements!") - 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, "Your back is feeling a little sore.") ..() /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, "Your enormous package is way to large to fit anything over!") switch(round(P.cached_length)) - if(11) + if(21) if (!(P.prev_size == P.size)) - to_chat(o, "Your rascally willy has become a more managable size, liberating your movements.") + to_chat(o, "Your rascally willy has become a more managable size, liberating your movements.") 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, "Your indulgent johnson is so substantial, it's affecting your movements!") - 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, "Your pet [owner.name] appears to have finished internalising your last command.") + ..() //Check for proximity of master DONE //Place triggerreacts here - create a dictionary of triggerword and effect. diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index 2f8936c9ed..050d1edeaf 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -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, "You develop deep feelings for [love], your heart beginning to race as you look upon them with new eyes.") else diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 798e416e98..95229f9745 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -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, "The reaction suddenly condenses, creating a pair of breasts!")//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, "The reaction suddenly condenses, creating a penis!")//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" diff --git a/modular_citadel/code/modules/reagents/objects/items.dm b/modular_citadel/code/modules/reagents/objects/items.dm index 113d0783d9..1319048bc8 100644 --- a/modular_citadel/code/modules/reagents/objects/items.dm +++ b/modular_citadel/code/modules/reagents/objects/items.dm @@ -50,35 +50,35 @@ to_chat(user, "[user] has already been used!") 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