Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit765
This commit is contained in:
@@ -10,7 +10,6 @@ GLOBAL_LIST_EMPTY(loadout_whitelist_ids)
|
||||
/proc/load_loadout_config(loadout_config)
|
||||
if(!loadout_config)
|
||||
loadout_config = "config/loadout_config.txt"
|
||||
LAZYINITLIST(GLOB.loadout_whitelist_ids)
|
||||
var/list/file_lines = world.file2list(loadout_config)
|
||||
for(var/line in file_lines)
|
||||
if(!line || line[1] == "#")
|
||||
@@ -26,12 +25,9 @@ GLOBAL_LIST_EMPTY(loadout_whitelist_ids)
|
||||
GLOB.loadout_whitelist_ids["[lineID]"] = sublinecontent
|
||||
|
||||
/proc/initialize_global_loadout_items()
|
||||
LAZYINITLIST(GLOB.loadout_items)
|
||||
load_loadout_config()
|
||||
for(var/item in subtypesof(/datum/gear))
|
||||
var/datum/gear/I = new item
|
||||
if(!GLOB.loadout_items[slot_to_string(I.category)])
|
||||
LAZYINITLIST(GLOB.loadout_items[slot_to_string(I.category)])
|
||||
LAZYSET(GLOB.loadout_items[slot_to_string(I.category)], I.name, I)
|
||||
if(islist(I.geargroupID))
|
||||
var/list/ggidlist = I.geargroupID
|
||||
|
||||
@@ -69,18 +69,6 @@
|
||||
path = /obj/item/toy/katana
|
||||
cost = 3
|
||||
|
||||
/datum/gear/box
|
||||
name = "Spare box"
|
||||
category = SLOT_IN_BACKPACK
|
||||
path = /obj/item/storage/box
|
||||
cost = 2
|
||||
|
||||
/datum/gear/crowbar
|
||||
name = "Pocket Crowbar"
|
||||
category = SLOT_IN_BACKPACK
|
||||
path = /obj/item/crowbar
|
||||
cost = 2
|
||||
|
||||
/datum/gear/tapeplayer
|
||||
name = "Taperecorder"
|
||||
category = SLOT_IN_BACKPACK
|
||||
@@ -96,11 +84,6 @@
|
||||
category = SLOT_IN_BACKPACK
|
||||
path = /obj/item/newspaper
|
||||
|
||||
/datum/gear/paperbin
|
||||
name = "Paper Bin"
|
||||
category = SLOT_IN_BACKPACK
|
||||
path = /obj/item/paper_bin
|
||||
|
||||
/datum/gear/crayons
|
||||
name = "Box of crayons"
|
||||
category = SLOT_IN_BACKPACK
|
||||
@@ -146,4 +129,4 @@
|
||||
category = SLOT_IN_BACKPACK
|
||||
path = /obj/item/storage/fancy/ringbox/diamond
|
||||
cost = 5
|
||||
|
||||
|
||||
|
||||
@@ -12,5 +12,5 @@
|
||||
name = "Joy mask"
|
||||
category = SLOT_WEAR_MASK
|
||||
path = /obj/item/clothing/mask/joy
|
||||
cost = 9
|
||||
|
||||
cost = 3
|
||||
|
||||
|
||||
@@ -85,20 +85,18 @@
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/polychromic
|
||||
cost = 4 //too many people with neon green coats is hard on the eyes
|
||||
|
||||
/* Commented out until it is "balanced"
|
||||
/datum/gear/coat/sec
|
||||
name = "Security winter coat"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/security
|
||||
restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer") // Reserve it to the Security Departement
|
||||
*/
|
||||
|
||||
/datum/gear/coat/med
|
||||
name = "Medical winter coat"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/medical
|
||||
restricted_roles = list("Chief Medical Officer", "Medical Doctor") // Reserve it to Medical Doctors and their boss, the Chief Medical Officer
|
||||
|
||||
/datum/gear/coat/paramedic
|
||||
name = "Paramedic winter coat"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/paramedic
|
||||
restricted_roles = list("Chief Medical Officer", "Paramedic") // Reserve it to Paramedics and their boss, the Chief Medical Officer
|
||||
|
||||
/datum/gear/coat/robotics
|
||||
name = "Robotics winter coat"
|
||||
category = SLOT_WEAR_SUIT
|
||||
@@ -234,4 +232,4 @@
|
||||
/datum/gear/christmascoatrg
|
||||
name = "Red and Green Christmas Coat"
|
||||
category = SLOT_WEAR_SUIT
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatrg
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatrg
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
#define DEFAULT_SLOT_AMT 2
|
||||
#define HANDS_SLOT_AMT 2
|
||||
#define BACKPACK_SLOT_AMT 4
|
||||
|
||||
/datum/preferences
|
||||
//gear
|
||||
var/gear_points = 10
|
||||
var/list/gear_categories
|
||||
var/list/chosen_gear
|
||||
var/gear_tab
|
||||
|
||||
//pref vars
|
||||
var/screenshake = 100
|
||||
var/damagescreenshake = 2
|
||||
var/arousable = TRUE
|
||||
var/widescreenpref = TRUE
|
||||
var/autostand = TRUE
|
||||
var/auto_ooc = FALSE
|
||||
|
||||
//vore prefs
|
||||
var/toggleeatingnoise = TRUE
|
||||
var/toggledigestionnoise = TRUE
|
||||
var/hound_sleeper = TRUE
|
||||
var/cit_toggles = TOGGLES_CITADEL
|
||||
|
||||
|
||||
/datum/preferences/New(client/C)
|
||||
..()
|
||||
LAZYINITLIST(chosen_gear)
|
||||
|
||||
/datum/preferences/proc/is_loadout_slot_available(slot)
|
||||
var/list/L
|
||||
LAZYINITLIST(L)
|
||||
for(var/i in chosen_gear)
|
||||
var/datum/gear/G = i
|
||||
var/occupied_slots = L[slot_to_string(initial(G.category))] ? L[slot_to_string(initial(G.category))] + 1 : 1
|
||||
LAZYSET(L, slot_to_string(initial(G.category)), occupied_slots)
|
||||
switch(slot)
|
||||
if(SLOT_IN_BACKPACK)
|
||||
if(L[slot_to_string(SLOT_IN_BACKPACK)] < BACKPACK_SLOT_AMT)
|
||||
return TRUE
|
||||
if(SLOT_HANDS)
|
||||
if(L[slot_to_string(SLOT_HANDS)] < HANDS_SLOT_AMT)
|
||||
return TRUE
|
||||
else
|
||||
if(L[slot_to_string(slot)] < DEFAULT_SLOT_AMT)
|
||||
return TRUE
|
||||
@@ -14,17 +14,6 @@
|
||||
features["mcolor2"] = sanitize_hexcolor(features["mcolor2"], 3, 0)
|
||||
features["mcolor3"] = sanitize_hexcolor(features["mcolor3"], 3, 0)
|
||||
|
||||
//gear loadout
|
||||
var/text_to_load
|
||||
S["loadout"] >> text_to_load
|
||||
var/list/saved_loadout_paths = splittext(text_to_load, "|")
|
||||
LAZYCLEARLIST(chosen_gear)
|
||||
gear_points = initial(gear_points)
|
||||
for(var/i in saved_loadout_paths)
|
||||
var/datum/gear/path = text2path(i)
|
||||
if(path)
|
||||
LAZYADD(chosen_gear, path)
|
||||
gear_points -= initial(path.cost)
|
||||
|
||||
/datum/preferences/proc/cit_character_pref_save(savefile/S)
|
||||
//ipcs
|
||||
@@ -47,10 +36,3 @@
|
||||
//flavor text
|
||||
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"])
|
||||
|
||||
//gear loadout
|
||||
if(islist(chosen_gear))
|
||||
if(chosen_gear.len)
|
||||
var/text_to_save = chosen_gear.Join("|")
|
||||
S["loadout"] << text_to_save
|
||||
else
|
||||
S["loadout"] << "" //empty string to reset the value
|
||||
|
||||
@@ -171,10 +171,10 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
E.enthrallGender = creatorGender
|
||||
E.master = get_mob_by_key(creatorID)
|
||||
to_chat(M, "<span class='big love'><i>Your addled, plastic, mind bends under the chemical influence of a new [(E.lewd?"master":"leader")]. Your highest priority is now to stay by [creatorName]'s side, following and aiding them at all costs.</i></span>") //THIS SHOULD ONLY EVER APPEAR IF YOU MINDBREAK YOURSELF AND THEN GET INJECTED FROM SOMEONE ELSE.
|
||||
log_game("FERMICHEM: Narcissist [M] ckey: [M.key] been rebound to [creatorName], ID: [creatorID]")
|
||||
log_reagent("FERMICHEM: Narcissist [M] ckey: [M.key] been rebound to [creatorName], ID: [creatorID]")
|
||||
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")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] has been given velvetspeech")
|
||||
var/obj/item/organ/vocal_cords/Vc = M.getorganslot(ORGAN_SLOT_VOICE)
|
||||
var/obj/item/organ/vocal_cords/nVc = new /obj/item/organ/vocal_cords/velvet
|
||||
if(Vc)
|
||||
@@ -183,9 +183,9 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
qdel(Vc)
|
||||
to_chat(M, "<span class='notice'><i>You feel your vocal chords tingle you speak in a more charasmatic and sultry tone.</i></span>")
|
||||
else
|
||||
log_game("FERMICHEM: MKUltra: [creatorName], [creatorID], is enthralling [M.name], [M.ckey]")
|
||||
log_reagent("FERMICHEM: 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")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] has taken MKUltra")
|
||||
|
||||
/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
|
||||
. = ..()
|
||||
@@ -194,7 +194,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks it, they fall in love randomly. If someone else drinks it, the creator falls in love with them.
|
||||
if(M.has_status_effect(STATUS_EFFECT_INLOVE))//Can't be enthralled when enthralled, so to speak.
|
||||
return
|
||||
var/list/seen = (M.visible_atoms(M.client?.view || world.view) - M) | viewers(M.client?.view || world.view, M)
|
||||
var/list/seen = (M.fov_view(M.client?.view || world.view) - M) | viewers(M.client?.view || world.view, M)
|
||||
for(var/victim in seen)
|
||||
if(ishuman(victim))
|
||||
var/mob/living/carbon/V = victim
|
||||
@@ -213,7 +213,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
var/mob/living/carbon/C = get_mob_by_key(creatorID)
|
||||
if(M.has_status_effect(STATUS_EFFECT_INLOVE))
|
||||
return
|
||||
if(C.client && (M in C.visible_atoms(C.client.view)))
|
||||
if(C.client && (M in C.fov_view(C.client.view)))
|
||||
M.reagents.del_reagent(type)
|
||||
FallInLove(C, M)
|
||||
return
|
||||
@@ -251,7 +251,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
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 and protect them at all costs.</i></span>")
|
||||
else
|
||||
to_chat(M, "<span class='big warning'><i>The might volume of chemicals in your system overwhelms your mind, and you suddenly agree with what [creatorName] has been saying. Your highest priority is now to stay by their side and protect them at all costs.</i></span>")
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has been mindbroken for [creatorName] ckey: [creatorID]")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] has been mindbroken for [creatorName] ckey: [creatorID]")
|
||||
M.slurring = 100
|
||||
M.confused = 100
|
||||
E.phase = 4
|
||||
@@ -279,7 +279,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
if(HAS_TRAIT(M, TRAIT_MINDSHIELD))
|
||||
return ..()
|
||||
if(!M.has_status_effect(STATUS_EFFECT_INLOVE))
|
||||
var/list/seen = (M.visible_atoms(M.client?.view || world.view) - M) | viewers(M.client?.view || world.view, M)
|
||||
var/list/seen = (M.fov_view(M.client?.view || world.view) - M) | viewers(M.client?.view || world.view, M)
|
||||
for(var/victim in seen)
|
||||
if((isanimal(victim)) || (!isliving(victim)))
|
||||
seen -= victim
|
||||
@@ -289,7 +289,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
M.apply_status_effect(STATUS_EFFECT_INLOVE, love)
|
||||
lewd = (M.client?.prefs.cit_toggles & HYPNO) && (love.client?.prefs.cit_toggles & HYPNO)
|
||||
to_chat(M, "[(lewd?"<span class='love'>":"<span class='warning'>")][(lewd?"You develop a sudden crush on [love], your heart beginning to race as you look upon them with new eyes.":"You suddenly feel like making friends with [love].")] You feel strangely drawn towards them.</span>")
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has temporarily bonded with [love] ckey: [love.key]")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] has temporarily bonded with [love] ckey: [love.key]")
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Times people have bonded")
|
||||
else
|
||||
if(get_dist(M, love) < 8)
|
||||
@@ -314,7 +314,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, "[(lewd?"<span class='love'>":"<span class='warning'>")]Your feelings for [love] suddenly vanish!")
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] is no longer in temp bond")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] is no longer in temp bond")
|
||||
..()
|
||||
|
||||
/datum/reagent/fermi/proc/FallInLove(mob/living/carbon/Lover, mob/living/carbon/Love)
|
||||
@@ -331,7 +331,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
Lover.apply_status_effect(STATUS_EFFECT_INLOVE, Love)
|
||||
forge_valentines_objective(Lover, Love, TRUE)
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Times people have become infatuated.")
|
||||
log_game("FERMICHEM: [Lover] ckey: [Lover.key] has been chemically made to fall for [Love] ckey: [Love.key]")
|
||||
log_reagent("FERMICHEM: [Lover] ckey: [Lover.key] has been chemically made to fall for [Love] ckey: [Love.key]")
|
||||
return
|
||||
|
||||
//For addiction see chem.dm
|
||||
|
||||
@@ -64,7 +64,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
if(pollStarted == FALSE)
|
||||
pollStarted = TRUE
|
||||
candies = pollGhostCandidates("Do you want and agree to play as a clone of [M], respect their character and not engage in ERP without permission from the original?", ignore_category = POLL_IGNORE_CLONE)
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has taken SDGF, and ghosts have been polled.")
|
||||
log_reagent("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!
|
||||
to_chat(M, "<span class='warning'>The cells reach a critical micelle concentration, nucleating rapidly within your body!</span>")
|
||||
@@ -82,7 +82,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
if(C2.key && C2)
|
||||
C2.transfer_ckey(SM, FALSE)
|
||||
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]")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] is creating a clone, controlled by [C2]")
|
||||
break
|
||||
else
|
||||
candies -= C2
|
||||
@@ -97,16 +97,16 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
var/obj/item/organ/zombie_infection/ZI = M.getorganslot(ORGAN_SLOT_ZOMBIE)
|
||||
ZI.Remove()
|
||||
ZI.Insert(SM)
|
||||
log_game("FERMICHEM: [M] ckey: [M.key]'s zombie_infection has been transferred to their clone")
|
||||
log_reagent("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 your original, a perfect clone of your origin.</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.")
|
||||
log_reagent("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.")
|
||||
log_reagent("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!")
|
||||
@@ -124,7 +124,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(/datum/reagent/fermi/SDGFheal, volume)
|
||||
M.reagents.remove_reagent(type, volume)
|
||||
log_game("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone")
|
||||
log_reagent("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone")
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Sentient clones made")
|
||||
return ..()
|
||||
|
||||
@@ -135,7 +135,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).
|
||||
REMOVE_TRAIT(M, TRAIT_DISFIGURED, TRAIT_GENERIC)
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] is being healed by SDGF")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] is being healed by SDGF")
|
||||
if(22 to INFINITY)
|
||||
M.adjustCloneLoss(-1, 0)
|
||||
M.adjustBruteLoss(-1, 0)
|
||||
@@ -182,7 +182,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
S.originalmind = M.mind
|
||||
S.status_set = TRUE
|
||||
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has created a mindless clone of themselves")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] has created a mindless clone of themselves")
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Braindead clones made")
|
||||
if(87 to INFINITY)
|
||||
M.reagents.remove_reagent(type, 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.
|
||||
@@ -349,7 +349,7 @@ 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")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying zombie instead")
|
||||
M.reagents.remove_reagent(type, 20)
|
||||
|
||||
else//easier to deal with
|
||||
@@ -362,7 +362,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
S.rabid = 1//Make them an angery boi
|
||||
M.reagents.remove_reagent(type, 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>")
|
||||
log_game("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying teratoma instead")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying teratoma instead")
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Zombie clones made!")
|
||||
|
||||
if(87 to INFINITY)
|
||||
|
||||
@@ -67,7 +67,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
|
||||
M.alpha = 255
|
||||
if(current_cycle == 0)
|
||||
originalmind = M.mind
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] became an astral ghost")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] became an astral ghost")
|
||||
origin = M
|
||||
if (G == null)
|
||||
G = new(get_turf(M.loc))
|
||||
@@ -100,29 +100,25 @@ 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/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)
|
||||
qdel(G)
|
||||
if(!(G?.mind))
|
||||
if(!G)
|
||||
qdel(G)
|
||||
return ..()
|
||||
if(M.mind) //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))
|
||||
M.mind.transfer_to(G2)
|
||||
to_chat(G2, "<span class='warning'>[M]'s conciousness snaps back to them as [M.p_their()] astrogen runs out, kicking your projected mind out!'</b></span>")
|
||||
log_reagent("FERMICHEM: [G2.mind.name] has been booted out of [M] as their original mind came back as the Astrogen reagent ran out!")
|
||||
G.mind.transfer_to(origin)
|
||||
qdel(G)
|
||||
if(overdosed)
|
||||
to_chat(M, "<span class='warning'>The high volume of astrogen you just took causes you to black out momentarily as your mind snaps back to your body.</b></span>")
|
||||
M.Sleeping(sleepytime, 0)
|
||||
antiGenetics = 255
|
||||
if(G)//just in case
|
||||
qdel(G)
|
||||
log_game("FERMICHEM: [M] has astrally returned to their body!")
|
||||
log_reagent("FERMICHEM: [M] has astrally returned to their body!")
|
||||
if(M.mind && M.mind == originalmind)
|
||||
M.remove_status_effect(/datum/status_effect/chem/astral_insurance)
|
||||
//AS.Remove(M)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
//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.
|
||||
/datum/reagent/fermi/astral/addiction_act_stage1(mob/living/carbon/M)
|
||||
@@ -137,7 +133,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")
|
||||
log_reagent("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--
|
||||
@@ -172,5 +168,5 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
|
||||
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).")
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Astral obliterations")
|
||||
qdel(M) //Approx 60minutes till death from initial addiction
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has been obliterated from Astrogen addiction")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] has been obliterated from Astrogen addiction")
|
||||
..()
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
//Main functions
|
||||
/datum/reagent/fermi/eigenstate/on_mob_life(mob/living/M) //Teleports to chemistry!
|
||||
if(current_cycle == 0)
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] took eigenstasium")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] took eigenstasium")
|
||||
|
||||
//make hologram at return point
|
||||
Eigenstate = new(loc)
|
||||
@@ -55,7 +55,7 @@
|
||||
if(cached_purity > 0.9) //Teleports you home if it's pure enough
|
||||
if(!location_created && data) //Just in case
|
||||
location_created = data["location_created"]
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] returned to [location_created] using eigenstasium")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] returned to [location_created] using eigenstasium")
|
||||
do_sparks(5,FALSE,M)
|
||||
do_teleport(M, location_created, 0, asoundin = 'sound/effects/phasein.ogg')
|
||||
do_sparks(5,FALSE,M)
|
||||
@@ -78,7 +78,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")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] has overdosed on eigenstasium")
|
||||
M.Jitter(20)
|
||||
metabolization_rate += 0.5 //So you're not stuck forever teleporting.
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
/datum/reagent/fermi/eigenstate/addiction_act_stage1(mob/living/M) //Welcome to Fermis' wild ride.
|
||||
if(addiction_stage == 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")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key] has become addicted to eigenstasium")
|
||||
M.Jitter(10)
|
||||
M.adjust_nutrition(-M.nutrition/15)
|
||||
..()
|
||||
@@ -158,7 +158,7 @@
|
||||
M.DefaultCombatKnockdown(100)
|
||||
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.</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.")
|
||||
log_reagent("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)
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
to_chat(M, "You find yourself unable to supress the desire to howl!")
|
||||
M.emote("awoo")
|
||||
if(prob(20))
|
||||
var/list/seen = M.visible_atoms() - M //Sound and sight checkers
|
||||
var/list/seen = M.fov_view() - M //Sound and sight checkers
|
||||
for(var/victim in seen)
|
||||
if(isanimal(victim) || !isliving(victim))
|
||||
seen -= victim
|
||||
@@ -139,7 +139,7 @@
|
||||
to_chat(M, "You find yourself unable to supress the desire to howl!")
|
||||
M.emote("awoo")
|
||||
if(prob(5))
|
||||
var/list/seen = M.visible_atoms() - M //Sound and sight checkers
|
||||
var/list/seen = M.fov_view() - M //Sound and sight checkers
|
||||
for(var/victim in seen)
|
||||
if(isanimal(victim) || !isliving(victim))
|
||||
seen -= victim
|
||||
@@ -156,7 +156,7 @@
|
||||
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")
|
||||
log_reagent("FERMICHEM: [M] ckey: [M.key]'s tongue has been made permanent")
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -374,7 +374,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
|
||||
catto.color = "#[H.dna.features["mcolor"]]"
|
||||
catto.pseudo_death = TRUE
|
||||
H.forceMove(catto)
|
||||
log_game("FERMICHEM: [H] ckey: [H.key] has been made into a cute catto.")
|
||||
log_reagent("FERMICHEM: [H] ckey: [H.key] has been made into a cute catto.")
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "cats")
|
||||
if(H.InCritical())
|
||||
perma = TRUE
|
||||
@@ -408,7 +408,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
|
||||
H.say("*wag")//force update sprites.
|
||||
to_chat(H, "<span class='notice'>[words]</span>")
|
||||
qdel(catto)
|
||||
log_game("FERMICHEM: [H] ckey: [H.key] has returned to normal")
|
||||
log_reagent("FERMICHEM: [H] ckey: [H.key] has returned to normal")
|
||||
|
||||
|
||||
/datum/reagent/fermi/secretcatchem/reaction_mob(var/mob/living/L)
|
||||
@@ -417,7 +417,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
|
||||
if(catto.origin)
|
||||
var/mob/living/carbon/human/H = catto.origin
|
||||
H.stat = CONSCIOUS
|
||||
log_game("FERMICHEM: [catto] ckey: [catto.key] has returned to normal.")
|
||||
log_reagent("FERMICHEM: [catto] ckey: [catto.key] has returned to normal.")
|
||||
to_chat(catto, "<span class='notice'>Your body shifts back to normal!</span>")
|
||||
H.forceMove(catto.loc)
|
||||
catto.mind.transfer_to(H)
|
||||
|
||||
Reference in New Issue
Block a user