This commit is contained in:
Fermi
2019-05-27 20:25:57 +01:00
parent c531e6afa6
commit 79a7b6b45b
9 changed files with 97 additions and 77 deletions
@@ -293,8 +293,8 @@
dna.species.use_skintones = TRUE
return
//So people who haven't set stuff up don't get rainbow surprises.
dna.features["cock_color"] = "#[dna.features["mcolor"]]"
dna.features["breasts_color"] = "#[dna.features["mcolor"]]"
//dna.features["cock_color"] = "#[dna.features["mcolor"]]"
//dna.features["breasts_color"] = "#[dna.features["mcolor"]]"
return
/datum/species/proc/handle_genitals(mob/living/carbon/human/H)//more like handle sadness
@@ -360,7 +360,22 @@
genital_overlay.color = "#[H.dna.features["breasts_color"]]"
if("vag_color")
genital_overlay.color = "#[H.dna.features["vag_color"]]"
//This was removed for some reason, but it breaks my code, so now it's back!! Tadahhh.
if(MUTCOLORS)
if(fixed_mut_color)
genital_overlay.color = "#[fixed_mut_color]"
else
genital_overlay.color = "#[H.dna.features["mcolor"]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
genital_overlay.color = "#[fixed_mut_color2]"
else
genital_overlay.color = "#[H.dna.features["mcolor2"]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
genital_overlay.color = "#[fixed_mut_color3]"
else
genital_overlay.color = "#[H.dna.features["mcolor3"]]"
standing += genital_overlay
if(LAZYLEN(standing))
H.overlays_standing[layer] = standing.Copy()
@@ -617,9 +617,10 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
if(!B)
H.emergent_genital_call()
return
var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5)
B.prev_size = B.size
B.cached_size = sizeConv[B.size]
if(!B.size == "huge")
var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5)
B.prev_size = B.size
B.cached_size = sizeConv[B.size]
//message_admins("init B size: [B.size], prev: [B.prev_size], cache = [B.cached_size], raw: [sizeConv[B.size]]") //if this runtimes it's cause someone's breasts are too big!
/datum/reagent/fermi/BElarger/on_mob_life(mob/living/carbon/M) //Increases breast size
@@ -1110,11 +1111,11 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
//FERMICHEM2 split into different chems
/datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M)
. = ..()
if(!creatorID)
CRASH("Something went wrong in enthral creation THIS SHOULD NOT APPEAR")
return
if(!ishuman(M))//Just to make sure screwy stuff doesn't happen.
return
if(!creatorID)
CRASH("Something went wrong in enthral creation THIS SHOULD NOT APPEAR") //nervermind this appears when you blow up the reaction. I dunno how
return
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall) //Somehow a beaker got here? (what)
if(E)
return
@@ -1141,7 +1142,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
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))
if((victim == /mob/living/simple_animal/pet/) || (victim == M) || (!M.client))
seen = seen - victim
if(!seen)
return
@@ -1150,9 +1151,9 @@ 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))
if(M.has_status_effect(STATUS_EFFECT_INLOVE))
return
if(C in viewers(7, get_turf(M)))
if((C in viewers(7, get_turf(M))) && (C.client))
M.reagents.remove_reagent(src.id, src.volume)
FallInLove(C, M)
return
@@ -1550,23 +1551,25 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
description = "This reagent will consume itself and move the pH of a beaker towards 3 when added to another."
taste_description = "an acidy sort of taste, blech."
color = "#fbc314"
addProc = FALSE
pH = 6
pH = 3
/datum/reagent/fermi/fermiABuffer/on_new()
/datum/reagent/fermi/fermiABuffer/on_new(datapH)
message_admins("Adding acid")
src.data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
return
src.pH = data
/*to be fixed later
pH = data
if (pH <= 3)
pH = 3
else if (pH >= 7)
pH = 7
*/
holder.pH = ((holder.pH * holder.total_volume)+(pH * src.volume))/(holder.total_volume + src.volume) //Shouldn't be required
var/list/seen = viewers(5, get_turf(holder))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The beaker fizzes as the buffer's pH changes!</b></span>")
to_chat(M, "<span class='warning'>The beaker fizzes as the pH changes!</b></span>")
playsound(get_turf(holder), 'sound/FermiChem/bufferadd.ogg', 50, 1, -1)
holder.remove_reagent(src.id, 1000)
..()
@@ -1577,22 +1580,24 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
description = "This reagent will consume itself and move the pH of a beaker towards 11 when added to another."
taste_description = "an soapy sort of taste, blech."
color = "#3853a4"
addProc = FALSE
pH = 8
pH = 11
/datum/reagent/fermi/fermiBBuffer/on_new()
/datum/reagent/fermi/fermiBBuffer/on_new(datapH)
message_admins("Adding base")
src.data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
return
/*to be fixed later
src.pH = data
if (pH >= 11)
pH = 11
else if (pH <= 7)
pH = 7
*/
holder.pH = ((holder.pH * holder.total_volume)+(pH * src.volume))/(holder.total_volume + src.volume) //Shouldn't be required Might be..?
var/list/seen = viewers(5, get_turf(holder))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The beaker froths as the buffer's pH changes!</b></span>")
playsound(get_turf(holder), 'sound/FermiChem/bufferadd.ogg', 50, 1, -1)
to_chat(M, "<span class='warning'>The beaker froths as the pH changes!</b></span>")
playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1)
holder.remove_reagent(src.id, 1000)
..()
@@ -88,7 +88,7 @@
CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value)
ThermicConstant = 5 //Temperature change per 1u produced
HIonRelease = -0.1 //pH change per 1u reaction
RateUpLim = 5 //Optimal/max rate possible if all conditions are perfect (NEEDS TO BE A MULTIPLE OF 10 IF RESULTS IS DOWN BY A FACTOR OF 10)
RateUpLim = 5 //Optimal/max rate possible if all conditions are perfect
FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics
FermiExplode = FALSE //If the chemical explodes in a special way
@@ -218,7 +218,7 @@
CurveSharppH = 1
ThermicConstant = 25
HIonRelease = -0.5
RateUpLim = 10
RateUpLim = 20
FermiChem = TRUE
FermiExplode = TRUE
PurityMin = 0.25 // explode purity!
@@ -235,7 +235,7 @@
//FermiChem vars:
OptimalTempMin = 780
OptimalTempMax = 800
ExplodeTemp = 820
ExplodeTemp = 830
OptimalpHMin = 12
OptimalpHMax = 13
ReactpHLim = 2
@@ -244,7 +244,7 @@
CurveSharppH = 4
ThermicConstant = 10
HIonRelease = -0.1
RateUpLim = 2
RateUpLim = 1
FermiChem = TRUE
FermiExplode = TRUE
PurityMin = 0.2
@@ -280,7 +280,6 @@
s.set_up(R, volume, T)
s.start()
my_atom.reagents.clear_reagents()
..(volume = 0, pH = 7) //Just a lil fire.
/datum/chemical_reaction/fermi/hatmium // done
name = "Hat growth serum"
@@ -342,7 +341,7 @@
/datum/chemical_reaction/fermi/naninte_b_gone//done test
name = "Naninte bain"
id = "naninte_b_gone"
results = list("naninte_b_gone" = 2)
results = list("naninte_b_gone" = 20)
required_reagents = list("synthflesh" = 5, "uranium" = 5, "iron" = 5, "salglu_solution" = 5)
mix_message = "the reaction gurgles, encapsulating the reagents in flesh before the emp can be set off."
required_temp = 499//To force fermireactions before EMP.
@@ -382,19 +381,10 @@
RateUpLim = 20
FermiChem = TRUE
//This reaction bugs and turns everything in it to FermiABuffer - but now it's a feature instead! And then I fixed it anyways
/datum/chemical_reaction/fermi/fermiABuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this
var/datum/reagent/fermi/fermiABuffer/Fa = locate(/datum/reagent/fermi/fermiABuffer) in my_atom.reagents.reagent_list
if (Fa.pH <= 3)
Fa.pH = 3
Fa.data = 3
return
else if (Fa.pH >= 7)
Fa.pH = 7
Fa.data = 7
return
Fa.pH = my_atom.reagents.pH
Fa.data = Fa.pH
Fa.data = 3
/datum/chemical_reaction/fermi/fermiBBuffer//done test
name = "Ethyl Ethanoate buffer"
@@ -417,15 +407,7 @@
RateUpLim = 15
FermiChem = TRUE
//This reaction bugs and turns everything in it to FermiBBuffer - but now it's a feature instead! And then I fixed it anyways
/datum/chemical_reaction/fermi/fermiBBuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this
var/datum/reagent/fermi/fermiBBuffer/Fb = locate(/datum/reagent/fermi/fermiBBuffer) in my_atom.reagents.reagent_list
if (Fb.pH >= 11)
Fb.pH = 11
Fb.data = 11
return
else if (Fb.pH <= 7)
Fb.pH = 7
Fb.data = 7
Fb.pH = my_atom.reagents.pH
Fb.data = Fb.pH
Fb.data = 11
@@ -1,4 +1,4 @@
/obj/item/pHbooklet
/obj/item/FermiChem/pHbooklet
name = "pH indicator booklet"
desc = "A booklet containing paper soaked in universal indicator."
icon_state = "pHbooklet"
@@ -10,10 +10,10 @@
//set flammable somehow
//A little janky with pockets
/obj/item/pHbooklet/attack_hand(mob/user)
/obj/item/FermiChem/pHbooklet/attack_hand(mob/user)
if(user.get_held_index_of_item(src))
if(numberOfPages >= 1)
var/obj/item/pHpaper/P = new /obj/item/pHpaper
var/obj/item/FermiChem/pHpaper/P = new /obj/item/FermiChem/pHpaper
P.add_fingerprint(user)
P.forceMove(user.loc)
user.put_in_active_hand(P)
@@ -34,7 +34,7 @@
user.put_in_active_hand(src)
return
/obj/item/pHpaper
/obj/item/FermiChem/pHpaper
name = "pH indicator strip"
desc = "A piece of paper that will change colour depending on the pH of a solution."
icon_state = "pHpaper"
@@ -46,12 +46,14 @@
w_class = WEIGHT_CLASS_TINY
//set flammable somehow
/obj/item/pHpaper/afterattack(obj/item/reagent_containers/cont, mob/user, proximity)
/obj/item/FermiChem/pHpaper/afterattack(obj/item/reagent_containers/cont, mob/user, proximity)
if(!istype(cont))
return
if(used == TRUE)
to_chat(user, "<span class='warning'>[user] has already been used!</span>")
return
if(LAZYLEN(cont.reagents.reagent_list) == null)
return
switch(round(cont.reagents.pH, 1))
if(14 to INFINITY)
color = "#462c83"
@@ -86,7 +88,7 @@
desc += " The paper looks to be around a pH of [round(cont.reagents.pH, 1)]"
used = TRUE
/obj/item/pHmeter
/obj/item/FermiChem/pHmeter
name = "pH meter"
desc = "A a electrode attached to a small circuit box that will tell you the pH of a solution. The screen currently displays nothing."
icon_state = "pHmeter"
@@ -94,8 +96,10 @@
resistance_flags = FLAMMABLE
w_class = WEIGHT_CLASS_TINY
/obj/item/pHmeter/afterattack(obj/item/reagent_containers/cont, mob/user, proximity)
/obj/item/FermiChem/pHmeter/afterattack(obj/item/reagent_containers/cont, mob/user, proximity)
if(!istype(cont))
return
to_chat(src, "<span class='notice'><i>gives a beep and displays [round(cont.reagents.pH, 0.1)]</i></span>")
if(LAZYLEN(cont.reagents.reagent_list) == null)
return
to_chat(user, "<span class='notice'>The pH meter beeps and displays [round(cont.reagents.pH, 0.1)]</span>")
desc = "An electrode attached to a small circuit box that will tell you the pH of a solution. The screen currently displays [round(cont.reagents.pH, 0.1)]."