This commit is contained in:
Fermi
2019-05-02 11:34:42 +01:00
parent e70eac8f53
commit f92995bc13
4 changed files with 104 additions and 8 deletions
@@ -528,6 +528,16 @@
/datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume)
chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life") // Lol.
//This is missing, I'm adding it back (see tgwiki). Not sure why we don't have it.
/datum/chemical_reaction/life_friendly
name = "Life (Friendly)"
id = "life_friendly"
required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "sugar" = 1)
required_temp = 374
/datum/chemical_reaction/life_friendly/on_reaction(datum/reagents/holder, created_volume)
chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life (friendly)", FRIENDLY_SPAWN) //Pray for cute cats
/datum/chemical_reaction/corgium
name = "corgium"
id = "corgium"
@@ -120,6 +120,10 @@
/datum/status_effect/chem/PElarger/tick(mob/living/carbon/M)
var/mob/living/carbon/human/o = owner
var/obj/item/organ/genital/penis/P = o.getorganslot("penis")
if(!P)
o.remove_movespeed_modifier("hugedick")
o.next_move_modifier = 1
owner.remove_status_effect(src)
message_admins("PElarge tick!")
var/items = o.get_contents()
for(var/obj/item/W in items)
@@ -140,6 +144,42 @@
o.next_move_modifier = (round(P.length) - 11)
..()
/*//////////////////////////////////////////
Mind control functions
///////////////////////////////////////////
*/
/datum/status_effect/chem/enthral
id = "enthral"
var/mob/living/E //E for enchanter
//var/mob/living/V = list() //V for victims
var/resistance = 0
var/phase = 0
var/enthralID
/datum/status_effect/chem/enthra/on_apply(mob/living/carbon/M)
if(M.ID == )
/datum/status_effect/chem/enthral/tick(mob/living/carbon/M)
redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist))))
switch(phase)
if(0)
return
if(1)
/datum/status_effect/chem/enthral/proc/owner_resist(mob/living/carbon/M)
to_chat(owner, "You attempt to shake the mental cobwebs from your mind!")
if (M.canbearoused)
resistance += ((100 - M.arousalloss/100)/100)
else
resistance += 0.2
/*
/datum/status_effect/chem/OwO
id = "OwO"
@@ -159,7 +199,7 @@
else if(prob(30))
message = replacetext(message, ".", "uwu.")
message = lowertext(message)
*/
/*Doesn't work
/datum/status_effect/chem/SDGF/candidates
id = "SGDFCandi"
@@ -211,7 +211,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
5. If people are being arses when they're a clone, slap them for it, they are told to NOT bugger around with someone else character, if it gets bad I'll add a blacklist, or do a check to see if you've played X amount of hours.
5.1 Another solution I'm okay with is to rename the clone to [M]'s clone, so it's obvious, this obviously ruins anyone trying to clone themselves to get an alibi however. I'd prefer this to not be the case.
5.2 Additionally, this chem is a soft buff to changelings, which apparently need a buff!
5.3 Other similar things exist though; impostors, split personalites, abductors, ect.
5.3 Other similar things exist already though in the codebase; impostors, split personalites, abductors, ect.
6. Giving this to someone without concent is against space law and gets you sent to gulag.
*/
@@ -268,6 +268,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
SM.mind.enslave_mind_to_creator(M)
//If they're a zombie, they can try to negate it with this.
//I seriously wonder if anyone will ever use this function.
if(M.getorganslot(ORGAN_SLOT_ZOMBIE))//sure, it "treats" it, but "you've" still got it. Doesn't always work as well; needs a ghost.
var/obj/item/organ/zombie_infection/ZI = M.getorganslot(ORGAN_SLOT_ZOMBIE)
ZI.Remove(M)
@@ -402,6 +403,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
M.adjustCloneLoss(-2, 0)
M.setBrainLoss(-1)
M.nutrition += 10
..()
//Unobtainable, used if SDGF is impure but not too impure
/datum/reagent/fermi/SDGFtox
@@ -410,7 +412,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
description = "A chem that makes Fermis angry at you if you're reading this, how did you get this???"
metabolization_rate = 1
/datum/reagent/fermi/SDGFtox/on_mob_life(mob/living/carbon/M)//Used to heal the clone after splitting - the clone spawns damaged. (i.e. insentivies players to make more than required, so their clone doesn't have to be treated)
/datum/reagent/fermi/SDGFtox/on_mob_life(mob/living/carbon/M)//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)
M.blood_volume -= 10
M.adjustCloneLoss(2, 0)
..()
@@ -722,17 +724,27 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
qdel(M) //Approx 60minutes till death from initial addiction
..()
/datum/reagent/fermi/mindControl
name = "Astrogen"
id = ""
description = "An opalescent murky liquid that is said to distort your soul from your being."
/datum/reagent/fermi/enthral
name = "Need a name"
id = "enthral"
description = "Need a description."
color = "#A080H4" // rgb: , 0, 255
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
metabolization_rate = 0
overdose_threshold = 20
addiction_threshold = 30
addiction_stage1_end = 9999//Should never end.
creatorID = //add here
var/creatorID //add here
/datum/reagent/fermi/enthral/on_mob_life(mob/living/carbon/M)
if(!creatorID)
CRASH("Something went wrong in enthral creation")
if(M.ID == creatorID)
var/obj/item/organ/tongue/T = M.getorganslot(ORGAN_SLOT_TONGUE)
var/obj/item/organ/tongue/nT = new /obj/item/organ/tongue/silver
T.Remove(M)
nT.Insert(M)
qdel(T)
//Requires player to be within vicinity of creator
//bonuses to mood
@@ -740,6 +752,8 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
//Addiction is applied when creator is out of viewer
//
///////////////////////////////////////////////////////////////////////////////////////////////////
/datum/reagent/fermi/furranium
name = "Furranium"
id = "furranium"
@@ -101,3 +101,35 @@
FermiChem = TRUE
FermiExplode = FALSE
ImpureChem = "carpotoxin"
/datum/chemical_reaction/enthral
name = "need a name"
id = "enthral"
results = list("enthral" = 3)
required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 1)
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
//FermiChem vars:
OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions
OptimalTempMax = 500 // Upper end for above
ExplodeTemp = 550 // Temperature at which reaction explodes
OptimalpHMin = 4 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase)
OptimalpHMax = 9.5 // Higest value for above
ReactpHLim = 2 // How far out pH wil react, giving impurity place (Exponential phase)
CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst)
CurveSharpT = 4 // How sharp the temperature exponential curve is (to the power of value)
CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value)
ThermicConstant = 20 // Temperature change per 1u produced
HIonRelease = 0.01 // pH change per 1u reaction
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
//ImpureChem = "SDGFTox" // What chemical is metabolised with an inpure reaction
//InverseChemVal = 0.5 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
//InverseChem = "SDZF" // What chem is metabolised when purity is below InverseChemVal
/datum/chemical_reaction/enthral/on_reaction(datum/reagents/holder)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
var/enthralID = B.get_blood_id()
var/datum/reagent/fermi/enthral/E = locate(/datum/reagent/fermi/enthral) in holder.reagent_list
E.enthralID = enthralID