Updating from Cit, pre PR.
This commit is contained in:
@@ -55,4 +55,28 @@
|
||||
/mob/living/simple_animal/hostile/zombie/drop_loot()
|
||||
. = ..()
|
||||
corpse.forceMove(drop_location())
|
||||
corpse.create()
|
||||
corpse.create()
|
||||
|
||||
/mob/living/simple_animal/hostile/unemployedclone
|
||||
name = "Failed clone"
|
||||
desc = "Somebody failed chemistry."
|
||||
icon = 'icons/mob/human.dmi'
|
||||
icon_state = "husk"
|
||||
icon_living = "husk"
|
||||
icon_dead = "husk"
|
||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||
speak_chance = 0
|
||||
stat_attack = UNCONSCIOUS //braains
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 21
|
||||
melee_damage_upper = 21
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/hallucinations/growl1.ogg'
|
||||
a_intent = INTENT_HARM
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
spacewalk = FALSE
|
||||
status_flags = CANPUSH
|
||||
del_on_death = 0
|
||||
|
||||
@@ -347,7 +347,7 @@ im
|
||||
/datum/reagents/proc/beaker_check(atom/A)
|
||||
if(istype(A, /obj/item/reagent_containers/glass/beaker/meta))
|
||||
return
|
||||
else if(istype(A, /obj/item/reagent_containers/glass/beaker/plastic))
|
||||
if((A.type == /obj/item/reagent_containers/glass/beaker/plastic))
|
||||
if(chem_temp > 444)//assuming polypropylene
|
||||
var/list/seen = viewers(5, get_turf(A))
|
||||
var/iconhtml = icon2html(A, seen)
|
||||
@@ -471,9 +471,6 @@ im
|
||||
var/special_react_result = selected_reaction.check_special_react(src)
|
||||
var/list/multiplier = INFINITY //Wat
|
||||
|
||||
for(var/B in cached_required_reagents) //
|
||||
//multiplier = min(multiplier, round(get_reagent_amount(B) / cached_required_reagents[B]))//a simple one over the other? (Is this for multiplying end product? Useful for toxinsludge buildup)
|
||||
multiplier = min(multiplier, (get_reagent_amount(B) / cached_required_reagents[B]))//a simple one over the other? (Is this for multiplying end product? Useful for toxinsludge buildup)
|
||||
//Splits reactions into two types; FermiChem is advanced reaction mechanics, Other is default reaction.
|
||||
//FermiChem relies on two additional properties; pH and impurity
|
||||
//Temperature plays into a larger role too.
|
||||
@@ -483,28 +480,28 @@ im
|
||||
|
||||
if (C.FermiChem == TRUE && !continue_reacting)
|
||||
message_admins("FermiChem Proc'd")
|
||||
|
||||
for(var/B in cached_required_reagents)
|
||||
multiplier = min(multiplier, round((get_reagent_amount(B) / cached_required_reagents[B]), 0.01))
|
||||
for(var/P in selected_reaction.results)
|
||||
targetVol = cached_results[P]*multiplier
|
||||
|
||||
//message_admins("FermiChem target volume: [targetVol]")
|
||||
|
||||
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, 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
|
||||
//else
|
||||
// fermiIsReacting = FALSE
|
||||
// STOP_PROCESSING(SSfastprocess, src)
|
||||
else if (chem_temp > C.ExplodeTemp)
|
||||
if( (chem_temp <= C.ExplodeTemp) && (chem_temp >= C.OptimalTempMin))
|
||||
if( (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, 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
|
||||
if (chem_temp > C.ExplodeTemp)
|
||||
var/datum/chemical_reaction/fermi/Ferm = selected_reaction
|
||||
Ferm.FermiExplode(src, my_atom, volume = total_volume, temp = chem_temp, pH = pH)
|
||||
return 0
|
||||
@@ -518,7 +515,7 @@ im
|
||||
else
|
||||
|
||||
for(var/B in cached_required_reagents) //
|
||||
multiplier = min(multiplier, round(get_reagent_amount(B) / cached_required_reagents[B]))//a simple one over the other? (Is this for multiplying end product? Useful for toxinsludge buildup)
|
||||
multiplier = min(multiplier, round((get_reagent_amount(B) / cached_required_reagents[B]), 0.01))//a simple one over the other? (Is this for multiplying end product? Useful for toxinsludge buildup)
|
||||
|
||||
for(var/B in cached_required_reagents)
|
||||
remove_reagent(B, (multiplier * cached_required_reagents[B]), safety = 1)//safety? removes reagents from beaker using remove function.
|
||||
@@ -566,8 +563,9 @@ im
|
||||
|
||||
//message_admins("updating targetVol from [targetVol]")
|
||||
for(var/B in cached_required_reagents) //
|
||||
multiplier = min(multiplier, round(get_reagent_amount(B) / cached_required_reagents[B]))
|
||||
multiplier*=10
|
||||
multiplier = min(multiplier, round((get_reagent_amount(B) / cached_required_reagents[B]), 0.01))
|
||||
message_admins("Multi:[multiplier],( reag ammount:[get_reagent_amount(B)] / req reag:[cached_required_reagents[B]]")
|
||||
//multiplier*=10
|
||||
if (multiplier == 0)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
fermiIsReacting = FALSE
|
||||
@@ -671,10 +669,6 @@ im
|
||||
//TODO Strong acids eat glass, make it so you NEED plastic beakers for superacids(for some reactions)
|
||||
//message_admins("pH is lover limit, cur pH: [pH]")
|
||||
|
||||
if (purity < C.PurityMin)//If purity is below the min, blow it up.
|
||||
C.FermiExplode(src, my_atom, (reactedVol+targetVol), cached_temp, pH)
|
||||
return
|
||||
|
||||
//For now, purity is handled elsewhere
|
||||
|
||||
//Calculate DeltapH (Deviation of pH from optimal)
|
||||
@@ -738,8 +732,6 @@ im
|
||||
*/
|
||||
//message_admins("cached_results: [cached_results], reactedVol: [reactedVol], stepChemAmmount [stepChemAmmount]")
|
||||
|
||||
|
||||
|
||||
for(var/B in cached_required_reagents)
|
||||
//message_admins("cached_required_reagents(B): [cached_required_reagents[B]], reactedVol: [reactedVol], base stepChemAmmount [stepChemAmmount]")
|
||||
remove_reagent(B, (stepChemAmmount * cached_required_reagents[B]), safety = 1)//safety? removes reagents from beaker using remove function.
|
||||
@@ -749,20 +741,21 @@ im
|
||||
SSblackbox.record_feedback("tally", "chemical_reaction", cached_results[P]*stepChemAmmount, P)//log
|
||||
add_reagent(P, cached_results[P]*(stepChemAmmount), null, cached_temp, purity)//add reagent function!! I THINK I can do this:
|
||||
//Above should reduce yeild based on holder purity.
|
||||
//Purity Check
|
||||
for(var/datum/reagent/R in my_atom.reagents.reagent_list)
|
||||
if(P == R.id)
|
||||
if (R.purity < C.PurityMin)//If purity is below the min, blow it up.
|
||||
C.FermiExplode(src, my_atom, (reactedVol+targetVol), cached_temp, pH)
|
||||
return
|
||||
|
||||
C.FermiCreate(src)//proc that calls when step is done
|
||||
|
||||
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(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]")
|
||||
|
||||
|
||||
//keep track of the current reacted amount
|
||||
reactedVol = reactedVol + stepChemAmmount
|
||||
|
||||
|
||||
//return said amount to compare for next step.
|
||||
return (reactedVol)
|
||||
|
||||
/datum/reagents/proc/reactant_purity(var/datum/chemical_reaction/fermi/C, holder)
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker
|
||||
name = "beaker"
|
||||
desc = "A beaker. It can hold up to 50 units."
|
||||
desc = "A beaker. It can hold up to 50 units. Unable to withstand extreme pHes"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "beaker"
|
||||
item_state = "beaker"
|
||||
@@ -152,13 +152,13 @@
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/jar
|
||||
name = "honey jar"
|
||||
desc = "A jar for honey. It can hold up to 50 units of sweet delight."
|
||||
desc = "A jar for honey. It can hold up to 50 units of sweet delight. Unable to withstand reagents of an extreme pH."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "vapour"
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/large
|
||||
name = "large beaker"
|
||||
desc = "A large beaker. Can hold up to 100 units."
|
||||
desc = "A large beaker. Can hold up to 100 units. Unable to withstand reagents of an extreme pH."
|
||||
icon_state = "beakerlarge"
|
||||
materials = list(MAT_GLASS=2500)
|
||||
volume = 100
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/meta
|
||||
name = "metamaterial beaker"
|
||||
desc = "A large beaker. Can hold up to 200 units."
|
||||
desc = "A large beaker. Can hold up to 200 units. Is able to withstand all chemical situations."
|
||||
icon_state = "beakergold"
|
||||
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000)
|
||||
volume = 200
|
||||
@@ -205,7 +205,7 @@
|
||||
name = "bluespace beaker"
|
||||
desc = "A bluespace beaker, powered by experimental bluespace technology \
|
||||
and Element Cuban combined with the Compound Pete. Can hold up to \
|
||||
300 units."
|
||||
300 units. Unable to withstand reagents of an extreme pH."
|
||||
icon_state = "beakerbluespace"
|
||||
materials = list(MAT_GLASS=3000)
|
||||
volume = 300
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
id = "BElarger"
|
||||
alert_type = null
|
||||
var/moveCalc = 1
|
||||
var/cachedmoveCalc = 1
|
||||
//var/breast_values = list ("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0)
|
||||
//var/list/items = list()
|
||||
//var/items = o.get_contents()
|
||||
@@ -71,7 +72,7 @@
|
||||
moveCalc = 1+((round(B.cached_size) - 9)/5) //Afffects how fast you move, and how often you can click.
|
||||
if(!B)
|
||||
o.remove_movespeed_modifier("megamilk")
|
||||
o.next_move_modifier /= moveCalc
|
||||
sizeMoveMod(1)
|
||||
owner.remove_status_effect(src)
|
||||
var/items = o.get_contents()
|
||||
for(var/obj/item/W in items)
|
||||
@@ -86,14 +87,14 @@
|
||||
o.apply_damage(0.1, BRUTE, target)
|
||||
if(!B.cached_size == B.breast_values[B.prev_size])
|
||||
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
|
||||
o.next_move_modifier *= moveCalc
|
||||
sizeMoveMod(moveCalc)
|
||||
return ..()
|
||||
else if (B.breast_values[B.size] > B.breast_values[B.prev_size])
|
||||
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
|
||||
o.next_move_modifier *= moveCalc
|
||||
sizeMoveMod(moveCalc)
|
||||
else if (B.breast_values[B.size] < B.breast_values[B.prev_size])
|
||||
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
|
||||
o.next_move_modifier /= moveCalc
|
||||
sizeMoveMod(moveCalc)
|
||||
if((B.cached_size) < 16)
|
||||
switch(round(B.cached_size))
|
||||
if(9)
|
||||
@@ -108,7 +109,14 @@
|
||||
|
||||
/datum/status_effect/chem/BElarger/on_remove(mob/living/carbon/M)
|
||||
owner.remove_movespeed_modifier("megamilk")
|
||||
owner.next_move_modifier /= moveCalc
|
||||
sizeMoveMod(1)
|
||||
|
||||
/datum/status_effect/chem/BElarger/proc/sizeMoveMod(var/value)
|
||||
if(cachedmoveCalc == value)
|
||||
return
|
||||
owner.next_move_modifier /= cachedmoveCalc
|
||||
owner.next_move_modifier *= value
|
||||
cachedmoveCalc = value
|
||||
|
||||
|
||||
/datum/status_effect/chem/PElarger
|
||||
@@ -152,17 +160,17 @@
|
||||
if(21)
|
||||
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.AdjustBloodVol(bloodCalc)
|
||||
o.AdjustBloodVol(bloodCalc/2)
|
||||
if(22 to INFINITY)
|
||||
if(prob(2))
|
||||
to_chat(o, "<span class='warning'>Your indulgent johnson is so substantial, it's taking all your blood and affecting your movements!</b></span>")
|
||||
o.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
|
||||
o.AdjustBloodVol(bloodCalc)
|
||||
o.AdjustBloodVol(bloodCalc/2)
|
||||
..()
|
||||
|
||||
/datum/status_effect/chem/PElarger/on_remove(mob/living/carbon/human/o)
|
||||
owner.remove_movespeed_modifier("hugedick")
|
||||
o.ResetBloodVol()
|
||||
owner.ResetBloodVol()
|
||||
|
||||
|
||||
/*//////////////////////////////////////////
|
||||
@@ -485,8 +493,6 @@
|
||||
|
||||
//Truth serum?
|
||||
//adrenals?
|
||||
//M.next_move_modifier *= 0.5
|
||||
//M.adjustStaminaLoss(-5*REM)
|
||||
|
||||
//final tidying
|
||||
resistanceTally += deltaResist
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/datum/quirk/BloodPressure
|
||||
name = "Synthetic blood"
|
||||
desc = "You've got a new form of synthetic blood that increases the total blood volume inside of you!"
|
||||
value = 1
|
||||
value = 0 //I honeslty dunno if this is a good trait? I just means you use more of medbays blood and make janitors madder.
|
||||
mob_trait = TRAIT_HIGH_BLOOD
|
||||
gain_text = "<span class='notice'>You feel full of blood!</span>"
|
||||
lose_text = "<span class='notice'>You feel like your blood pressure went down.</span>"
|
||||
@@ -11,4 +11,4 @@
|
||||
/datum/quirk/BloodPressure/add()
|
||||
var/mob/living/M = quirk_holder
|
||||
M.blood_ratio = 1.2
|
||||
M.blood_volume += 100
|
||||
M.blood_volume += 150
|
||||
|
||||
@@ -84,15 +84,15 @@
|
||||
//Allows breasts to grow and change size, with sprite changes too.
|
||||
//maximum wah
|
||||
//Comical sizes slow you down in movement and actions.
|
||||
//Rediculous sizes remove hands.
|
||||
//Rediculous sizes makes you more cumberson.
|
||||
//Should I turn someone with meter wide... assets into a blob?
|
||||
//this is far too lewd wah
|
||||
|
||||
/obj/item/organ/genital/breasts/update_size()//wah
|
||||
//var/mob/living/carbon/human/o = owner
|
||||
//var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts")
|
||||
//message_admins("Breast size at start: [size], [cached_size], [owner]")
|
||||
if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!(Why does this runtime??)
|
||||
|
||||
if(!ishuman(owner) || !owner)
|
||||
return
|
||||
if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!(Why does this runtime??) - fixed
|
||||
to_chat(owner, "<span class='warning'>You feel your breasts shrinking away from your body as your chest flattens out.</b></span>")
|
||||
src.Remove(owner)
|
||||
switch(round(cached_size))
|
||||
@@ -113,8 +113,7 @@
|
||||
statuscheck = TRUE
|
||||
if(16 to INFINITY) //if Rediculous
|
||||
size = cached_size
|
||||
//message_admins("1. [breast_values[size]] vs [breast_values[prev_size]] || [size] vs [prev_size]")
|
||||
//message_admins("1. [prev_size] vs [breast_values[size]]")
|
||||
|
||||
if(round(cached_size) < 16)//Because byond doesn't count from 0, I have to do this.
|
||||
if (prev_size == 0)
|
||||
prev_size = "flat"
|
||||
@@ -133,8 +132,9 @@
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.Force_update_genitals()
|
||||
prev_size = size
|
||||
|
||||
/* for future use:
|
||||
else if (cached_size >= 16)
|
||||
if(size != "huge")
|
||||
to_chat(owner, "<span class='warning'>Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a hefty [uppertext(size)]cm diameter bosom.</b></span>")// taking both of your hands to hold!.</b></span>")
|
||||
size = "huge"
|
||||
*/
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
/obj/item/organ/genital/penis/update_size()
|
||||
var/mob/living/carbon/human/o = owner
|
||||
if(!ishuman(o) || !o)
|
||||
return
|
||||
if(cached_length < 0)//I don't actually know what round() does to negative numbers, so to be safe!!
|
||||
var/obj/item/organ/genital/penis/P = o.getorganslot("penis")
|
||||
to_chat(o, "<span class='warning'>You feel your tallywacker shrinking away from your body as your groin flattens out!</b></span>")
|
||||
|
||||
@@ -379,28 +379,20 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
playerClone = TRUE
|
||||
M.next_move_modifier = 1
|
||||
M.nutrition -= 500
|
||||
//reaction_mob(SM, )I forget what this is for
|
||||
|
||||
//Damage the clone
|
||||
SM.blood_volume = (BLOOD_VOLUME_NORMAL*SM.blood_ratio)/2
|
||||
SM.adjustCloneLoss(60, 0)
|
||||
SM.setBrainLoss(40)
|
||||
SM.nutrition = startHunger/2
|
||||
//var/datum/reagents/SMR = SM
|
||||
///datum/reagents
|
||||
//var/mob/living/carbon/human has a holder, carbon does not
|
||||
// You need to add to a holder.
|
||||
// reagentS not reagent (?)
|
||||
//SM.create_reagents()
|
||||
|
||||
//Really hacky way to deal with this stupid problem I have
|
||||
//Really hacky way to deal with this stupid problem I have, and heal the clone. I think around 30u will make a healthy clone.
|
||||
SM.reagents.add_reagent("SDGFheal", volume)
|
||||
//holder.add_reagent("SDGFheal", volume)
|
||||
M.reagents.remove_reagent(src.id, 999)
|
||||
//SMR = locate(/datum/reagents in SM)
|
||||
//holder.trans_to(SMR, volume)
|
||||
|
||||
//Give the new clone an idea of their character
|
||||
//SHOULD print last 5 messages said by the original to the clones chatbox
|
||||
//I don't think it works however.
|
||||
var/list/say_log = M.logging[LOG_SAY]
|
||||
var/recent_speech
|
||||
if(LAZYLEN(say_log) > 5)
|
||||
@@ -567,12 +559,11 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
M.visible_message("[M] suddenly shudders, and splits into a funky smelling copy of themselves!")
|
||||
M.emote("scream")
|
||||
M.adjustToxLoss(30, 0)
|
||||
var/mob/living/simple_animal/hostile/zombie/ZI = new(get_turf(M.loc))
|
||||
var/mob/living/simple_animal/hostile/unemployedclone/ZI = new(get_turf(M.loc))
|
||||
ZI.damage_coeff = list(BRUTE = ((1 / volume)**0.25) , BURN = ((1 / volume)**0.1), TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)
|
||||
ZI.real_name = M.real_name//Give your offspring a big old kiss.
|
||||
ZI.name = M.real_name
|
||||
ZI.desc = "[M]'s clone, gone horribly wrong."
|
||||
ZI.zombiejob = FALSE
|
||||
//ZI.updateappearance(mutcolor_update=1)
|
||||
M.reagents.remove_reagent(src.id, 20)
|
||||
else//easier to deal with
|
||||
@@ -631,7 +622,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
/datum/reagent/fermi/BElarger/on_mob_add(mob/living/carbon/M)
|
||||
. = ..()
|
||||
if(!ishuman(M)) //The monkey clause
|
||||
if(volume >= 10)
|
||||
if(volume >= 15) //To prevent monkey breast farms
|
||||
var/turf/T = get_turf(M)
|
||||
var/obj/item/organ/genital/breasts/B = new /obj/item/organ/genital/breasts(T)
|
||||
var/list/seen = viewers(8, T)
|
||||
@@ -649,12 +640,12 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts")
|
||||
if(!B)
|
||||
H.emergent_genital_call()
|
||||
message_admins("No breasts found on init!")
|
||||
//message_admins("No breasts found on init!")
|
||||
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]
|
||||
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!
|
||||
//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
|
||||
if(!ishuman(M))//Just in case
|
||||
@@ -662,7 +653,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts")
|
||||
if(!B) //If they don't have breasts, give them breasts.
|
||||
message_admins("No breasts found!")
|
||||
//message_admins("No breasts found!")
|
||||
var/obj/item/organ/genital/breasts/nB = new
|
||||
nB.Insert(M)
|
||||
if(nB)
|
||||
@@ -703,7 +694,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
|
||||
if(P)
|
||||
P.cached_length = P.cached_length - 0.1
|
||||
message_admins("lewdsnek size: [P.size], [P.cached_length], [holder]")
|
||||
//message_admins("lewdsnek size: [P.size], [P.cached_length], [holder]")
|
||||
P.update()
|
||||
if(T)
|
||||
T.Remove(M)
|
||||
@@ -758,7 +749,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
/datum/reagent/fermi/PElarger/on_mob_add(mob/living/carbon/M)
|
||||
. = ..()
|
||||
if(!ishuman(M)) //Just monkeying around.
|
||||
if(volume >= 10)
|
||||
if(volume >= 15) //to prevent monkey penis farms
|
||||
var/turf/T = get_turf(M)
|
||||
var/obj/item/organ/genital/penis/P = new /obj/item/organ/genital/penis(T)
|
||||
var/list/seen = viewers(8, T)
|
||||
@@ -1133,7 +1124,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
//ImpureChem = "PEsmaller" //If you make an inpure chem, it stalls growth
|
||||
//InverseChemVal = 0.5
|
||||
//InverseChem = "enthrall" //At really impure vols, it just becomes 100% inverse
|
||||
data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Isabelle Foster")
|
||||
data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Fermis Yakumo")
|
||||
creatorID = "honkatonkbramblesnatch"//ckey
|
||||
creatorGender = "Mistress"
|
||||
creatorName = "Fermis Yakumo"
|
||||
@@ -1284,7 +1275,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
DoNotSplit = TRUE
|
||||
var/mob/living/carbon/love
|
||||
|
||||
/datum/reagent/fermi/enthrallExplo/on_mob_life(mob/living/carbon/M)//Love gas, only affects while it's in your system.
|
||||
/datum/reagent/fermi/enthrallExplo/on_mob_life(mob/living/carbon/M)//Love gas, only affects while it's in your system,Gives a positive moodlet if close, gives brain damagea and a negative moodlet if not close enough.
|
||||
if(!M.has_status_effect(STATUS_EFFECT_INLOVE))
|
||||
var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers
|
||||
for(var/victim in seen)
|
||||
@@ -1310,7 +1301,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
M.Stun(10)
|
||||
M.emote("whimper")//does this exist?
|
||||
to_chat(M, "<span class='notice'> You're overcome with a desire to see [love].</span>")
|
||||
M.adjustBrainLoss(5)
|
||||
M.adjustBrainLoss(1)//I found out why everyone was so damaged!
|
||||
..()
|
||||
|
||||
/datum/reagent/fermi/enthrallExplo/on_mob_delete(mob/living/carbon/M)
|
||||
@@ -1458,6 +1449,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
ImpureChem = "naninte_b_goneTox" //If you make an inpure chem, it stalls growth
|
||||
InverseChemVal = 0.25
|
||||
InverseChem = "naninte_b_goneTox" //At really impure vols, it just becomes 100% inverse
|
||||
taste_description = "what can only be described as licking a battery."
|
||||
pH = 9
|
||||
|
||||
/datum/reagent/fermi/naninte_b_gone/on_mob_life(mob/living/carbon/C)
|
||||
@@ -1465,13 +1457,13 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
GET_COMPONENT_FROM(N, /datum/component/nanites, C)
|
||||
if(isnull(N))
|
||||
return ..()
|
||||
N.regen_rate = -0.25//This seems really high
|
||||
N.nanite_volume = -0.55//0.5 seems to be the default to me, so it'll neuter them.
|
||||
..()
|
||||
|
||||
/datum/reagent/fermi/naninte_b_gone/overdose_process(mob/living/carbon/C)
|
||||
//var/component/nanites/N = M.GetComponent(/datum/component/nanites)
|
||||
GET_COMPONENT_FROM(N, /datum/component/nanites, C)
|
||||
if(prob(20))
|
||||
if(prob(5))
|
||||
to_chat(C, "<span class='warning'>The residual voltage from the nanites causes you to seize up!</b></span>")
|
||||
C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE)
|
||||
if(prob(10))
|
||||
@@ -1481,7 +1473,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
to_chat(C, "<span class='warning'>The nanintes short circuit within your system!</b></span>")
|
||||
if(isnull(N))
|
||||
return ..()
|
||||
N.regen_rate = -1//12.5 seems crazy high?
|
||||
N.nanite_volume = -2//12.5 seems crazy high?
|
||||
..()
|
||||
|
||||
//Unobtainable, used if SDGF is impure but not too impure
|
||||
@@ -1493,10 +1485,10 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
|
||||
//Increases shock events.
|
||||
/datum/reagent/fermi/naninte_b_goneTox/on_mob_life(mob/living/carbon/C)//Damages the taker if their purity is low. Extended use of impure chemicals will make the original die. (thus can't be spammed unless you've very good)
|
||||
if(prob(10))
|
||||
if(prob(5))
|
||||
to_chat(C, "<span class='warning'>The residual voltage in your system causes you to seize up!</b></span>")
|
||||
C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE)
|
||||
if(prob(10))
|
||||
if(prob(50))
|
||||
//empulse((get_turf(C)), 2, 1, 1)//So the nanites randomize
|
||||
var/atom/T = C
|
||||
T.emp_act(EMP_HEAVY)
|
||||
@@ -1605,7 +1597,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
/datum/reagent/fermi/fermiABuffer/on_new()
|
||||
if(LAZYLEN(holder.reagent_list) == 1)
|
||||
return
|
||||
pH = ((holder.pH * holder.total_volume)+(3 * src.volume))/(holder.total_volume + src.volume)
|
||||
pH = ((holder.pH * holder.total_volume)+(pH * src.volume))/(holder.total_volume + src.volume)
|
||||
holder.remove_reagent(src.id, 1000)
|
||||
..()
|
||||
|
||||
@@ -1621,7 +1613,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
/datum/reagent/fermi/fermiBBuffer/on_new()
|
||||
if(LAZYLEN(holder.reagent_list) == 1)
|
||||
return
|
||||
pH = ((holder.pH * holder.total_volume)+(11 * src.volume))/(holder.total_volume + src.volume)
|
||||
pH = ((holder.pH * holder.total_volume)+(pH * src.volume))/(holder.total_volume + src.volume)
|
||||
holder.remove_reagent(src.id, 1000)
|
||||
..()
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
name = "Synthetic-derived growth factor"
|
||||
id = "SDGF"
|
||||
results = list("SDGF" = 0.3)
|
||||
required_reagents = list("stable_plasma" = 0.5, "slimejelly" = 0.5, "synthflesh" = 1, "blood" = 1)
|
||||
required_reagents = list("stable_plasma" = 0.5, "slimejelly" = 0.5, "synthflesh" = 0.1, "blood" = 0.1)
|
||||
mix_message = "the reaction gives off a blorble!"
|
||||
//FermiChem vars:
|
||||
OptimalTempMin = 600 // Lower area of bell curve for determining heat based rate reactions
|
||||
@@ -115,7 +115,7 @@
|
||||
CurveSharppH = 4 // How sharp the pH exponential curve is (to the power of value)
|
||||
ThermicConstant = -5 // Temperature change per 1u produced
|
||||
HIonRelease = 0.05 // pH change per 1u reaction
|
||||
RateUpLim = 20 // Optimal/max rate possible if all conditions are perfect
|
||||
RateUpLim = 2 // Optimal/max rate possible if all conditions are perfect
|
||||
FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics
|
||||
FermiExplode = TRUE // If the chemical explodes in a special way
|
||||
PurityMin = 0.25
|
||||
@@ -151,7 +151,7 @@
|
||||
CurveSharppH = 2
|
||||
ThermicConstant = 1
|
||||
HIonRelease = 0.5
|
||||
RateUpLim = 50
|
||||
RateUpLim = 5
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.1
|
||||
@@ -183,7 +183,7 @@
|
||||
CurveSharppH = 2
|
||||
ThermicConstant = 1
|
||||
HIonRelease = -0.5
|
||||
RateUpLim = 50
|
||||
RateUpLim = 5
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.1
|
||||
@@ -201,8 +201,8 @@
|
||||
/datum/chemical_reaction/fermi/astral //done //BORKEN
|
||||
name = "Astrogen"
|
||||
id = "astral"
|
||||
results = list("astral" = 0.5)
|
||||
required_reagents = list("eigenstate" = 0.1, "plasma" = 0.2, "synaptizine" = 0.1, "aluminium" = 0.5)
|
||||
results = list("astral" = 5)
|
||||
required_reagents = list("eigenstate" = 1, "plasma" = 1, "synaptizine" = 1, "aluminium" = 5)
|
||||
//FermiChem vars:
|
||||
OptimalTempMin = 700
|
||||
OptimalTempMax = 800
|
||||
@@ -213,9 +213,9 @@
|
||||
CatalystFact = 0
|
||||
CurveSharpT = 1
|
||||
CurveSharppH = 1
|
||||
ThermicConstant = 20
|
||||
ThermicConstant = 25
|
||||
HIonRelease = -0.5
|
||||
RateUpLim = 20
|
||||
RateUpLim = 10
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.25 // explode purity!
|
||||
@@ -225,7 +225,7 @@
|
||||
name = "MKUltra"
|
||||
id = "enthrall"
|
||||
results = list("enthrall" = 0.3)
|
||||
required_reagents = list("iron" = 0.1, "iodine" = 0.1)
|
||||
required_reagents = list("iron" = 1, "iodine" = 1)
|
||||
//required_reagents = list("cocoa" = 0.1, "astral" = 0.1, "mindbreaker" = 0.1, "psicodine" = 0.1, "happiness" = 0.1)
|
||||
required_catalysts = list("blood" = 0.1)
|
||||
mix_message = "the reaction gives off a burgundy plume of smoke!"
|
||||
@@ -241,7 +241,7 @@
|
||||
CurveSharppH = 4
|
||||
ThermicConstant = 10
|
||||
HIonRelease = -0.1
|
||||
RateUpLim = 5
|
||||
RateUpLim = 2
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.2
|
||||
@@ -291,13 +291,13 @@
|
||||
ExplodeTemp = 750
|
||||
OptimalpHMin = 2
|
||||
OptimalpHMax = 5
|
||||
ReactpHLim = 1
|
||||
ReactpHLim = 3
|
||||
//CatalystFact = 0 //To do 1
|
||||
CurveSharpT = 4
|
||||
CurveSharpT = 8
|
||||
CurveSharppH = 0.5
|
||||
ThermicConstant = -2
|
||||
HIonRelease = -0.05
|
||||
RateUpLim = 50
|
||||
RateUpLim = 5
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.5
|
||||
@@ -314,7 +314,7 @@
|
||||
name = "Furranium"
|
||||
id = "furranium"
|
||||
results = list("furranium" = 0.5)
|
||||
required_reagents = list("aphro" = 0.1, "moonsugar" = 0.1, "silver" = 0.2, "salglu_solution" = 0.1)
|
||||
required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 2, "salglu_solution" = 1)
|
||||
//mix_message = ""
|
||||
//FermiChem vars:
|
||||
OptimalTempMin = 350
|
||||
@@ -328,10 +328,13 @@
|
||||
CurveSharppH = 0.5
|
||||
ThermicConstant = -10
|
||||
HIonRelease = -0.1
|
||||
RateUpLim = 20
|
||||
RateUpLim = 2
|
||||
FermiChem = TRUE
|
||||
PurityMin = 0.30
|
||||
|
||||
//FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10.
|
||||
//There's a weird rounding error or something ugh.
|
||||
|
||||
//Nano-b-gone
|
||||
/datum/chemical_reaction/fermi/naninte_b_gone//done test
|
||||
name = "Naninte bain"
|
||||
@@ -352,7 +355,7 @@
|
||||
CurveSharppH = 1
|
||||
ThermicConstant = 5
|
||||
HIonRelease = 0.01
|
||||
RateUpLim = 200
|
||||
RateUpLim = 20
|
||||
FermiChem = TRUE
|
||||
PurityMin = 0.15
|
||||
|
||||
@@ -365,19 +368,21 @@
|
||||
OptimalTempMin = 250
|
||||
OptimalTempMax = 500
|
||||
ExplodeTemp = 9999 //check to see overflow doesn't happen!
|
||||
OptimalpHMin = 2.5
|
||||
OptimalpHMax = 3.5
|
||||
OptimalpHMin = 2
|
||||
OptimalpHMax = 6
|
||||
ReactpHLim = 0
|
||||
//CatalystFact = 0 //To do 1
|
||||
CurveSharpT = 1
|
||||
CurveSharppH = 0
|
||||
ThermicConstant = 0
|
||||
HIonRelease = -0.01
|
||||
RateUpLim = 200
|
||||
RateUpLim = 20
|
||||
FermiChem = TRUE
|
||||
|
||||
//This reaction bugs and turns everything in it to FermiABuffer - but now it's a feature instead!
|
||||
/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
|
||||
Fa.pH = my_atom.reagents.pH
|
||||
Fa.data = "merge"
|
||||
|
||||
/datum/chemical_reaction/fermi/fermiBBuffer//done test
|
||||
@@ -390,17 +395,19 @@
|
||||
OptimalTempMin = 250
|
||||
OptimalTempMax = 500
|
||||
ExplodeTemp = 9999 //check to see overflow doesn't happen!
|
||||
OptimalpHMin = 10.5
|
||||
OptimalpHMax = 11.5
|
||||
OptimalpHMin = 8
|
||||
OptimalpHMax = 12
|
||||
ReactpHLim = 0
|
||||
//CatalystFact = 0 //To do 1
|
||||
CurveSharpT = 1
|
||||
CurveSharppH = 0
|
||||
ThermicConstant = 0
|
||||
HIonRelease = 0.01
|
||||
RateUpLim = 200
|
||||
RateUpLim = 15
|
||||
FermiChem = TRUE
|
||||
|
||||
//This reaction bugs and turns everything in it to FermiBBuffer - but now it's a feature instead!
|
||||
/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
|
||||
Fb.pH = my_atom.reagents.pH
|
||||
Fb.data = "merge"
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
if(used == TRUE)
|
||||
to_chat(user, "<span class='warning'>[user] has already been used!</span>")
|
||||
return
|
||||
switch(cont.reagents.pH)
|
||||
switch(round(cont.reagents.pH, 1))
|
||||
if(14 to INFINITY)
|
||||
color = "#462c83"
|
||||
if(13 to 14)
|
||||
@@ -82,5 +82,5 @@
|
||||
color = "#ef1d26"
|
||||
if(-INFINITY to 1)
|
||||
color = "#c6040c"
|
||||
desc += " The paper looks to be around a pH of [round(cont.reagents.pH)]"
|
||||
desc += " The paper looks to be around a pH of [round(cont.reagents.pH, 1)]"
|
||||
used = TRUE
|
||||
|
||||
Reference in New Issue
Block a user