From 07df0102f8f61f7a9bbf44d51af2aff392406359 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Sun, 24 May 2020 22:21:14 +0200 Subject: [PATCH] Demodularizing a few reagents, a client var, the rest hud button. (#12329) --- code/_onclick/hud/human.dm | 6 +- code/modules/admin/chat_commands.dm | 48 ++++ code/modules/client/client_defines.dm | 2 + .../chemistry/reagents/drug_reagents.dm | 125 +++++++++ .../chemistry/reagents/other_reagents.dm | 90 +++++++ .../reagents/chemistry/recipes/drugs.dm | 31 +++ .../code/_onclick/hud/screen_objects.dm | 10 - .../code/modules/admin/chat_commands.dm | 46 ---- .../code/modules/client/client_defines.dm | 2 - .../modules/reagents/reagents/cit_reagents.dm | 246 ------------------ modular_citadel/icons/ui/screen_midnight.dmi | Bin 6702 -> 6052 bytes modular_citadel/icons/ui/screen_operative.dmi | Bin 5839 -> 5815 bytes .../icons/ui/screen_plasmafire.dmi | Bin 5343 -> 5372 bytes modular_citadel/icons/ui/screen_slimecore.dmi | Bin 5021 -> 5094 bytes tgstation.dme | 3 - 15 files changed, 299 insertions(+), 310 deletions(-) delete mode 100644 modular_citadel/code/modules/admin/chat_commands.dm delete mode 100644 modular_citadel/code/modules/client/client_defines.dm delete mode 100644 modular_citadel/code/modules/reagents/reagents/cit_reagents.dm diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 328e008f10..f281853b0f 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -241,13 +241,13 @@ using.hud = src hotkeybuttons += using - //CIT CHANGES - rest and combat mode buttons - using = new /obj/screen/restbutton() - using.icon = tg_ui_icon_to_cit_ui(ui_style) + using = new /obj/screen/rest() + using.icon = ui_style using.screen_loc = ui_pull_resist using.hud = src static_inventory += using + //CIT CHANGES - combat mode buttons using = new /obj/screen/combattoggle() using.icon = tg_ui_icon_to_cit_ui(ui_style) using.screen_loc = ui_combat_toggle diff --git a/code/modules/admin/chat_commands.dm b/code/modules/admin/chat_commands.dm index e2ddcdcf6a..9b15729a9e 100644 --- a/code/modules/admin/chat_commands.dm +++ b/code/modules/admin/chat_commands.dm @@ -142,3 +142,51 @@ GLOBAL_LIST(round_end_notifiees) log_admin("[sender.friendly_name] has added [params] to the current round's bunker bypass list.") message_admins("[sender.friendly_name] has added [params] to the current round's bunker bypass list.") return "[params] has been added to the current round's bunker bypass list." + +// More (silly) chat commands citadel added. +/datum/tgs_chat_command/wheelofsalt + name = "wheelofsalt" + help_text = "What are Citadel Station 13 players salting about today? Spin the wheel and find out!" + +/datum/tgs_chat_command/wheelofsalt/Run(datum/tgs_chat_user/sender, params) + var/saltresult = "The wheel of salt [pick("clatters","screams","vibrates","clanks","resonates","groans","moans","squeaks","emits a[pick(" god-forsaken"," lewd"," creepy"," generic","n orgasmic"," demonic")] [pick("airhorn","bike horn","trumpet","clown","latex","vore","dog","laughing")] noise")] as it spins violently... And it seems the salt of the day is the " + var/saltprimarysubject = "[pick("combat","medical","grab","furry","wall","orgasm","cat","ERP","lizard","dog","latex","vision cone","atmospherics","table","chem","vore","dogborg","Skylar Lineman","Mekhi Anderson","Peppermint","rework","cum","dick","cockvore","Medihound","sleeper","belly sleeper","door wires","flightsuit","coder privilege","Developer abuse","ban reason","github self merge","red panda","beret","male catgirl","powergame","hexacrocin","Discord server","Clitadel","Cargonia","Solarian Republic","Main and RP merger","bluespace","salt","chem dispenser theft","Botany","moth","BWOINK","anal vore","stamina","Mason Jakops","mining","noodle","milf","Lavaland","Necropolis","Ashwalker","Chase Redtail","Drew Mint","Pavel Marsk","Joker Amari","Durgit","chaplain","Antag","nanite","Syndicate","Nar-Sie","Ratvar","Cult","maint","Foam-Force","AI","cyborg","ghost","clockwork","cyberpunk","vaporwave","Clown","Leon Beech","Mime","security","research","Megafauna","Bubblegum","Ash Drake","Legion","Colossus","White Shuttle","Changeling","Cowboy","Space Ninja","Poly","Revolutionary","Skyrim","forbidden fruits","xenomorph","blob","Nuclear Operative","crossdressing")]" + var/saltsecondarysubject = "[pick("rework","changes","r34","ban","removal","addition","leak","proposal","fanart","introduction","tabling","ERP","bikeshedding","crossdressing","sprites","semen keg","argument","theft","nerf","screeching","salt","creampie","lewding","murder","kissing","marriage","replacement","fucking","ship","netflix adaptation","dance","remaster","system","voyeur","decoration","pre-order","bukkake","seduction","worship","gangbang","handholding")]" + if(prob(10)) + saltresult += "@here for your salt, all day every day" + if(prob(1)) + saltresult += " @everyone gets some salt this time too" + else + saltresult += "[saltprimarysubject] [saltsecondarysubject]" + return "[saltresult]!" + +/datum/tgs_chat_command/valentine + name = "valentine" + help_text = "Get a random flirt line." + +/datum/tgs_chat_command/valentine/Run(datum/tgs_chat_user/sender, params) + return "[pick(GLOB.flirts)]" + +/datum/tgs_chat_command/despacito + name = "despacito" //someone please high effort this sometime and make it a full on ytdl search + help_text = "This is so sad." + +/datum/tgs_chat_command/despacito/Run() + return "https://www.youtube.com/watch?v=kJQP7kiw5Fk" + +/datum/tgs_chat_command/poly + name = "poly" + help_text = "The Lewder, more applicable Poly speak for Citadel Station 13." + var/list/speech_buffer + +/datum/tgs_chat_command/poly/Run() + LAZYINITLIST(speech_buffer) //I figure this is just safe to do for everything at this point + if(length(speech_buffer)) //Let's not look up the whole json EVERY TIME, just the first time. + return "[pick(speech_buffer)]" + else + var/json_file = file("data/npc_saves/Poly.json") + if(!fexists(json_file)) + return "**BAWWWWWK!** LEAVE THE HEADSET! ***BAWKKKKK!!***" + var/list/json = json_decode(file2text(json_file)) + speech_buffer = json["phrases"] + return "[pick(speech_buffer)]" diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 47255d9535..1659a4ff37 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -101,3 +101,5 @@ /// Messages currently seen by this client var/list/seen_messages + ///When was the last time we warned them about not cryoing without an ahelp, set to -5 minutes so that rounstart cryo still warns + var/cryo_warned = -5 MINUTES \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index ef4b7f3a53..f1e45d0717 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -559,3 +559,128 @@ var/mob/living/carbon/C = M if(!C.undergoing_cardiac_arrest()) C.set_heartattack(TRUE) + +//aphrodisiac & anaphrodisiac + +/datum/reagent/drug/aphrodisiac + name = "Crocin" + description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac." + taste_description = "strawberries" + color = "#FFADFF"//PINK, rgb(255, 173, 255) + can_synth = FALSE + +/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO)) + if((prob(min(current_cycle/2,5)))) + M.emote(pick("moan","blush")) + if(prob(min(current_cycle/4,10))) + var/aroused_message = pick("You feel frisky.", "You're having trouble suppressing your urges.", "You feel in the mood.") + to_chat(M, "[aroused_message]") + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(current_cycle, aphro = TRUE) // redundant but should still be here + for(var/g in genits) + var/obj/item/organ/genital/G = g + to_chat(M, "[G.arousal_verb]!") + ..() + +/datum/reagent/drug/aphrodisiacplus + name = "Hexacrocin" + description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\ + Addiction withdrawals can cause brain damage and shortness of breath. Overdosage can lead to brain damage and a \ + permanent increase in libido (commonly referred to as 'bimbofication')." + taste_description = "liquid desire" + color = "#FF2BFF"//dark pink + addiction_threshold = 20 + overdose_threshold = 20 + can_synth = FALSE + +/datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO)) + if(prob(5)) + if(prob(current_cycle)) + M.say(pick("Hnnnnngghh...", "Ohh...", "Mmnnn...")) + else + M.emote(pick("moan","blush")) + if(prob(5)) + var/aroused_message + if(current_cycle>25) + aroused_message = pick("You need to fuck someone!", "You're bursting with sexual tension!", "You can't get sex off your mind!") + else + aroused_message = pick("You feel a bit hot.", "You feel strong sexual urges.", "You feel in the mood.", "You're ready to go down on someone.") + to_chat(M, "[aroused_message]") + REMOVE_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(100, aphro = TRUE) // redundant but should still be here + for(var/g in genits) + var/obj/item/organ/genital/G = g + to_chat(M, "[G.arousal_verb]!") + ..() + +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage2(mob/living/M) + if(prob(30)) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2) + ..() +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage3(mob/living/M) + if(prob(30)) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3) + + ..() +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage4(mob/living/M) + if(prob(30)) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4) + ..() + +/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(33)) + if(prob(5) && ishuman(M) && M.has_dna() && (M.client?.prefs.cit_toggles & BIMBOFICATION)) + if(!HAS_TRAIT(M,TRAIT_PERMABONER)) + to_chat(M, "Your libido is going haywire!") + ADD_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) + ..() + +/datum/reagent/drug/anaphrodisiac + name = "Camphor" + description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\ + , reducing libido and calming them. Non-habit forming and not addictive." + taste_description = "dull bitterness" + taste_mult = 2 + color = "#D9D9D9"//rgb(217, 217, 217) + reagent_state = SOLID + can_synth = FALSE + +/datum/reagent/drug/anaphrodisiac/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && prob(16)) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(-100, aphro = TRUE) + if(genits.len) + to_chat(M, "You no longer feel aroused.") + ..() + +/datum/reagent/drug/anaphrodisiacplus + name = "Hexacamphor" + description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive." + taste_description = "tranquil celibacy" + color = "#D9D9D9"//rgb(217, 217, 217) + reagent_state = SOLID + overdose_threshold = 20 + can_synth = FALSE + +/datum/reagent/drug/anaphrodisiacplus/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable) + REMOVE_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(-100, aphro = TRUE) + if(genits.len) + to_chat(M, "You no longer feel aroused.") + + ..() + +/datum/reagent/drug/anaphrodisiacplus/overdose_process(mob/living/M) + if(M && M.client?.prefs.arousable && prob(5)) + to_chat(M, "You feel like you'll never feel aroused again...") + ADD_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) + ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index c755649b43..d3ac8fa506 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2194,3 +2194,93 @@ reagent_state = LIQUID color = "#f7685e" metabolization_rate = REAGENTS_METABOLISM * 0.25 + + +//body bluids +/datum/reagent/consumable/semen + name = "Semen" + description = "Sperm from some animal. Useless for anything but insemination, really." + taste_description = "something salty" + taste_mult = 2 //Not very overpowering flavor + data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) + reagent_state = LIQUID + color = "#FFFFFF" // rgb: 255, 255, 255 + can_synth = FALSE + nutriment_factor = 0.5 * REAGENTS_METABOLISM + +/datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume) + if(!istype(T)) + return + if(reac_volume < 10) + return + + var/obj/effect/decal/cleanable/semen/S = locate() in T + if(!S) + S = new(T) + if(data["blood_DNA"]) + S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + +/obj/effect/decal/cleanable/semen + name = "semen" + desc = null + gender = PLURAL + density = 0 + layer = ABOVE_NORMAL_TURF_LAYER + icon = 'icons/obj/genitals/effects.dmi' + icon_state = "semen1" + random_icon_states = list("semen1", "semen2", "semen3", "semen4") + +/obj/effect/decal/cleanable/semen/Initialize(mapload) + . = ..() + dir = GLOB.cardinals + add_blood_DNA(list("Non-human DNA" = "A+")) + +/obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S) + if(S.blood_DNA) + blood_DNA |= S.blood_DNA + return ..() + +/datum/reagent/consumable/femcum + name = "Female Ejaculate" + description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business." + taste_description = "something with a tang" // wew coders who haven't eaten out a girl. + taste_mult = 2 + data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) + reagent_state = LIQUID + color = "#AAAAAA77" + can_synth = FALSE + nutriment_factor = 0.5 * REAGENTS_METABOLISM + +/obj/effect/decal/cleanable/femcum + name = "female ejaculate" + desc = null + gender = PLURAL + density = 0 + layer = ABOVE_NORMAL_TURF_LAYER + icon = 'icons/obj/genitals/effects.dmi' + icon_state = "fem1" + random_icon_states = list("fem1", "fem2", "fem3", "fem4") + blood_state = null + bloodiness = null + +/obj/effect/decal/cleanable/femcum/Initialize(mapload) + . = ..() + dir = GLOB.cardinals + add_blood_DNA(list("Non-human DNA" = "A+")) + +/obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F) + if(F.blood_DNA) + blood_DNA |= F.blood_DNA + return ..() + +/datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume) + if(!istype(T)) + return + if(reac_volume < 10) + return + + var/obj/effect/decal/cleanable/femcum/S = locate() in T + if(!S) + S = new(T) + if(data["blood_DNA"]) + S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 468d29c052..a2b8c27552 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -62,3 +62,34 @@ results = list(/datum/reagent/moonsugar = 1, /datum/reagent/medicine/morphine = 2.5) required_temp = 315 //a little above normal body temperature required_reagents = list(/datum/reagent/drug/skooma = 1) +/datum/chemical_reaction/aphro + name = "crocin" + id = /datum/reagent/drug/aphrodisiac + results = list(/datum/reagent/drug/aphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/water = 1) + required_temp = 400 + mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin + +/datum/chemical_reaction/aphroplus + name = "hexacrocin" + id = /datum/reagent/drug/aphrodisiacplus + results = list(/datum/reagent/drug/aphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 6, /datum/reagent/phenol = 1) + required_temp = 400 + mix_message = "The mixture rapidly condenses and darkens in color..." + +/datum/chemical_reaction/anaphro + name = "camphor" + id = /datum/reagent/drug/anaphrodisiac + results = list(/datum/reagent/drug/anaphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/sulfur = 1) + required_temp = 400 + mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor + +/datum/chemical_reaction/anaphroplus + name = "pentacamphor" + id = /datum/reagent/drug/anaphrodisiacplus + results = list(/datum/reagent/drug/anaphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 5, /datum/reagent/acetone = 1) + required_temp = 300 + mix_message = "The mixture thickens and heats up slighty..." diff --git a/modular_citadel/code/_onclick/hud/screen_objects.dm b/modular_citadel/code/_onclick/hud/screen_objects.dm index 2101a6045f..a2fa6ee23c 100644 --- a/modular_citadel/code/_onclick/hud/screen_objects.dm +++ b/modular_citadel/code/_onclick/hud/screen_objects.dm @@ -1,13 +1,3 @@ -/obj/screen/restbutton - name = "rest" - icon = 'modular_citadel/icons/ui/screen_midnight.dmi' - icon_state = "rest" - -/obj/screen/restbutton/Click() - if(isliving(usr)) - var/mob/living/theuser = usr - theuser.lay_down() - /obj/screen/combattoggle name = "toggle combat mode" icon = 'modular_citadel/icons/ui/screen_midnight.dmi' diff --git a/modular_citadel/code/modules/admin/chat_commands.dm b/modular_citadel/code/modules/admin/chat_commands.dm deleted file mode 100644 index ddac7b5953..0000000000 --- a/modular_citadel/code/modules/admin/chat_commands.dm +++ /dev/null @@ -1,46 +0,0 @@ -/datum/tgs_chat_command/wheelofsalt - name = "wheelofsalt" - help_text = "What are Citadel Station 13 players salting about today? Spin the wheel and find out!" - -/datum/tgs_chat_command/wheelofsalt/Run(datum/tgs_chat_user/sender, params) - var/saltresult = "The wheel of salt [pick("clatters","screams","vibrates","clanks","resonates","groans","moans","squeaks","emits a[pick(" god-forsaken"," lewd"," creepy"," generic","n orgasmic"," demonic")] [pick("airhorn","bike horn","trumpet","clown","latex","vore","dog","laughing")] noise")] as it spins violently... And it seems the salt of the day is the " - var/saltprimarysubject = "[pick("combat","medical","grab","furry","wall","orgasm","cat","ERP","lizard","dog","latex","vision cone","atmospherics","table","chem","vore","dogborg","Skylar Lineman","Mekhi Anderson","Peppermint","rework","cum","dick","cockvore","Medihound","sleeper","belly sleeper","door wires","flightsuit","coder privilege","Developer abuse","ban reason","github self merge","red panda","beret","male catgirl","powergame","hexacrocin","Discord server","Clitadel","Cargonia","Solarian Republic","Main and RP merger","bluespace","salt","chem dispenser theft","Botany","moth","BWOINK","anal vore","stamina","Mason Jakops","mining","noodle","milf","Lavaland","Necropolis","Ashwalker","Chase Redtail","Drew Mint","Pavel Marsk","Joker Amari","Durgit","chaplain","Antag","nanite","Syndicate","Nar-Sie","Ratvar","Cult","maint","Foam-Force","AI","cyborg","ghost","clockwork","cyberpunk","vaporwave","Clown","Leon Beech","Mime","security","research","Megafauna","Bubblegum","Ash Drake","Legion","Colossus","White Shuttle","Changeling","Cowboy","Space Ninja","Poly","Revolutionary","Skyrim","forbidden fruits","xenomorph","blob","Nuclear Operative","crossdressing")]" - var/saltsecondarysubject = "[pick("rework","changes","r34","ban","removal","addition","leak","proposal","fanart","introduction","tabling","ERP","bikeshedding","crossdressing","sprites","semen keg","argument","theft","nerf","screeching","salt","creampie","lewding","murder","kissing","marriage","replacement","fucking","ship","netflix adaptation","dance","remaster","system","voyeur","decoration","pre-order","bukkake","seduction","worship","gangbang","handholding")]" - if(prob(10)) - saltresult += "@here for your salt, all day every day" - if(prob(1)) - saltresult += " @everyone gets some salt this time too" - else - saltresult += "[saltprimarysubject] [saltsecondarysubject]" - return "[saltresult]!" - -/datum/tgs_chat_command/valentine - name = "valentine" - help_text = "Get a random flirt line." - -/datum/tgs_chat_command/valentine/Run(datum/tgs_chat_user/sender, params) - return "[pick(GLOB.flirts)]" - -/datum/tgs_chat_command/despacito - name = "despacito" //someone please high effort this sometime and make it a full on ytdl search - help_text = "This is so sad." - -/datum/tgs_chat_command/despacito/Run() - return "https://www.youtube.com/watch?v=kJQP7kiw5Fk" - -/datum/tgs_chat_command/poly - name = "poly" - help_text = "The Lewder, more applicable Poly speak for Citadel Station 13." - var/list/speech_buffer - -/datum/tgs_chat_command/poly/Run() - LAZYINITLIST(speech_buffer) //I figure this is just safe to do for everything at this point - if(length(speech_buffer)) //Let's not look up the whole json EVERY TIME, just the first time. - return "[pick(speech_buffer)]" - else - var/json_file = file("data/npc_saves/Poly.json") - if(!fexists(json_file)) - return "**BAWWWWWK!** LEAVE THE HEADSET! ***BAWKKKKK!!***" - var/list/json = json_decode(file2text(json_file)) - speech_buffer = json["phrases"] - return "[pick(speech_buffer)]" diff --git a/modular_citadel/code/modules/client/client_defines.dm b/modular_citadel/code/modules/client/client_defines.dm deleted file mode 100644 index d816b15d1d..0000000000 --- a/modular_citadel/code/modules/client/client_defines.dm +++ /dev/null @@ -1,2 +0,0 @@ -/client - var/cryo_warned = -3000//when was the last time we warned them about not cryoing without an ahelp, set to -5 minutes so that rounstart cryo still warns diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm deleted file mode 100644 index 17de8c806d..0000000000 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ /dev/null @@ -1,246 +0,0 @@ -//body bluids -/datum/reagent/consumable/semen - name = "Semen" - description = "Sperm from some animal. Useless for anything but insemination, really." - taste_description = "something salty" - taste_mult = 2 //Not very overpowering flavor - data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) - reagent_state = LIQUID - color = "#FFFFFF" // rgb: 255, 255, 255 - can_synth = FALSE - nutriment_factor = 0.5 * REAGENTS_METABOLISM - -/datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume) - if(!istype(T)) - return - if(reac_volume < 10) - return - - var/obj/effect/decal/cleanable/semen/S = locate() in T - if(!S) - S = new(T) - if(data["blood_DNA"]) - S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) - -/obj/effect/decal/cleanable/semen - name = "semen" - desc = null - gender = PLURAL - density = 0 - layer = ABOVE_NORMAL_TURF_LAYER - icon = 'icons/obj/genitals/effects.dmi' - icon_state = "semen1" - random_icon_states = list("semen1", "semen2", "semen3", "semen4") - -/obj/effect/decal/cleanable/semen/Initialize(mapload) - . = ..() - dir = GLOB.cardinals - add_blood_DNA(list("Non-human DNA" = "A+")) - -/obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S) - if(S.blood_DNA) - blood_DNA |= S.blood_DNA - return ..() - -/datum/reagent/consumable/femcum - name = "Female Ejaculate" - description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business." - taste_description = "something with a tang" // wew coders who haven't eaten out a girl. - taste_mult = 2 - data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) - reagent_state = LIQUID - color = "#AAAAAA77" - can_synth = FALSE - nutriment_factor = 0.5 * REAGENTS_METABOLISM - -/obj/effect/decal/cleanable/femcum - name = "female ejaculate" - desc = null - gender = PLURAL - density = 0 - layer = ABOVE_NORMAL_TURF_LAYER - icon = 'icons/obj/genitals/effects.dmi' - icon_state = "fem1" - random_icon_states = list("fem1", "fem2", "fem3", "fem4") - blood_state = null - bloodiness = null - -/obj/effect/decal/cleanable/femcum/Initialize(mapload) - . = ..() - dir = GLOB.cardinals - add_blood_DNA(list("Non-human DNA" = "A+")) - -/obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F) - if(F.blood_DNA) - blood_DNA |= F.blood_DNA - return ..() - -/datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume) - if(!istype(T)) - return - if(reac_volume < 10) - return - - var/obj/effect/decal/cleanable/femcum/S = locate() in T - if(!S) - S = new(T) - if(data["blood_DNA"]) - S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) - -//aphrodisiac & anaphrodisiac - -/datum/reagent/drug/aphrodisiac - name = "Crocin" - description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac." - taste_description = "strawberries" - color = "#FFADFF"//PINK, rgb(255, 173, 255) - can_synth = FALSE - -/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M) - if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO)) - if((prob(min(current_cycle/2,5)))) - M.emote(pick("moan","blush")) - if(prob(min(current_cycle/4,10))) - var/aroused_message = pick("You feel frisky.", "You're having trouble suppressing your urges.", "You feel in the mood.") - to_chat(M, "[aroused_message]") - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/list/genits = H.adjust_arousal(current_cycle, aphro = TRUE) // redundant but should still be here - for(var/g in genits) - var/obj/item/organ/genital/G = g - to_chat(M, "[G.arousal_verb]!") - ..() - -/datum/reagent/drug/aphrodisiacplus - name = "Hexacrocin" - description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\ - Addiction withdrawals can cause brain damage and shortness of breath. Overdosage can lead to brain damage and a \ - permanent increase in libido (commonly referred to as 'bimbofication')." - taste_description = "liquid desire" - color = "#FF2BFF"//dark pink - addiction_threshold = 20 - overdose_threshold = 20 - can_synth = FALSE - -/datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M) - if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO)) - if(prob(5)) - if(prob(current_cycle)) - M.say(pick("Hnnnnngghh...", "Ohh...", "Mmnnn...")) - else - M.emote(pick("moan","blush")) - if(prob(5)) - var/aroused_message - if(current_cycle>25) - aroused_message = pick("You need to fuck someone!", "You're bursting with sexual tension!", "You can't get sex off your mind!") - else - aroused_message = pick("You feel a bit hot.", "You feel strong sexual urges.", "You feel in the mood.", "You're ready to go down on someone.") - to_chat(M, "[aroused_message]") - REMOVE_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/list/genits = H.adjust_arousal(100, aphro = TRUE) // redundant but should still be here - for(var/g in genits) - var/obj/item/organ/genital/G = g - to_chat(M, "[G.arousal_verb]!") - ..() - -/datum/reagent/drug/aphrodisiacplus/addiction_act_stage2(mob/living/M) - if(prob(30)) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2) - ..() -/datum/reagent/drug/aphrodisiacplus/addiction_act_stage3(mob/living/M) - if(prob(30)) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3) - - ..() -/datum/reagent/drug/aphrodisiacplus/addiction_act_stage4(mob/living/M) - if(prob(30)) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4) - ..() - -/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M) - if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(33)) - if(prob(5) && ishuman(M) && M.has_dna() && (M.client?.prefs.cit_toggles & BIMBOFICATION)) - if(!HAS_TRAIT(M,TRAIT_PERMABONER)) - to_chat(M, "Your libido is going haywire!") - ADD_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) - ..() - -/datum/reagent/drug/anaphrodisiac - name = "Camphor" - description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\ - , reducing libido and calming them. Non-habit forming and not addictive." - taste_description = "dull bitterness" - taste_mult = 2 - color = "#D9D9D9"//rgb(217, 217, 217) - reagent_state = SOLID - can_synth = FALSE - -/datum/reagent/drug/anaphrodisiac/on_mob_life(mob/living/M) - if(M && M.client?.prefs.arousable && prob(16)) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/list/genits = H.adjust_arousal(-100, aphro = TRUE) - if(genits.len) - to_chat(M, "You no longer feel aroused.") - ..() - -/datum/reagent/drug/anaphrodisiacplus - name = "Hexacamphor" - description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive." - taste_description = "tranquil celibacy" - color = "#D9D9D9"//rgb(217, 217, 217) - reagent_state = SOLID - overdose_threshold = 20 - can_synth = FALSE - -/datum/reagent/drug/anaphrodisiacplus/on_mob_life(mob/living/M) - if(M && M.client?.prefs.arousable) - REMOVE_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/list/genits = H.adjust_arousal(-100, aphro = TRUE) - if(genits.len) - to_chat(M, "You no longer feel aroused.") - - ..() - -/datum/reagent/drug/anaphrodisiacplus/overdose_process(mob/living/M) - if(M && M.client?.prefs.arousable && prob(5)) - to_chat(M, "You feel like you'll never feel aroused again...") - ADD_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) - ..() - -//recipes -/datum/chemical_reaction/aphro - name = "crocin" - id = /datum/reagent/drug/aphrodisiac - results = list(/datum/reagent/drug/aphrodisiac = 6) - required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/water = 1) - required_temp = 400 - mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin - -/datum/chemical_reaction/aphroplus - name = "hexacrocin" - id = /datum/reagent/drug/aphrodisiacplus - results = list(/datum/reagent/drug/aphrodisiacplus = 1) - required_reagents = list(/datum/reagent/drug/aphrodisiac = 6, /datum/reagent/phenol = 1) - required_temp = 400 - mix_message = "The mixture rapidly condenses and darkens in color..." - -/datum/chemical_reaction/anaphro - name = "camphor" - id = /datum/reagent/drug/anaphrodisiac - results = list(/datum/reagent/drug/anaphrodisiac = 6) - required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/sulfur = 1) - required_temp = 400 - mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor - -/datum/chemical_reaction/anaphroplus - name = "pentacamphor" - id = /datum/reagent/drug/anaphrodisiacplus - results = list(/datum/reagent/drug/anaphrodisiacplus = 1) - required_reagents = list(/datum/reagent/drug/aphrodisiac = 5, /datum/reagent/acetone = 1) - required_temp = 300 - mix_message = "The mixture thickens and heats up slighty..." diff --git a/modular_citadel/icons/ui/screen_midnight.dmi b/modular_citadel/icons/ui/screen_midnight.dmi index a730c591ba6beb8414a4e5afcc5f0e12b9a10907..fc446a411c8e272f96afa7784678a86931eb0129 100644 GIT binary patch literal 6052 zcmb6-XHXMNunD~bFND9>Q(pieC_62wj^U*Y^S!kbNe4&a`%ug+3TO63Hk}f34o_aM zih=GxN4bpU6Nl%!YIkC7gKId%HsiaBU(nFYv}BK@R_dNHvj4p)Tx8zA-i!&}6_$A& zv}W7<&@B`mXZ#x&mHK}ExpXs<(#K<4MEvB&O<~x`B|Y7t&?i^;9xJYAF|*jK{?TiZ zvOQysprF;*tA>4*_%Pna%Fx`@n=iA&IQ*jJ%0R*Nn~(JA+{~aRRyb0+#&m17q)2f9 zfHnI8T+=)#dnX5($~>8a(Kxm2UK{+5>u`*SEGv_IsTy-e@}|QaERQUF>sMdlJuo+^ zHuXkyO5>!(!yu{MoAng_z50Qwr0#oqYJDmJ5goXuCVL)LW*Jq#i~DDfj9hJvid}-q zoWk7194Y&{$jsH%r!B%~->@z0aeMd0+ zrt4w3>#+Va+RxWrU$Q$6M-kn(00V-_kh-)}Z1Pvy*7;yMcKnU^kZ!=`sW5RH>Tng+ z7H;NnCOV6zt4-`V0TA%FgF5CrR3o~>6R$*5&!j_%`1vyp`|hubB-)$Q_So{u08;RF z+#k$W`L|{tI@GhIZX`+7Gokp;CUT2Q!sVs)tbmA?7dc_s`lNT=zHZGZRu&9dXNhno z^;d0;-TlB1Iao{9h%1oDuN>|ILf;}DVqWAWEP;6FXz>_up zoymB46oR_9+@bIOi!$WyY+I67psH(%D6f!0j@}3OOssBUZ{!ibF>L2SubY>SsDhz6<+C?o}$dJA~6MSTJnGg5Ul z{r&zP@lwXkMmE|E8>bEQ1Rm9j!h)@>Pc-re@&dz=d|w`EP@t??9IY9lt^QM(2gSqh zG5x59RRe=pTKu>X7cWvx^5tgAmo()>rEwi^;0=OT^AOm2TqIxZX1=*=MHNo!e+kwk zfWm~!qZx|)K%Q?G#_I^{+ebz%-q!Q4UhY8O?5`?@7drO1Anx{07!Q9{nIU zRSxv_eZ@!{Q@!&C?J*cE%o7_686m`^j?881`3?3hT?~z8pL2hyAS`_7J8=22LMMV- z2ylpdRj`!Mz^1b?D_uI9C0m_d3lym#>oSkqj_RT;4Jm76L5vwxyQWF>IDKA+c}* z@%PZ;Li#d1G{CtMjeGf#B_00sY3j-D()J9Tq+VXsxUZUzDZQ!A+RA0Z zGQ_cOQty1Me(Iaw(AmG7ZqA~M;&&?n_u1-PaXYql^1Zx`Qg5_7+fT>>dRhlnT0t9%fajpe$CtNK6z_c;1 z85l@52Bj6s4(8HPPrm-saQ&2WDVMJP1*wwj^sj?5xZ#*uAScSsZ?75f=NuQfAqo#h zW4j&^-wEzCy5-h0`kn;uF1I5#T~wrwcQhLeRdrDREmMM%bFZS~pYAlODQ+=RiwwjC zyU*;BK0j1n9h!p{v0DHjGcPAQ0>U?~=2;#YeETlp=HH}q90`JEfr zII0wav+zOkd_SGPtowoUa$e|AdGo@jkWE*^@V&L5QhWG59Fq)YztW!eunXL4K6hN1 z@aKM9v}MdGTiD`!pw_e)5r+FapL;XK3{DA$D<*<7P2zD|PQ8iS0*1mC zFB{6Yk(U<${r#5l>g;zP*z)gcI|>!I*Aa4!W2LNIec0w2g>=V8K6PiI;cuAJY`^0_ z-Gom3snZe-p-(k!(ie|e*rUv!U3K1{@<~lb7aCrLYv_tQQ_j0@lAewc8VoX?Ma^R$ z0rMY^90xe8QC%z+-$#dBF40*Z^6*q8f)v$#us$z-0X|f;@6JCx=pFjB|pI)7Qe1?5Avyo$jy5p0OLiE<#NV?{KcEWte zqbfO+VwP8fzgEB1JkC`v+4%)(HZf6OgZC3TcfCpG3g`6=0hiyebGNEqV; zWM*6KXAmvQ%tgD_P~?n?-&?q0*9jhLR^$hyFsL9qD;5>xrl-zY*sy@ZNSdumR*xST z+2sCm3Cm~eJYs+2x27893Oo8GzC~Mn-Kleu7rJxYM6#hFT19hKd%bR4xbRqjwgx&u zmK0&ZcKmpbJr;H>&J4z-9o48|&fSka3&%CNV$qTob_ox$;%Vb(4ug{&gCzf^PbK7I z(oC0e7Yu6&X;-V?$HdR_&4(EjPea~ zg8<2gOx=Ya?=^>#^OHe*&&5gi!Xu<6&OR08?eDa?Q_LhU-c}o^@pM0^dZZ~n`1^;3 z)8bWB^gSxK_m(uz(;`9-)(!!KWhg@sAE2CiIOY}bQ;Hh$(dwo(b_vneQsyRb$}{_; zV>jiCxL>P$;cNKC#-zOQ{?L4mr=h3;eK_8N-K^YSQZEy) zZGque(;ym{$d#Nbw0`#)hr_bLv*9^uPt%B( zR)J4Fb|;Too#v&*N`iLK=`F<3WjmO!M_RtRI{-)$DYB$TYgPN=$Y>pT3UFfV(^u`$ z5$5B)6bz1Vp3vwg6|&7m8}h2r7qxEub93y=4Qn5>^K}S*A$btQ<;J1oHMQCiEZ&|d z7Ige(rzM-mT|dtodoRpAo|B`1>~9oG2xR;O?-2wL?~MZa9V&g0vWe_@en-SnA_d_I zZaBJ8xCG8DJ;?I8-PMR77YkZVtNI{}myk)Fq(l$(lHw}BrB288+7iI?Mc%KZ%vl64 z3gh(J9-0l|ZGY>(?$2ek#usLM)bwA-SwwMv3EzLgwHEWJN?V!hY>-cRRjJcWhu@^M zPu}2?V52JWL<3sQ^cF&}oDN`6N11-*6_I#@{*ZOp5F?FGbr8%Uien{q}?~ zcnwx3P{+!>Z0IEYM3HAfqv`^|n2S&axm+7AA1HC>*wZmJ*^hZXX527a3SQ+MCuROf z*zk!6(J-a@%IP^D+P{n%VuSDYe*B;!6;(aMcB|ERJL^E8$>SBk)6#~u3~r+~q7 zqN9URad2|5ukIs0hs)oY_pg|&4SFH@4)OY-(EY1&9{i@neujv#`>A9M8H5KP4cF=I z5l@(v*LR&GyRQ;L6({y=qEWg2t}e9ejIur`!g+E*5nvz|q8ycxf~iA{b7#;rbvM2X z!iWw?WXZfy!l?Me1YUaC&zNgHDz5ANfiLqCv zK)f!(NeO>Auy>s1fncj3FaY?44Cyx^zI>YjMXAfpGvN<{TN27 z)#i0m#bI9m?;rk`+)h1k2fMgmLY;F!{MYQY-|~@0tabovSP|Ryg+2<3Nj4|6)&4I!*Wg}Qxk5>p^hQ)Qqfrlh&@N>5Xx##=p z+a#lyytPtJNy=CQS zTE_orkHPytxteUqvwIe{J=eFYn7?1E20dD5RdtXogX)YG4>+~SxH6lG7lT_;Im^Yln3j1W zxy+-@=>T3zao@xwR&4-g;?A=1@9IUWg8gZCFrYQ738s31s+$#CZO2tp&U6;$BX}AP2g9OXl0rR>;v-RE+?MyrNxq6I1!c1sqQYLm$pd@4fFja(4qo4| z*!%fw<`4zwdC5_4bZ#z>WFp6U;z>bBq0Uml&9aYO8K7o$t+FjW9cZGxPOrUIh6VNQ>=b@tQql!_VK2U7RR>F1?lC7UJoF9*Pxlo@7MU79p=`^=)tp zNmuy09l{`lrhvEW+te}dppEH$GOMt2O$NfI*RA$dhxwUC))HoP!{XUNz~}1v@EEW> z$qT>AGyJJ73R)DAl!7UHH#Rjjm@g3=LCd)O4wJq=P=x%o?+^jt%8Z?84Cpo1WyDsp zc2D?68hZ|NT(Cw=xS_>XO8I;NeVcf?Rh}me05~F{yS!|lK2VZ+6{Q?V%b-BsRxQIJD*CVj2L$Q1ri1j zmOM}$#A6Nxh8mXEkQE=m6I8IA#ken*Liljw1Sj+>shyINB#2Kql^XKz?=vaG`_&>g zr}p;t(Kyc`U*;)9L2!g9FVZ$=FocE^q#8PTcVme4y~YIt|8vi{2b(n_!d)in&OE#% z-t^zA=VqQ=NFWsLVL3;|opLO$^MWt99F^X0Eg!~Q@aBpDaznSJEv&GqesNfxpu@W6 zNm7u}RgnX%;Jjgk{0m&mXvm&DNz8pY2ESjxfoa$un)!qFR`FZ=j$w9$_e(wW7lk}= z7$xRA@M5%hK`N8H#}Bh~IW(E{DzCgSYK3EiY8Hriy~x!ralRCjZ9fJFXl=sOPXyOrnL(+xRR#N6v2;^!Y@ z?bk9es@WFy<|i!Ls0*%xe1Xi@kE!WhLjb5Nc2&XcBIK>58eW&0L<1OB#nbC!&~yik zO8pAwa!DBS!|TT^8_7ku`hRZbAO0I$aqhX*FhJ!*MiDo_x5+c05}*or+SHlUzu|<< z-3fhm@HgENPR`)Qn%9}c;ahghfZzFI+_nsSCMVgyf z&8c@Z5?X09w^mF|PjgE#;z$|-dn z+~s1>eAKt~J==Y-3M0T6&{0pGj@6c8Dkv>wkh$3&n#Mw10k|OovHjsuHOgqpPtgz* zA#{yM)l2Vmdd@^l+ls^JdP^+83V2!9R`5ujlb?l!h2=TIKX5C6d9)QSaXsC+G1?OH z`)#0V`sGa@K>Ct!i-vV%Hvr)2ifaeUHlxWVv%b>n&PsLh}m2fs*E1tkMXmsU$5Z0np7@iAqHmqiY-*% z2DDkCkIPy5WnN*cluAdPe!pmjG;86?wz6MiQZqox*l^bh!Zm%c9V>hiQUU4=V{(7#ccyQ=o-(u-nj z^5ak1bylwHUX-J9C57Y1eK03dnD%KKeZTqkpSq8pQt^z*PD64o*pkK&peWNRdpX-% zc(o$bbo#x3-iO_#dd}Uj4A!$*9zNR*J?E;7-eJ8e@q?o!;LBdVMY6@3QX?akX4Ewy z)qBK+6A(KD+)j|Ef0~wF_ASmdeh1=HEKs)B-);sts5~VKDJsYv*%&)KixxApFwleEqn#V?9)FvVSP!hZkuJLYi z!D?x1i{W zK^Au(>|chbubu)=TqdvABCi|$fU>vGZy3he*GvpkTc+^~lf6;O?Ek0`pvE>bL<+!V znJ_e07cC?%6YF{YhjzEDeF>urv|!lZ61Lh9)=C9foD0MvXq5KaYmFottkmc$5%Qub z!`c~3I^}}>!N{}wWCj2ovVzpx2bVHZq9j%Tfiv10Ro8xBpK?Mk4*E9=oXWv8W)p8Q z41#?;@>o8er^|XDV0<@rElGY_sV_gy7s4Xeb1;WIym|3$ZKVwy@fO3XpLp_(FBxh{ z6!L=nla=jTK5*Yqs!SRc=A|yDh3%n&GJ`hj6w`JFvmtbOlz=VaZ0?aNN-?r)>sPO` z7XApVuIR}Q2i-c)BOyA$s!S|dJER*a>F$zR*l&Hm z>;3=!I5Tr5?(^JJ&pmU(Rh4B4aH((s004o!oRm5$hW~r8L8!1BVlsq^2D~(MT%^pM zO`TwlE-(js0Kg+7F}eyj2uvouv&l)siaW6|**h0+ zqS4l!P{*MYY0M8F#*@KXxgb#TRO(mhT4nSgzFaBXnRoS&*-xx+3FBZ_v=={ko>KHA zxP+>FY;7lY(6_V9za*)ltD=-@&Xi+=^$x6bFnm#0U=|k12ZH9#IS0i304!BGEPhjI4bJ8E_sy_3)8~DV4BtA?&2}Hc!+H5ZJ?*>C_Y|wHY8|;4` zhJhEi1ftLYyG_amOALVc4fdVi%0SJF!}G-RLA4J@^K9+8_&F6e5MSyOfN_q0v9oP) zz&B5~+x!^&{N)w31nr1`$IM-t*F)J~&Z+wVc}jNC=zya~LIA7p-iW&huJ&N{Cse}u za>DL%Ycj!IVG7rVTq_?IV}lj$dJ30MabWJP6L^MZG~{I6PX?OAEZ zbu)gVkkEA_S=#{wrT_qt>21>0({ZhpJ`oyW&XH=aCgP*V=sX{TIm)3P0L4(xxa)Gf z5j+%z-eC=VXTk}wD}p5j$5IWaV^)3BZ7+jvPflO73r|CuYjr|_fDaIN9ezt9oP;PdL@lA`u!|uBGfDKBWbV~t5OJ}nFsKFiNMZaDH z!xtYNiH>uuD0E<1P2PUZ&Z44xZi6jrxm9^9?}j99Gd??ML(5G(IOTo3$l zxsqRiHQPUtX5ElF-%;R$2(9>EC{h`H0-;}H;J2Vi`eplJoDRrGs2qug+o}O20semD z{j#2Ttytt3lkEaZ-en5!>x6MbUm&YTFaoUps1PKnG>^O6-RIz~aYHv&YbbKYk)lcA z6SCZ#mv(K7LUlIH{eX5lVxwkf8iXWH`(m&q@mv%+S@GV=?wT^+cN;8e@K<{nD`N zqc}WuBule#(y|mWlx*0frGRwyjt>5!`217vY3EykOwG<0yN}c6$XA8PMzOHB0g61g zg}t0w2(D>OqI6EPA8=$nZ$ff$Frdi8yC&5+7JB-_K)-$ohn4`+C3t>0Vj}_X8QxQ zKfWIIrWld~V5pb3c$NLHQY$%hyI;gO4ETz{UsEg@L_%{+y~W$a8wlCWDFQ&VL&*U? zM|iMV)i#*Q$u5%)L@eV|!#}VVsi&wi?e<%E|yg=?^lGemu#g9h}!lUI6FgWei||`ANaXr<{f+a*$@*T~E7?r_G7mWF3N>`efZw#V?H9 z=6JpE(IJ*9{6bH!4Yy-Tq-~TBCv7J*^MKaZg?efO2a?GNJpEl)A$-0(X~bYQkzQiy zsEd0ZqIzNT?WuU-&)!EeeK`TjJy*|LX3^^o{ty|->%n6pC_-}nH#Ru z=F2@|rq>I4W-qmb%(1#TcJ^^8V;oP&)>q{*+ul#ad3iNq1t z1o{4c@;aFtQ=FLcmWzBlH=B#ym$+-2IE>@2nbHvY6IzkJb-Y*Wt)~5gJ9%4*2i(sk zSCJ!;LO$77j>*A+R@wT7F0Y^t1hN{8UsPgP2hYDr|BdF6F;ea?cK2!B{gAP*Uw<_= zhB2xL4KP}fDHOc4uG&)-g0#BWLB9^ZHu=*Pa!Z{KR#g!4RABGdo2S7h_BR$E!TWI_ zldqPbF8!usm`YI;Nd~YhD|Z>an%mtW+b54;89G0-39ey5(e8#Viu`(=QAOFI9Au7N zm^CXi(O!Z>K|$$+xGPLBqRO`C)Y;p>43Tkcny6x0S(2WkcW|3rFcshFL3)1nG-{-U zUmtrDizS#zu)N*gQUkq}Z!#h@`TomMlHS~qC;aBiMdn|73E|%9_YQhQwzuEj^K`6* zA+xsX{pRJxTQ?4*m42gkogJ#e+D0lM86^EZH(c*7`3g-zZS3Zz$NgHQU&f(2zacYv zQt>>XpCmKWC4_W9Dy3)iVSIkCCb6!N9$D`CYt@l_EEa9(zHnPCkhAss8hD zSXt!DE_5Z*n~z$0qPbs8C~)5ts&<$aq_$Jjua9kyvSvna@P1d5)q3|~D}jSrccj>f z^lw>QXI>4UPfFSExT)|wJ!w z%@P=IpZZmee5Tt}`xKl_XvHO!&!tJ3Qq~e8oDRI5_>ehH9XA#0W*|t zi@O0=lPg%W8HlxM4$Y(941(XIIg(_v0Co&WHuL<`A}$X?8UEhR9lyXadSk(|i+Xya zL8Gx-{JDzu@YV;SxGahn-&t?=ro{V-Z%?rTqsrLVS=9?_*L59*@g4cMvI&9H@BG8i zI9g-9y35h(t^~rt;htjO4ZMR$`|Z)iebsYR^<8INMXxpuANL2QY}*f=ltJ68Q$G5h zy|pR0em}+EsjLcaq)L6#^S}iOE}pCO0#XPN$>yq#FT0qF|j{MX~a^EMB8U< ze+rz|Lx%Fet@!pYeMAr>ea$=0BbNLDIAMhJQg|4i`>DQW)gKaI427DnXTP)G42B0< z8VW)?=s({6oKe;jG=Dm7OaLkgL+IkGIy_Jh0$dDa6|hMB7_-^n+l~bFr)c3Qc2kkgeS~`rRG`St{*#5g z+CW{ilmc;Mc87&{%80#i?gNwIqe3o7R7U8)DY5wDTDM$wOv&f`sVMQKV6rFX9EwxS zR7VU2Uq^u@eSoX4MqkjD#!*PnIoARfxgoGpa@2 zferZCO*&2zJol{6t*cz8E@CH!#>`8fHC>)pK%_Iq?-X#vS{#1OXUbut{wtYa%^^%s zCn@HahV8U)v6zAsi^?)qNj&14FW}jw0|QXC=aK@ADT;d~N50yAL?bpMwFk^&Hp#Bs z@`B=JFApeFm(NETK5GBMhx|?%e)onkOeW%(69|M zTP?9u1J`a`W&D}3diCV(km}9va>~!CBvtmL@iP7=RA1o-0YvH&`L2!)h8o#l$*f${;a0a7p-CQ=l!y-=J zil$mu+qtdeW&f$fRPE&{WUrpS0DN*))toG5ERlzEbYW(&A_Vo$wd?#wPy^3Ox--{x zTAZF{0sHrZz72__7gUvD@FGnlDX%wKtvVW)f zDSh_a69h!kgtJ6KZoHt!5(GA*de2@!jG;kX%I@>zCu2Yq=MxUo<>WP1&Z&~XpMWBD zGc&4uV~{79A)z z?ww&YmB;g0WV94;2N|jsF?iIJfcBg0k6fuEx${+=M!&enepccZ;!$$4jp(Izu+%L` zt$!qZTHct6Ik(*D;uU(SQ~n*&`-^mHxQFFK%bDA{Zr}@nKb=vKUpghFK+r<6e!sO3+rxGU-akzomXO^kuLynN9Syk{gTae-;Gx0f2mgAdLvE)MdbLfB1m zELH;)clYLI~fN? zWoP8jT0#7|Qos<1eTW*6X^(x{gNj}968&fhGL(Mb_V(i?Gq1%UH+-9e)5(G<0>9(v z#-ll^2q&#zCe*#g9Uf>UONKEFvjgFfRvZ=|t=puE2q4XCvyMH@wu>@;MOQJ2TkPGf zY~94rF&}b6r8mV%cbt5DOeon+y0Cfgb_E(Xo!!s+h}=)l4(d*;mlxF(CaRugl$r&DhZ}UT%wSmgE-cq51 zlY7CA>l+Uy(j1J~p_&toB$OP&#iu&isZe?$<*|LuGJc~tuQh6aXSu{^bd1$0K131u zNO{8ZvJYZ@?UaDr@q{UpnhW`GS4)m zG88+{$4?GBfEe9~<+BkfTP_%1VmA3@WLW(UU^q|+JqGQ(q|x;A;@Q~@gYyLjmu|}0 zU&3JGntqv7zV~JX-DwQp)=1Cp0G=AluTgz^W6jo7f#-dDcvX*n`a7m=?6RyPj_q?m z8R#F-Ai%!AUpt6bg`rFF7SZCk3)3=id!c?YF+*-HlSr-4E(#jR=Kwa)(i`Ep9TBCG z@GMiN1-%<6`r)>s!NSDU)DN)y9D%>;=Hv4Q8^=#6fB9M6bIXc0G&oS@Fqca#v_ecF z-pv|#O2H7r19C(Oy{84iEF^s>hmc*%Wa->`KQW>9#H%UFjw5%1V)fD6NX@b`tGhGv zTK_yCtjhc!vgqax8d)#$4SV=-cr1=Iv5t)AX(JGWiR)&^H%b|aW4Vd8HOH2L#TKHc zx4qL8CVXY&wwW37ir11twDM9&-<7sh#04xp56HB zTdnAQ7wLDy#-yMy!qegE`w1UEuO<=sSSf6YSU@EIa%UCNBlfW1d1mA{`Qe12iaLk& zdDP9A#QZ3%38HAUB2+A@josON(x$|>aFM(8P6*gQLGK{D6WTnb-(bP%aO4fg$BEL( z&;U(#3a*7jqIvA?UfduU3F(A8ieEKTg?vPsB4esjlsU?=XOil&oW){azQ}Q;5AHHh*T{&2f8<4+tpZLoZ6#0Ey-t)b^f)hV#poj8DJ45P%7p*wqCTk%eTfTR z>r&FYHAe<9YXo{=f-1L?^FDwE|BA99DE^|3u_WWVa@6n5J!e#p-j&+f*^ytoGV_p{Ar=?Mg}ZKoOd`?T99X%1w()aJkD>@~#fWgPA(i4O%k_<-6_-P0 z{19y5Z$VD{RSO?cs4U+Kmf+vbARpU@XM%sbGYj<6VkL=>31br)mB@o@XCh1}%y?nK zABEpfSRjgOe;UM3?gPKq-vLHyhPAu_~SKanBDI4AR_ZlDv0=u15ewt(3;8!un^|M<0di zvmF|H#&CfR8$H1k!n!#|=y=oC$M_vdW z#~ekf^CL6f@sIa57C(RBu$xQ{Wyu8)iyot z=vW+$dCYOmXE7$+N{+;o+#)NN39Z_QKzCj!J01ewj)SN8GQWWZ`BZ7Bw6Jr*ZwNen z0CD)anCrn^jdCv-V}+U$;Zb~Z`UGY}-&|C#2)}SjS?;v(rr~N0B2+1$FWav!%0XfF zy0qd)tE#Lll?7ial8o>Q@g$esK&|vq(OIiO!a*4)|8^n&CUE;t?ZJEggqbtz+jhbR zwrB1lsy@calV(s=RpZPI)?>KJ>eZ2a(%X z?CtnW8Uz*+!nr}ac`zS}z@-y%D#(fI2hfv~5g_#R^yZs*hIx__$@N1u?~nWfQ3V8K zlpQ@i7^I}6T6+Ekt6@xzi<31MA|CjsY7#SQ9kYp*%W|91-8Cj(&>@HaF?CzC!){dV z)5*%?33o?@I1SK|^B)zqM~y?u{!)~I2ZSpq=ka_gO67X>)gv|aL=y~B@OBsV0|+25 Ltt?e8X&m@}BN_qw diff --git a/modular_citadel/icons/ui/screen_operative.dmi b/modular_citadel/icons/ui/screen_operative.dmi index cb08f08ceb7ce0dff09dee498f6419473e3068f3..9383b947184250ef5a15c30bfe3fbbba8d546d66 100644 GIT binary patch delta 5797 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 MId$1G8MEO30e*cRegFUf delta 5821 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 Hvrk6-a|+x5n*Q5#o+?_^4bit_pILU^S#gnjq5 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 diff --git a/tgstation.dme b/tgstation.dme index bfe75a2a79..ecdbc2627e 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -3357,10 +3357,8 @@ #include "modular_citadel\code\datums\status_effects\chems.dm" #include "modular_citadel\code\game\objects\cit_screenshake.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" -#include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" -#include "modular_citadel\code\modules\client\client_defines.dm" #include "modular_citadel\code\modules\client\client_procs.dm" #include "modular_citadel\code\modules\client\preferences_savefile.dm" #include "modular_citadel\code\modules\client\preferences_toggles.dm" @@ -3427,5 +3425,4 @@ #include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm" #include "modular_citadel\code\modules\reagents\objects\clothes.dm" #include "modular_citadel\code\modules\reagents\objects\items.dm" -#include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm" // END_INCLUDE