This commit is contained in:
Fermi
2019-06-13 07:51:46 +01:00
parent 54985c05d9
commit 2a76cfa285
7 changed files with 51 additions and 9 deletions
+1 -1
View File
@@ -16,7 +16,7 @@
var/spawned_disease = null
var/disease_amount = 20
var/spillable = FALSE
var/beaker_resistances = 0b11
var/beaker_resistances = 3
/obj/item/reagent_containers/Initialize(mapload, vol)
. = ..()
@@ -187,6 +187,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
if(purity < 0.5)//Impure chems don't function as you expect
return
if((M.ckey == creatorID) && (creatorName == M.real_name)) //same name AND same player - same instance of the player. (should work for clones?)
log_game("FERMICHEM: [M] ckey: [M.key] has been given velvetspeech")
/*if(M.has_status_effect(STATUS_EFFECT_INLOVE) //Not sure if I need/want this.
to_chat(M, "<span class='warning'><i>You are too captivated by your love to think about anything else</i></span>")
return*/
@@ -200,6 +201,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
else
message_admins("MKUltra: [creatorName], [creatorID], is enthralling [M.name], [M.ckey]")
M.apply_status_effect(/datum/status_effect/chem/enthrall)
log_game("FERMICHEM: [M] ckey: [M.key] has taken MKUltra")
/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
. = ..()
@@ -273,7 +275,8 @@ Creating a chem with a low purity will make you permanently fall in love with so
else
E = M.has_status_effect(/datum/status_effect/chem/enthrall)
to_chat(M, "<span class='big love'><i>Your mind shatters under the volume of the mild altering chem inside of you, breaking all will and thought completely. Instead the only force driving you now is the instinctual desire to obey and follow [creatorName]. Your highest priority is now to stay by their side at all costs.</i></span>")
M.slurring = 100
log_game("FERMICHEM: [M] ckey: [M.key] has been mindbroken for [creatorName] ckey: [creatorID]")
M.slurring = 100
M.confused = 100
E.phase = 4
E.mental_capacity = 0
@@ -307,6 +310,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
return
M.apply_status_effect(STATUS_EFFECT_INLOVE, love)
to_chat(M, "<span class='big love'>You develop overwhelmingly deep feelings for [love], your heart beginning to race as you look upon them with new eyes. You are determined to keep them safe above all other priorities.</span>")
log_game("FERMICHEM: [M] ckey: [M.key] has temporarily fallen for [love] ckey: [love.key]")
else
if(get_dist(M, love) < 8)
if(M.has_trait(TRAIT_NYMPHO)) //Add this back when merged/updated.
@@ -328,6 +332,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "InLove")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "MissingLove")
to_chat(M, "Your feelings for [love] suddenly vanish!")
log_game("FERMICHEM: [M] ckey: [M.key] is no longer in temp love")
..()
/datum/reagent/fermi/proc/FallInLove(mob/living/carbon/Lover, mob/living/carbon/Love)
@@ -340,6 +345,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
Lover.faction |= "[REF(Love)]"
Lover.apply_status_effect(STATUS_EFFECT_INLOVE, Love)
forge_valentines_objective(Lover, Love, TRUE)
log_game("FERMICHEM: [M] ckey: [M.key] has been chemically made to fall for [love] ckey: [love.key]")
return
//For addiction see chem.dm
@@ -66,9 +66,11 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
if(pollStarted == FALSE)
pollStarted = TRUE
candies = pollGhostCandidates("Do you want to play as a clone and do you agree to respect their character and act in a similar manner to them? I swear to god if you diddle them I will be very disapointed in you.")
log_game("FERMICHEM: [M] ckey: [M.key] has taken SDGF, and ghosts have been polled.")
if(20 to INFINITY)
if(LAZYLEN(candies) && playerClone == FALSE) //If there's candidates, clone the person and put them in there!
message_admins("Ghost candidate found! [candies] is becoming a clone of [M]! Hee~!! Exciting!!")
log_game("FERMICHEM: [M] ckey: [M.key] is creating a clone, controlled by [candies]")
to_chat(M, "<span class='warning'>The cells reach a critical micelle concentration, nucleating rapidly within your body!</span>")
var/typepath = M.type
var/mob/living/carbon/human/fermi_Gclone = new typepath(M.loc)
@@ -87,10 +89,18 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
var/obj/item/organ/zombie_infection/ZI = M.getorganslot(ORGAN_SLOT_ZOMBIE)
ZI.Remove(M)
ZI.Insert(SM)
log_game("FERMICHEM: [M] ckey: [M.key]'s zombie_infection has been transferred to their clone")
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 independence, 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(M, "<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.</span>")
if(prob(50))
to_chat(SM, "<span class='userdanger'>While you find your newfound existence strange, you share the same memories as [M.real_name]. However, You find yourself indifferent to the goals you previously had, and take more interest in your newfound independence, but still have an indescribable care for the safety of your original</span>")
log_game("FERMICHEM: [SM] ckey: [SM.key]'s is not bound by [M] ckey [M.key]'s will, and is free to determine their own goals, while respecting and acting as their origin.")
else
to_chat(SM, "<span class='userdanger'>While you find your newfound existence strange, you share the same memories as [M.real_name]. 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>")
log_game("FERMICHEM: [SM] ckey: [SM.key]'s is bound by [M] ckey [M.key]'s objectives, and is encouraged to help them complete them.")
to_chat(M, "<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.</span>")
M.visible_message("[M] suddenly shudders, and splits into two identical twins!")
SM.copy_known_languages_from(M, FALSE)
playerClone = TRUE
@@ -106,6 +116,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
//Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger.
SM.reagents.add_reagent("SDGFheal", volume)
M.reagents.remove_reagent(id, volume)
log_game("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone")
return
else if(playerClone == FALSE) //No candidates leads to two outcomes; if there's already a braincless clone, it heals the user, as well as being a rare souce of clone healing (thematic!).
@@ -115,6 +126,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
if(21)
to_chat(M, "<span class='notice'>The cells fail to catalyse around a nucleation event, instead merging with your cells.</span>") //This stuff is hard enough to make to rob a user of some benefit. Shouldn't replace Rezadone as it requires the user to not only risk making a player controlled clone, but also requires them to have split in two (which also requires 30u of SGDF).
M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC)
log_game("FERMICHEM: [M] ckey: [M.key] is being healed by SDGF")
if(22 to INFINITY)
M.adjustCloneLoss(-1, 0)
M.adjustBruteLoss(-1, 0)
@@ -146,6 +158,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
M.next_move_modifier -= 4
to_chat(M, "<span class='notice'>Your body splits away from the cell clone of yourself, leaving you with a drained and hollow feeling inside.</span>")
M.apply_status_effect(/datum/status_effect/chem/SGDF)
log_game("FERMICHEM: [M] ckey: [M.key] has created a mindless clone of themselves")
if(87 to INFINITY)
M.reagents.remove_reagent(id, volume)//removes SGDF on completion. Has to do it this way because of how i've coded it. If some madlab gets over 1k of SDGF, they can have the clone healing.
@@ -234,6 +247,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
M.nutrition = 20000 //https://www.youtube.com/watch?v=Bj_YLenOlZI
if(75 to 85)
M.adjustToxLoss(1, 0)// the warning!
if(86)//mean clone time!
if (!M.reagents.has_reagent("pen_acid"))//Counterplay is pent.)
message_admins("(non-infectious) Zombie spawned at [M.loc], produced by impure chem, wah!")
@@ -248,8 +262,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
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."
log_game("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying zombie instead")
M.reagents.remove_reagent(id, 20)
else//easier to deal with
to_chat(M, "<span class='notice'>The pentetic acid seems to have stopped the decay for now, clumping up the cells into a horrifying tumour!</span>")
M.nutrition = startHunger - 500
@@ -258,9 +273,10 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
S.name = "Living teratoma"
S.real_name = "Living teratoma"//horrifying!!
S.rabid = 1//Make them an angery boi
//S.updateappearance(mutcolor_update=1)
M.reagents.remove_reagent(id, volume)
to_chat(M, "<span class='warning'>A large glob of the tumour suddenly splits itself from your body. You feel grossed out and slimey...</span>")
if(87 to INFINITY)//purges chemical fast, producing a "slime" for each one. Said slime is weak to fire. TODO: turn tumour slime into real variant.
log_game("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying teratoma instead")
if(87 to INFINITY)
M.adjustToxLoss(1, 0)
..()
@@ -31,6 +31,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
M.alpha = 255
switch(current_cycle)
if(0)//Require a minimum
log_game("FERMICHEM: [M] ckey: [M.key] became an astral ghost")
origin = M
if (G == null)
G = new(get_turf(M.loc))
@@ -77,6 +78,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
to_chat(M, "<span class='warning'>You notice your body starting to disappear, maybe you took too much Astrogen...?</b></span>")
M.alpha--
antiGenetics--
log_game("FERMICHEM: [M] ckey: [M.key] has become addicted to Astrogen")
if(220)
to_chat(M, "<span class='notice'>Your addiction is only getting worse as your body disappears. Maybe you should get some more, and fast?</b></span>")
M.alpha--
@@ -109,4 +111,5 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
M.visible_message("[M] suddenly disappears, their body evaporating from existence, freeing [M] from their mortal coil.")
message_admins("[M] (ckey: [M.ckey]) has become one with the universe, and have continuous memories thoughout their lives should they find a way to come back to life (such as an inteligence potion, midround antag, ghost role).")
qdel(M) //Approx 60minutes till death from initial addiction
log_game("FERMICHEM: [M] ckey: [M.key] has been obliterated from Astrogen addiction")
..()
@@ -33,11 +33,13 @@
//Main functions
/datum/reagent/fermi/eigenstate/on_mob_life(mob/living/M) //Teleports to chemistry!
log_game("FERMICHEM: [M] ckey: [M.key] took eigenstasium")
switch(current_cycle)
if(0)
location_return = get_turf(M) //sets up return point
to_chat(M, "<span class='userdanger'>You feel your wavefunction split!</span>")
if(purity > 0.75) //Teleports you home if it's pure enough
log_game("FERMICHEM: [M] ckey: [M.key] returned to [location_created] using eigenstasium")
var/turf/open/creation = location_created
do_sparks(5,FALSE,M)
do_teleport(M, creation, 0, asoundin = 'sound/effects/phasein.ogg')
@@ -56,6 +58,7 @@
/datum/reagent/fermi/eigenstate/overdose_start(mob/living/M) //Overdose, makes you teleport randomly
. = ..()
to_chat(M, "<span class='userdanger'>Oh god, you feel like your wavefunction is about to tear.</span>")
log_game("FERMICHEM: [M] ckey: [M.key] has overdosed on eigenstasium")
M.Jitter(10)
/datum/reagent/fermi/eigenstate/overdose_process(mob/living/M) //Overdose, makes you teleport randomly, probably one of my favourite effects. Sometimes kills you.
@@ -70,6 +73,7 @@
switch(addictCyc1)
if(1)
to_chat(M, "<span class='userdanger'>Your wavefunction feels like it's been ripped in half. You feel empty inside.</span>")
log_game("FERMICHEM: [M] ckey: [M.key] has become addicted to eigenstasium")
M.Jitter(10)
M.nutrition = M.nutrition - (M.nutrition/15)
addictCyc1++
@@ -136,6 +140,7 @@
M.Knockdown(0)
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 previous self, sent to god knows what universe.</span>")
M.emote("me",1,"flashes into reality suddenly, gasping as they gaze around in a bewildered and highly confused fashion!",TRUE)
log_game("FERMICHEM: [M] ckey: [M.key] has become an alternative universe version of themselves.")
M.reagents.remove_all_type(/datum/reagent, 100, 0, 1)
for(var/datum/mood_event/Me in M)
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, Me) //Why does this not work?
@@ -47,6 +47,7 @@
B.throw_at(T2, 8, 1)
M.reagents.remove_reagent(id, volume)
return
log_game("FERMICHEM: [M] ckey: [M.key] has ingested Sucubus milk")
var/mob/living/carbon/human/H = M
H.genital_override = TRUE
var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts")
@@ -14,16 +14,19 @@
if(purity < 0)
CRASH("Purity below 0 for chem: [id], Please let Fermis Know!")
if (purity == 1 || DoNotSplit == TRUE)
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [id]")
return
else if (InverseChemVal > purity)//Turns all of a added reagent into the inverse chem
M.reagents.remove_reagent(id, amount, FALSE)
M.reagents.add_reagent(InverseChem, amount, FALSE, other_purity = 1)
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [InverseChem]")
return
else
//var/pureVol = amount * puritys
var/impureVol = amount * (1 - purity) //turns impure ratio into impure chem
M.reagents.remove_reagent(id, (impureVol), FALSE)
M.reagents.add_reagent(ImpureChem, impureVol, FALSE, other_purity = 1)
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [id]")
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [ImpureChem]")
return
//When merging two fermichems, see above
@@ -34,6 +37,7 @@
if (purity < 0)
CRASH("Purity below 0 for chem: [id], Please let Fermis Know!")
if (purity == 1 || DoNotSplit == TRUE)
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [id] in themselves")
return
else if (InverseChemVal > purity)
M.reagents.remove_reagent(id, amount, FALSE)
@@ -41,6 +45,7 @@
for(var/datum/reagent/fermi/R in M.reagents.reagent_list)
if(R.name == "")
R.name = name//Negative effects are hidden
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [InverseChem]")
return
else
var/impureVol = amount * (1 - purity)
@@ -49,6 +54,8 @@
for(var/datum/reagent/fermi/R in M.reagents.reagent_list)
if(R.name == "")
R.name = name//Negative effects are hidden
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [id]")
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [ImpureChem]")
return
@@ -139,7 +146,7 @@
var/obj/item/organ/tongue/nT = new /obj/item/organ/tongue/fluffy
T.Remove(M)
nT.Insert(M)
T.moveToNullspace()//To the zelda room.
T.moveToNullspace()//To valhalla
to_chat(M, "<span class='notice'>Youw tongue feews... weally fwuffy!!</span>")
if(17 to INFINITY)
if(prob(10))
@@ -165,6 +172,8 @@
T.Insert(M)
to_chat(M, "<span class='notice'>You feel your tongue.... unfluffify...?</span>")
M.say("Pleh!")
else
log_game("FERMICHEM: [M] ckey: [M.key]'s tongue has been made permanent")
///////////////////////////////////////////////////////////////////////////////////////////////
//Nanite removal
@@ -390,6 +399,7 @@
catto.desc = "A cute catto! They remind you of [H] somehow."
catto.color = "#[H.dna.features["mcolor"]]"
H.moveToNullspace()
log_game("FERMICHEM: [M] ckey: [M.key] has been made into a cute catto.")
/datum/reagent/fermi/secretcatchem/on_mob_life(mob/living/carbon/H)
if(prob(5))
@@ -406,3 +416,4 @@
H.say("*wag")//force update sprites.
to_chat(H, "<span class='notice'>[words]</span>")
qdel(catto)
log_game("FERMICHEM: [M] ckey: [M.key] has returned to normal")