From ec2f33ceb5469bb1a940a5e95d4d71d1cd364346 Mon Sep 17 00:00:00 2001 From: Fermi Date: Sun, 12 May 2019 03:42:23 +0100 Subject: [PATCH] Added Hatmium and a few slight fixes. --- code/__DEFINES/DNA.dm | 2 +- code/datums/components/mood.dm | 2 +- .../reagents/reagent_containers/pill.dm | 2 +- code/modules/surgery/organs/vocal_cords.dm | 2 +- .../code/datums/status_effects/chems.dm | 13 ++- .../code/modules/arousal/organs/breasts.dm | 2 + .../code/modules/arousal/organs/genitals.dm | 8 +- .../clothing/fermichemclothe/fermiclothes.dm | 9 +- .../chemistry/reagents/fermi_reagents.dm | 99 ++++++++++++++++++- 9 files changed, 120 insertions(+), 19 deletions(-) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 59790df5f5..02833c4bbe 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -122,4 +122,4 @@ #define ORGAN_SLOT_BRAIN_ANTISTUN "brain_antistun" #define ORGAN_SLOT_TAIL "tail" #define ORGAN_SLOT_PENIS "penis" -#define ORGAN_SLOT_BREASTS "breasts" \ No newline at end of file +//#define ORGAN_SLOT_BREASTS "breasts" diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 0337b17c86..db82234831 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -210,7 +210,7 @@ setInsanityEffect(0) master.remove_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE) sanity_level = 1 - update_mood_icon() + //update_mood_icon() /datum/component/mood/proc/setInsanityEffect(newval)//More code so that the previous proc works if(newval == insanity_effect) diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index c99b24dd65..303c3a091a 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -249,7 +249,7 @@ /obj/item/reagent_containers/pill/penis_enlargement name = "penis enlargement pill" - list_reagents = list("PEenlager" = 10) + list_reagents = list("PElarger" = 10) /obj/item/reagent_containers/pill/breast_enlargement name = "breast enlargement pill" diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 85107dd986..02b76341ae 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -798,7 +798,7 @@ var/static/regex/punish_words = regex("bad boy|bad girl|bad pet") ////punish_words //phase 0 var/static/regex/saymyname_words = regex("say my name|who am i|whoami") - var/static/regex/wakeup_words = regex("revert|awaken|*snap") + var/static/regex/wakeup_words = regex("revert|awaken|snap") //phase1 var/static/regex/silence_words = regex("shut up|silence|be silent|ssh|quiet|hush") var/static/regex/antiresist_words = regex("unable to resist|give in")//useful if you think your target is resisting a lot diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 319f69e664..aa46c164b4 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -190,7 +190,7 @@ if(M.key == enthrallID) owner.remove_status_effect(src)//This shouldn't happen, but just in case redirect_component1 = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) //Do resistance calc if resist is pressed# - redirect_component2 = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_SAY = CALLBACK(src, .proc/owner_say)))) //Do resistance calc if resist is pressed + //redirect_component2 = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_SAY = CALLBACK(src, .proc/owner_say)))) //Do resistance calc if resist is pressed //Might need to add redirect component for listening too. var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN) //It's their brain! mental_capacity = 500 - B.get_brain_damage() @@ -408,8 +408,8 @@ /datum/status_effect/chem/enthrall/on_remove(mob/living/carbon/M) qdel(redirect_component1.resolve()) redirect_component1 = null - qdel(redirect_component2.resolve()) - redirect_component2 = null + //qdel(redirect_component2.resolve()) + //redirect_component2 = null /* /datum/status_effect/chem/enthrall/mob/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) @@ -558,13 +558,16 @@ if (deltaResist>0)//just in case deltaResist /= phase//later phases require more resistance - +/* /datum/status_effect/chem/enthrall/proc/owner_say(message) //I can only hope this works - var/static/regex/owner_words = regex("[master.real_name]|[master.first_name()]") + var/datum/status_effect/chem/enthrall/E = owner.has_status_effect(/datum/status_effect/chem/enthrall) + var/mob/living/master = E.master + var/static/regex/owner_words = regex("[master.name]|[master.first_name()]") if(findtext(message, owner_words)) message = replacetext(lowertext(message), lowertext(master.real_name), "[enthrallGender]") message = replacetext(lowertext(message), lowertext(master.name), "[enthrallGender]") return message +*/ /* /datum/status_effect/chem/OwO id = "OwO" diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index e32c9987d3..eb80137735 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -75,6 +75,7 @@ //Rediculous sizes remove hands. //Should I turn someone with meter wide... assets into a blob? //this is far too lewd wah + /obj/item/organ/genital/breasts/update_size()//wah //var/mob/living/carbon/human/o = owner //var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts") @@ -120,6 +121,7 @@ if (breast_values[size] > breast_values[prev_size]) to_chat(owner, "Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [uppertext(size)]-cup.") var/mob/living/carbon/human/H = owner + message_admins("Cached: [cached_size], prev: [prev_size], size: [size]") H.Force_update_genitals() else if (breast_values[size] < breast_values[prev_size]) to_chat(owner, "Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [uppertext(size)]-cup.") diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index a3ffcf3698..2766d46bc1 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -268,8 +268,8 @@ dna.species.handle_genitals(src) /mob/living/carbon/human/proc/Force_update_genitals() - dna.species.handle_genitals(src) - //dna.species.handle_breasts(src) + //dna.species.handle_genitals(src) + dna.species.handle_breasts(src) /datum/species/proc/handle_genitals(mob/living/carbon/human/H) @@ -350,7 +350,7 @@ for(var/L in relevant_layers) H.apply_overlay(L) -/* + /datum/species/proc/handle_breasts(mob/living/carbon/human/H) //check for breasts first! @@ -414,4 +414,4 @@ for(var/L in relevant_layers) H.apply_overlay(L) -*/ + H.update_icons() diff --git a/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm b/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm index 6dcfa20b95..2ab4e0d9eb 100644 --- a/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm +++ b/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm @@ -6,11 +6,18 @@ con = 'icons/obj/clothing/hats.dmi' icon_state = "top_hat" desc = "A sythesized hat, you can't seem to take it off. And tips their hat." + armor = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1) /obj/item/clothing/head/hattip/attack_hand(mob/user) if(iscarbon(user)) var/mob/living/carbon/C = user if(src == C.head) - M.emote("me",1,"tips their hat.",TRUE) + C.emote("me",1,"tips their hat.",TRUE) return + else + user.emote("me",1,"admires such a spiffy hat.",TRUE) return ..() + +/obj/item/clothing/head/hattip/speechModification(message) + message += ".\" And tips their hat. \"Yeehaw" + return message diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index 02847a9388..906f1c25ae 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -726,7 +726,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING if(100) to_chat(M, "You feel a substantial part of your soul flake off into the ethereal world, rendering yourself unclonable.") M.alpha = M.alpha - 1 - M.add_trait(TRAIT_NOCLONE) + M.add_trait(TRAIT_NOCLONE) //So you can't scan yourself, then die, to metacomm. You can only use your memories if you come back as something else. if(80) to_chat(M, "You feel a thrill shoot through your body as what's left of your mind contemplates the forthcoming oblivion.") M.alpha = M.alpha - 1 @@ -735,16 +735,22 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.alpha = M.alpha - 1 if(0 to 30) to_chat(M, "Your body disperses from existence, as you become one with the universe.") - to_chat(M, "As your body disappears, your consciousness doesn't. Should you find a way back into the mortal coil, your memories of the afterlife remain with you. (At the cost of staying in character while dead.)")//Legalised IC OOK? I have a suspicion this won't make it past the review. At least it'll be presented as a neat idea! If this is unacceptable how about the player can retain living memories across lives if they die in this way only. - M.visible_message("[M] suddenly disappears, their body evaporating from existence, freeing [M] from their mortal coil.") + to_chat(M, "As your body disappears, your consciousness doesn't. Should you find a way back into the mortal coil, your memories of your previous life and afterlife remain with you. (At the cost of staying in character while dead. Failure to do this may get you banned from this chem. You are still obligated to follow your directives if you play a midround antag)")//Legalised IC OOK? I have a suspicion this won't make it past the review. At least it'll be presented as a neat idea! If this is unacceptable how about the player can retain living memories across lives if they die in this way only. + M.visible_message("[M.name] suddenly disappears, their body evaporating from existence, freeing [M.nane] from their mortal coil.") + deadchat_broadcast("[M.name] has become one with the universe, meaning that their IC conciousness is continuous throughout death. If they find a way back to life, they are allowed to remember what was said in deadchat and their previous life. Be careful what you say. If they don't act IC while dead, bwoink the FUCK otta them.") + message_admins("[M.name] has become one with the universe, and have continuous memories thoughout death should they find a way to come back to life (such as an inteligence potion, midround antag). They MUST stay within characer while dead.") qdel(M) //Approx 60minutes till death from initial addiction ..() + +//////////////////////////////////////// +// MKULTA // +//////////////////////////////////////// /datum/reagent/fermi/enthrall name = "MKUltra" id = "enthral" - description = "Need a description." - color = "#A080H4" // rgb: , 0, 255 + description = "A forbidden deep red mixture that overwhelms a foreign body with waves of pleasure, intoxicating them into servitude. When taken by the creator, it will enhance the draw of their voice to those affected by it." + color = "#2C051A" // rgb: , 0, 255 taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses" //metabolization_rate = 0.5 overdose_threshold = 100 //If this is too easy to get 100u of this, then double it please. @@ -808,6 +814,39 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING /////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/reagent/fermi/hatmium + name = "Hat growth serium" + id = "hatmium" + description = "A strange substance that draws in a hat from the hat dimention, " + color = "#A080H4" // rgb: , 0, 255 + taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses" + //metabolization_rate = 0.5 + overdose_threshold = 100 //If this is too easy to get 100u of this, then double it please. + var/obj/item/clothing/head/hat + //addiction_threshold = 30 + //addiction_stage1_end = 9999//Should never end. + +/datum/reagent/fermi/hatmium/on_mob_add(mob/living/carbon/human/M) + //var/mob/living/carbon/human/o = M + var/items = M.get_contents() + for(var/obj/item/W in items) + if(W == M.head) + M.dropItemToGround(W, TRUE) + hat = new var/obj/item/clothing/head/hattip + equip_to_slot_if_possible(hat, SLOT_HEAD, 1, 1) + +/datum/reagent/fermi/hatmium/on_mob_life(mob/living/carbon/human/M) + //hat.armor = list("melee" = (1+(current_cycle/20)), "bullet" = (1+(current_cycle/20)), "laser" = (1+(current_cycle/20)), "energy" = (1+(current_cycle/20)), "bomb" = (1+(current_cycle/20)), "bio" = (1+(current_cycle/20)), "rad" = (1+(current_cycle/20)), "fire" = (1+(current_cycle/20)), "acid" = (1+(current_cycle/20))) + if(!overdosed) + for var/i in hat.armor + hat.armor[i] = (1+(current_cycle/10)) + +/datum/reagent/fermi/enthrall/overdose_process(mob/living/carbon/M)//To prevent people in cyro going nuts + for var/i in hat.armor + hat.armor[i] = (1/(current_cycle*10)) + +/////////////////////////////////////////////////////////////////////////////////////////////// + /datum/reagent/fermi/furranium name = "Furranium" id = "furranium" @@ -851,6 +890,56 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING to_chat(M, "You notice [pick(seen)]'s bulge [pick("OwO!", "uwu!")]") ..() +/////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/reagent/fermi/secretcatchem //Should I hide this from code divers? A secret cit chem? + name = "Catgirli[pick("a","u","e","y","")]m [pick("apex", "prime", "meow")]" //an attempt at hiding it + id = "secretcatchem" + description = "An illegal and hidden chem that turns people into catgirls. It's said you see the light if you take too much of it." + color = "#A0B0E4" // rgb: , 0, 255 + taste_description = "hairballs and cream" + overdose_threshold = 10 + +/datum/reagent/fermi/Catgirlium/on_mob_add(mob/living/carbon/human/H) + var/current_species = H.dna.species.type + var/datum/species/mutation = race + if(mutation && mutation != current_species) + to_chat(H, "You crumple in agony as your flesh wildly morphs into new forms!") + H.visible_message("[H] falls to the ground and screams as [H.p_their()] skin bubbles and froths!") + H.Knockdown(60) + H.set_species(mutation) + else + to_chat(H, "The pain vanishes suddenly. You feel no different.") + +/datum/reagent/fermi/Catgirlium/on_mob_life(mob/living/carbon/M) + if(prob(10)) + playsound(get_turf(M), 'modular_citadel/sound/voice/nya.ogg', 50, 1, -1) + H.emote("me","lets out a nya!") + if(prob(10)) + playsound(get_turf(M), 'sound/effects/meow1.ogg', 50, 1, -1) + H.emote("me","lets out a mewl!") + if(prob(10)) + playsound(get_turf(M), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1) + H.emote("me","lets out a meowrowr!") + +/datum/reagent/fermi/Catgirlium/overdose_start(mob/living/carbon/human/H) //I couldn't resist - should I hide this somewhere else? + to_chat(H, "You suddenly see the light and realise that everyone will be better off, and much happier, if they were only a cat girl.") + objective = "Aid in the production of more chemicals and turn everyone on the station into catgirls. Avoid any and all attempts at renoucing your newfound catgirl form for this is your true form now." + if (owner.mind.assigned_role in GLOB.antagonists) + objective += "Complete your objectives in tandem with this new objective. If you are tasked with murdering someone turning someone into a catgirl is now an alternative to you." + brainwash(H, objective) + +/* +/proc/secretcatchem(mob/living/carbon/C) //Explosion turns you into a cat. Meow. + C.unequip_everything() + //var/cat = new /mob/living/simple_animal/pet/cat(C.loc) + var/mob/living/simple_animal/pet/cat = new(get_turf(C.loc)) + C.mind.transfer_to(cat) + cat.name = C.name + qdel(C) +*/ + + /* /mob/living/simple_animal/hostile/retaliate/ghost incorporeal_move = 1