Added synthetic-derived growth factor amonst some bugfixes.

This commit is contained in:
Fermi
2019-04-12 05:10:00 +01:00
parent f059a19d8b
commit 28ffc996f7
7 changed files with 153 additions and 11 deletions
@@ -3,6 +3,7 @@ Cit/main/Chemistry notes
SEE README.MD FOR FUNCTIONS
~Main folder: \ss13\Citadel-Station-13\code\modules\reagents\chemistry~
~ADD NEW FILES TO tgstation.dme~
~Recipies: \ss13\Citadel-Station-13\code\modules\reagents\chemistry\recipes~
This contains the reaction recipies and thats it.
@@ -49,6 +50,9 @@ How the end state should look:{
Where the actual reaction takes place, main edit location.
About half way where I've commented (WHY IS THERE NO LINE NUMBERS?!)
~\ss13\Citadel-Station-13\code/modules/reagents/chemistry/reagents~
Where what the reactions do, the code that sets what they do.
~\ss13\Citadel-Station-13\tgui\src\interfaces~
This contains the 4 scripts for generation of the UI for operation of the various chemical equipments.
@@ -172,7 +172,7 @@
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000)
volume = 150
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,60,120, 150)
possible_transfer_amounts = list(5,10,15,20,25,30,60,120,150)
/obj/item/reagent_containers/glass/beaker/plastic/update_icon()
icon_state = "beakerlarge" // hack to lets us reuse the large beaker reagent fill states
@@ -1,3 +1,3 @@
/datum/mood_event/eigenstate
mood_change = -1
description = "<span class='warning'>Where the hell am I? Is this an alternative reality?</span>\n"
description = "<span class='warning'>Where the hell am I? Is this an alternative dimension ?</span>\n"
@@ -0,0 +1,25 @@
/datum/status_effect/chem/SGDF
id = "SGDF"
var/mob/living/clone
/datum/status_effect/chem/SGDF/on_apply()
var/typepath = owner.type
clone = new typepath(owner.loc)
var/mob/living/carbon/O = owner
var/mob/living/carbon/C = clone
if(istype(C) && istype(O))
C.real_name = O.real_name
O.dna.transfer_identity(C)
C.updateappearance(mutcolor_update=1)
return ..()
/datum/status_effect/chem/SGDF/tick()
if(owner.stat == DEAD)
if(clone && clone.stat != DEAD)
if(owner.mind)
owner.mind.transfer_to(clone)
owner.visible_message("<span class='warning'>Lucidity shoots to your previously blank mind as your mind suddenly finishes the cloning process. You marvel for a moment at yourself, as your mind subconciously recollects all your memories up until the point when you cloned yourself. curiously, you find that you memories are blank after you ingested the sythetic serum, leaving you to wonder where the other you is.</span>")
clone = null
if(!clone || clone.stat == DEAD)
to_chat(owner, "<span class='notice'>[linked_extract] desperately tries to move your soul to a living body, but can't find one!</span>")
..()
@@ -24,6 +24,7 @@
/obj/item/reagent/fermi/eigenstate/Initialize()
//. = ..() Unneeded?
var/turf/open/T = get_turf(src)//Sets up coordinate of where it was created
..()
/datum/reagent/fermi/eigenstate/on_mob_life(mob/living/carbon/M) //Teleports to chemistry!
if(holder.!has_reagent("eigenstate"))
@@ -32,12 +33,14 @@
do_sparks(5,FALSE,src)
src.forceMove(T) //Teleports to creation location
do_sparks(5,FALSE,src)
..()
/datum/reagent/fermi/eigenstate/on_mob_delete(mob/living/M) //returns back to original location
do_sparks(5,FALSE,src)
to_chat(M, "<span class='userdanger'>You feel your wavefunction collapse!</span>")
src.forceMove(T2) //Teleports home
do_sparks(5,FALSE,src)
..()
/datum/reagent/fermi/eigenstate/overdose_start(mob/living/M) //Overdose, makes you teleport randomly
if(10)
@@ -49,6 +52,7 @@
do_teleport(src, get_turf(src), 50, asoundin = 'sound/effects/phasein.ogg')
do_sparks(5,FALSE,src)
M.reagents.remove_reagent("eigenstate",1)//So you're not stuck for 10 minutes teleporting
..()
//..() //loop function
@@ -58,12 +62,14 @@
to_chat(M, "<span class='userdanger'>Your wavefunction feels like it's been ripped in half. You feel empty inside.</span>")
M.Jitter(10)
M.nutrition = M.nutrition - (M.nutrition/10)
..()
/datum/reagent/fermi/eigenstate/addiction_act_stage2(mob/living/M)
to_chat(M, "<span class='userdanger'>You start to convlse violently as you feel your consciousness split and merge across realities as your possessions fly wildy off your body.</span>")
M.Jitter(50)
M.AdjustKnockdown(-40, 0)
for(var/obj/item/I in mob.get_contents()); do_teleport(I, get_turf(I), 5, no_effects=TRUE);
..()
/datum/reagent/fermi/eigenstate/addiction_act_stage3(mob/living/M)//Pulls multiple copies of the character from alternative realities while teleporting them around!
M.Jitter(100)
@@ -72,15 +78,19 @@
//Clone function - spawns a clone then deletes it - simulates multiple copies of the player teleporting in
if(1)
var/typepath = owner.type
clone = new typepath(owner.loc)
var/mob/living/carbon/O = owner
var/typepath = M.type
clone = new typepath(M.loc)
//var/mob/living/carbon/O = M
var/mob/living/carbon/C = clone
if(istype(C) && istype(O))
C.real_name = O.real_name
O.dna.transfer_identity(C)
C.updateappearance(mutcolor_update=1)
visible_message("[M] collapses in from an alternative reality!")
C.appearance = M.appearance
//Incase Kevin breaks my code:
//if(istype(C) && istype(O))
// C.real_name = O.real_name
// O.dna.transfer_identity(C)
// C.updateappearance(mutcolor_update=1)
visible_message("[M] collapses in from an alternative reality!")
if(2)
do_teleport(C, get_turf(C), 3, no_effects=TRUE) //teleports clone so it's hard to find the real one!
if(3)
@@ -89,7 +99,7 @@
.=1 //counter
do_teleport(src, get_turf(src), 3, no_effects=TRUE) //Teleports player randomly
//..() //loop function
..() //loop function
/datum/reagent/fermi/eigenstate/addiction_act_stage4(mob/living/M) //Thanks for riding Fermis' wild ride. Mild jitter and player buggery.
M.Jitter(50)
@@ -97,5 +107,61 @@
to_chat(M, "<span class='userdanger'>You feel your eigenstate settle, snapping an alternative version of yourself into reality. All your previous memories are lost and replaced with the alternative version of yourself. This version of you feels more [pick("affectionate", "happy", "lusty", "radical", "shy", "ambitious", "frank", "voracious", "sensible", "witty")] than your pervious self, sent to god knows what universe.</span>")
mob.emote("me",1,"gasps and gazes around in a bewildered and highly confused fashion!",TRUE)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "Alternative dimension", /datum/mood_event/eigenstate)
..()
//eigenstate END
//Clone serum #chemClone
/datum/reagent/fermi/SGDF/on_mob_life(mob/living/carbon/M) //Clones user, then puts a ghost in them! If that fails, makes a braindead clone.
//Setup clone
var/list/candidates = pollCandidatesForMob("Do you want to play as a clone of [M.name] and do you agree to respect their character and act in a similar manner to them? ", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, SM, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm, should allow admins to ban greifers or bullies
if(LAZYLEN(candidates))
//var/typepath = owner.type
//clone = new typepath(owner.loc)
var/typepath = M.type
clone = new typepath(M.loc)
//var/mob/living/carbon/O = owner
var/mob/living/carbon/O = M
var/mob/living/carbon/SM = clone
if(istype(SM) && istype(O))
SM.real_name = O.real_name
O.dna.transfer_identity(SM)
SM.updateappearance(mutcolor_update=1)
var/mob/dead/observer/C = pick(candidates)
SM.key = C.key
SM.mind.enslave_mind_to_creator(user)
SM.sentience_act()
to_chat(SM, "<span class='warning'>You feel a strange sensation building in your mind as you realise there's two of you, before you get a chance to think about it, you suddenly split from your old body, and find yourself face to face with yourself, or rather, your original self.</span>")
to_chat(SM, "<span class='userdanger'>While you find your newfound existence strange, you share the same memories as [M.real_name]. [pick("However, You find yourself indifferent to the goals you previously had, and take more interest in your newfound independance, but still have an indescribable care for the safety of your original", "Your mind has not deviated from the tasks you set out to do, and now that there's two of you the tasks should be much easier.")]</span>")
to_chat(O, "<span class='notice'>You feel a strange sensation building in your mind as you realise there's two of you, before you get a chance to think about it, you suddenly split from your old body, and find yourself face to face with yourself.</span>")
visible_message("[O] suddenly shudders, and splits into two identical twins!")
SM.copy_known_languages_from(user, FALSE)
//after_success(user, SM)
//qdel(src)
else
if(20)
O.apply_status_effect(var/datum/status_effect/chem/SGDF)
..()
//Breast englargement
/datum/reagent/fermi/BElarger
name = "Eigenstasium"
id = "eigenstate"
description = "A volatile collodial mixture derived from milk that encourages mammary production via a potent estrogen mix."
color = "#60A584" // rgb: 96, 0, 255
overdose_threshold = 12
/datum/reagent/fermi/BElarger/overdose_start(mob/living/M) //Turns you into a female if male and ODing
if(M.gender == MALE)
M.gender = FEMALE
M.visible_message("<span class='boldnotice'>[user] suddenly looks more feminine!</span>", "<span class='boldwarning'>You suddenly feel more feminine!</span>")
if(M.gender == FEMALE)
M.gender = FEMALE
M.visible_message("<span class='boldnotice'>[user] suddenly looks more masculine!</span>", "<span class='boldwarning'>You suddenly feel more masculine!</span>")
@@ -0,0 +1,46 @@
//TO TWEAK:
/datum/chemical_reaction/eigenstate
name = "Eigenstasium"
id = "eigenstate"
results = list("eigenstate" = `1`)
required_reagents = list("bluespace" = 1, "stable_plasma" = 1, "sugar" = 1)
//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)
CurveSharp = 4 // How sharp the exponential curve is (to the power of value)
ThermicConstant = -2.5 //Temperature change per 1u produced
HIonRelease = 0.01 //pH change per 1u reaction
RateUpLim = 50 //Optimal/max rate possible if all conditions are perfect
FermiChem = 1
//serum
/datum/chemical_reaction/SDGF
name = "synthetic-derived growth factor"
id = "SDGF"
results = list("SDGF" = `3`)
required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
/datum/chemical_reaction/BElarger
name = ""
id = "e"
results = list("Eigenstasium" = `6`)
required_reagents = list("salglu_solution" = 1, "milk" = 5, "synthflesh" = 2, "silicon" = 2, "crocin" = 2)
//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)
CurveSharp = 4 // How sharp the exponential curve is (to the power of value)
ThermicConstant = -2.5 //Temperature change per 1u produced
HIonRelease = 0.01 //pH change per 1u reaction
RateUpLim = 50 //Optimal/max rate possible if all conditions are perfect
FermiChem = 1
+1
View File
@@ -2777,6 +2777,7 @@
#include "modular_citadel\code\datums\mood_events\generic_positive_events.dm"
#include "modular_citadel\code\datums\mood_events\moodular.dm"
#include "modular_citadel\code\datums\mutations\hulk.dm"
#include "modular_citadel\code\datums\status_effects\chems.dm"
#include "modular_citadel\code\datums\status_effects\debuffs.dm"
#include "modular_citadel\code\datums\traits\neutral.dm"
#include "modular_citadel\code\datums\wires\airlock.dm"