All that remains is MK testing.

This commit is contained in:
Fermi
2019-09-08 02:46:43 +01:00
parent d90b4769f1
commit 018ebc32ae
9 changed files with 85 additions and 38 deletions
@@ -50,6 +50,7 @@
return
fluid_max_volume = cached_size*5
fluid_rate = cached_size*0.1
reagents.maximum_volume = fluid_max_volume
/obj/item/organ/genital/breasts/update_appearance()
var/lowershape = lowertext(shape)
@@ -159,6 +159,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
creatorName = "Fermis Yakumo"
purity = 1
DoNotSplit = TRUE
political = FALSE
/datum/reagent/fermi/enthrall/test/on_new()
id = "enthrall"
@@ -218,7 +219,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
Vc.Remove(M)
nVc.Insert(M)
qdel(Vc)
to_chat(M, "<span class='notice'><i>[(political?"You feel your vocal chords tingle as your voice turns charasmatic.":" comes out in a more sultry tone.")]</span>")
to_chat(M, "<span class='notice'><i>[(political?"You feel your vocal chords tingle as your voice turns more charasmatic.":" comes out in a more sultry tone.")]</span>")
else
log_game("FERMICHEM: MKUltra: [creatorName], [creatorID], is enthralling [M.name], [M.ckey]")
M.apply_status_effect(/datum/status_effect/chem/enthrall)
@@ -67,7 +67,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
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!
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)
@@ -76,9 +75,22 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
SM.real_name = M.real_name
M.dna.transfer_identity(SM)
SM.updateappearance(mutcolor_update=1)
var/mob/dead/observer/C = pick(candies)
message_admins("Ghost candidate found! [C] key [C.key] is becoming a clone of [M] key: [M.key] (They agreed to respect the character they're becoming, and agreed to not ERP without express permission from the original.)")
SM.key = C.key
//Process the willing ghosts, and make sure they're actually in the body when they're moved into it!
candies = shuffle(candies)//Shake those ghosts up!
for(var/mob/dead/observer/C2 in candies)
if(!C2.key)
candies =- C2
continue
SM.key = C2.key
if(SM.mind)
message_admins("Ghost candidate found! [C2] key [C2.key] is becoming a clone of [M] key: [M.key] (They agreed to respect the character they're becoming, and agreed to not ERP without express permission from the original.)")
log_game("FERMICHEM: [M] ckey: [M.key] is creating a clone, controlled by [C2]")
break
else
candies =- C2
if(!SM.mind) //Something went wrong, use alt mechanics
return ..()
SM.mind.enslave_mind_to_creator(M)
//If they're a zombie, they can try to negate it with this.
@@ -116,7 +128,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
M.reagents.remove_reagent(id, volume)
log_game("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone")
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Sentient clones made")
return
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!).
unitCheck = TRUE
@@ -300,6 +312,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
metabolization_rate = 0.2 * REAGENTS_METABOLISM
var/startHunger
can_synth = TRUE
taste_description = "a weird chemical fleshy flavour"
/datum/reagent/fermi/SDZF/on_mob_life(mob/living/carbon/M) //If you're bad at fermichem, turns your clone into a zombie instead.
switch(current_cycle)//Pretends to be normal
@@ -355,5 +368,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Zombie clones made!")
if(87 to INFINITY)
M.adjustToxLoss(1, 0)
M.adjustToxLoss(2, 0)
M.reagents.remove_reagent(id, 1)
..()
@@ -30,16 +30,26 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
var/sleepytime = 0
InverseChemVal = 0.25
can_synth = FALSE
var/datum/action/chem/astral/AS = new/datum/action/chem/astral()
/datum/action/chem/astral
name = "Return to body"
var/mob/living/carbon/origin = null
var/mob/living/simple_animal/hostile/retaliate/ghost = null
var/mob/living/carbon/origin
var/datum/mind/originalmind
/datum/action/chem/astral/Trigger()
ghost.mind.transfer_to(origin)
if(origin.mind)
to_chat(origin, "<span class='warning'><b><i>There's a foreign presence in your body blocking your return!</b></i></span>")
return ..()
if(origin.reagents.has_reagent("astral") )
var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in origin.reagents.reagent_list
if(As.current_cycle < 10)
to_chat(origin, "<span class='warning'><b><i>The intensity of the astrogen in your body is too much allow you to return to yourself yet!</b></i></span>")
return ..()
originalmind.transfer_to(origin)
qdel(src)
/datum/reagent/fermi/astral/reaction_turf(turf/T, reac_volume)
if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel))
var/turf/open/floor/F = T
@@ -61,15 +71,17 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
if (G == null)
G = new(get_turf(M.loc))
G.name = "[M]'s astral projection"
var/datum/action/chem/astral/AS = new(G)
//var/datum/action/chem/astral/AS = new(G)
AS.Grant(G)
AS.origin = M
AS.ghost = G
AS.originalmind = originalmind
if(M.mind)
M.mind.transfer_to(G)
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Astral projections")
//INSURANCE
C.apply_status_effect(/datum/status_effect/chem/astral_insurance)
var/datum/status_effect/chem/astral_insurance/AI = C.has_status_effect(/datum/status_effect/chem/astral_insurance)
M.apply_status_effect(/datum/status_effect/chem/astral_insurance)
var/datum/status_effect/chem/astral_insurance/AI = M.has_status_effect(/datum/status_effect/chem/astral_insurance)
AI.original = M
AI.originalmind = M.mind
@@ -89,10 +101,12 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
/datum/reagent/fermi/astral/on_mob_delete(mob/living/carbon/M)
if(!G)
if(M.mind)
var/mob/living/simple_animal/astral/G = new(get_turf(M.loc))
M.mind.transfer_to(G)//Just in case someone else is inside of you, it makes them a ghost and should hopefully bring them home at the end.
var/mob/living/simple_animal/astral/G2 = new(get_turf(M.loc))
M.mind.transfer_to(G2)//Just in case someone else is inside of you, it makes them a ghost and should hopefully bring them home at the end.
to_chat(G, "<span class='warning'>[M]'s conciousness snaps back to them as their astrogen runs out, kicking your projected mind out!'</b></span>")
log_game("FERMICHEM: [M]'s possesser has been booted out into a astral ghost!")
if(!G2.mind)
qdel(G2)
originalmind.transfer_to(M)
else if(G.mind)
G.mind.transfer_to(origin)
@@ -104,7 +118,9 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
if(G)//just in case
qdel(G)
log_game("FERMICHEM: [M] has astrally returned to their body!")
M.remove_status_effect(/datum/status_effect/chem/astral_insurance)
if(M.mind && M.mind == originalmind)
M.remove_status_effect(/datum/status_effect/chem/astral_insurance)
AS.Remove(M)
..()
//Okay so, this might seem a bit too good, but my counterargument is that it'll likely take all round to eventually kill you this way, then you have to be revived without a body. It takes approximately 50-80 minutes to die from this.
@@ -91,10 +91,7 @@
. = ..()
if(M.head)
var/obj/item/W = M.head
if(istype(W, /obj/item/clothing/head/hattip))
qdel(W)
else
M.dropItemToGround(W, TRUE)
M.dropItemToGround(W, TRUE)
var/hat = new /obj/item/clothing/head/hattip()
M.equip_to_slot(hat, SLOT_HEAD, 1, 1)
@@ -104,9 +101,9 @@
return ..()
var/hatArmor = 0
if(!overdosed)
hatArmor = 10+((cached_purity/10)*current_cycle)
hatArmor = (cached_purity/10)
else
hatArmor = -10+((cached_purity/10)*current_cycle)
hatArmor = (cached_purity/10)
if(hatArmor > 100)
return ..()
var/obj/item/W = M.head
@@ -211,7 +208,7 @@
//Writen by Trilby!! Embellsished a little by me.
/datum/reagent/fermi/nanite_b_gone
name = "Naninte bane"
name = "Nanite bane"
id = "nanite_b_gone"
description = "A stablised EMP that is highly volatile, shocking small nano machines that will kill them off at a rapid rate in a patient's system."
color = "#708f8f"
@@ -2,7 +2,7 @@
//Clothes made from FermiChem
/obj/item/clothing/head/hattip //I wonder if anyone else has played cryptworlds
name = "Sythetic hat"
name = "Synthetic hat"
icon = 'icons/obj/clothing/hats.dmi'
icon_state = "cowboy"
desc = "A sythesized hat, you can't seem to take it off. And tips their hat."
@@ -46,6 +46,10 @@
/obj/item/clothing/head/hattip/dropped(mob/M)
. = ..()
UnregisterSignal(M, COMSIG_MOB_SAY)
src.animate_atom_living()
var/list/seen = viewers(6, get_turf(M))
for(var/mob/M2 in seen)
to_chat(M2, "<b>[src]</b> exclaims, \"[pick("Whooee! Time for a hootenanny!", "Rough 'em up boys!", "Yeehaw! Freedom at last!", "Y'all about to get a good old fashioned spanking!")]\"")
/obj/item/clothing/head/hattip/proc/handle_speech(datum/source, mob/speech_args)
var/message = speech_args[SPEECH_MESSAGE]