diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 60a0165b17..61e7c7a90c 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -21,7 +21,7 @@ return ..() /datum/status_effect/chem/SGDF/tick() - message_admins("SDGF ticking") + //message_admins("SDGF ticking") if(owner.stat == DEAD) message_admins("SGDF status swapping") if(fermi_Clone && fermi_Clone.stat != DEAD) @@ -43,27 +43,26 @@ //owner, tried, no dice /datum/status_effect/chem/BElarger/on_apply(mob/living/carbon/human/H)//Removes clothes, they're too small to contain you. You belong to space now. var/mob/living/carbon/human/o = owner - if(o.w_uniform) - o.dropItemToGround(H.w_uniform, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) - if(o.wear_suit) - o.dropItemToGround(H.wear_suit, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) - message_admins("BElarge started!") - o.visible_message("[H]'s chest suddenly bursts forth, ripping their clothes off!'") + var/items = o.get_contents() + for(var/obj/item/W in items) + if(W == o.w_uniform || W == o.wear_suit) + o.dropItemToGround(W, TRUE) + playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) + //message_admins("BElarge started!") + o.visible_message("[o]'s chest suddenly bursts forth, ripping their clothes off!'") to_chat(o, "Your clothes give, ripping into peices under the strain of your swelling breasts! Unless you manage to reduce the size of your breasts, there's no way you're going to be able to put anything on over these melons..!") return ..() /datum/status_effect/chem/BElarger/tick(mob/living/carbon/human/H)//If you try to wear clothes, you fail. Slows you down if you're comically huge var/mob/living/carbon/human/o = owner var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts") - if(o.w_uniform) - o.dropItemToGround(H.w_uniform, TRUE) - to_chat(owner, "Your enormous breasts are way to large to fit anything over!") - if(o.wear_suit) - o.dropItemToGround(H.wear_suit, TRUE) - to_chat(owner, "Your enormous breasts are way to large to fit anything over!") - message_admins("BElarge tick!") + var/items = o.get_contents() + for(var/obj/item/W in items) + if(W == o.w_uniform || W == o.wear_suit) + o.dropItemToGround(W, TRUE) + playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) + to_chat(owner, "Your enormous breasts are way too large to fit anything over them!") + //message_admins("BElarge tick!") /* var/items = o.get_contents() for(var/obj/item/W in items) @@ -97,12 +96,11 @@ /datum/status_effect/chem/PElarger/on_apply(mob/living/carbon/human/H)//Removes clothes, they're too small to contain you. You belong to space now. message_admins("PElarge started!") var/mob/living/carbon/human/o = owner - if(o.w_uniform) - o.dropItemToGround(H.w_uniform, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) - if(o.wear_suit) - o.dropItemToGround(H.wear_suit, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) + var/items = o.get_contents() + for(var/obj/item/W in items) + if(W == o.w_uniform || W == o.wear_suit) + o.dropItemToGround(W, TRUE) + playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) owner.visible_message("[o]'s schlong suddenly bursts forth, ripping their clothes off!'") to_chat(o, "Your clothes give, ripping into peices under the strain of your swelling pecker! Unless you manage to reduce the size of your emancipated trouser snake, there's no way you're going to be able to put anything on over this girth..!") return ..() @@ -112,12 +110,12 @@ var/mob/living/carbon/human/o = owner var/obj/item/organ/genital/penis/P = o.getorganslot("penis") message_admins("PElarge tick!") - if(o.w_uniform) - o.dropItemToGround(o.w_uniform, TRUE) - to_chat(owner, "Your enormous package is way to large to fit anything over!") - if(o.wear_suit) - o.dropItemToGround(o.wear_suit, TRUE) - to_chat(owner, "Your enormous package is way to large to fit anything over!") + var/items = o.get_contents() + for(var/obj/item/W in items) + if(W == o.w_uniform || W == o.wear_suit) + o.dropItemToGround(W, TRUE) + playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) + to_chat(owner, "Your enormous package is way to large to fit anything over!") switch(round(P.cached_length)) if(11) if (!(P.prev_size == P.size)) diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 9e1dfa2417..ae4d05cc58 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -76,11 +76,12 @@ //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/obj/item/organ/genital/breasts/B = owner.getorganslot("breasts") + //var/mob/living/carbon/human/o = owner + //var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts") message_admins("Breast size at start: [size], [cached_size], [owner]") if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!! to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.") - B.Remove(owner) + src.Remove(owner) switch(round(cached_size)) if(0) //If flatchested size = "flat" @@ -103,21 +104,25 @@ if(16 to INFINITY) //if Rediculous size = cached_size - message_admins("Breast size: [size], [cached_size], [owner]") + //message_admins("1. [breast_values[size]] vs [breast_values[prev_size]] || [size] vs [prev_size]") + //message_admins("1. [prev_size] vs [breast_values[size]]") if(round(cached_size) < 16)//Because byond doesn't count from 0, I have to do this. - if (isnum(prev_size)) - prev_size = breast_values[prev_size]//make numbers letters - if(isnum(size))//Bloody byond with it's counting from 1 - size = breast_values[size] //make numbers letters - message_admins("2. [breast_values[size]] vs [breast_values[prev_size]]") + if (prev_size == 0) + prev_size = "flat" + if(size == 0)//Bloody byond with it's counting from 1 + size = "flat" + if(isnum(prev_size)) + prev_size = breast_sizes[prev_size] + message_admins("2. [breast_values[size]] vs [breast_values[prev_size]] || [size] vs [prev_size]") 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.") 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.") prev_size = size - icon_state = sanitize_text("breasts_[shape]_[size]") else if (cached_size == 16.2) to_chat(owner, "Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a hefty [uppertext(size)]cm diameter bosom, taking both of your hands to hold!.") + + icon_state = sanitize_text("breasts_[shape]_[size]") owner.update_body() - B.update_icon() + update_icon() diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 191951f408..c5ee246e9a 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -25,7 +25,7 @@ /obj/item/organ/genital/penis/update_size() var/mob/living/carbon/human/o = owner if(cached_length < 0)//I don't actually know what round() does to negative numbers, so to be safe!! - var/obj/item/organ/genital/penis/P = o.getorganslot("breasts") + var/obj/item/organ/genital/penis/P = o.getorganslot("penis") to_chat(o, "You feel your tallywacker shrinking away from your body as your groin flattens out!") P.Remove(o) switch(round(cached_length)) @@ -58,12 +58,12 @@ to_chat(o, "Your [pick("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger")] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [uppertext(size)] inch penis.") prev_size = length icon_state = sanitize_text("penis_[shape]_[size]") - o.update_body() - //P.update_icon() + //update_body() + //P.update_icon() //Either of these don't work, why??? girth = (length * girth_ratio) /obj/item/organ/genital/penis/update_appearance() - var/mob/living/carbon/human/o = owner + //var/mob/living/carbon/o = owner var/string = "penis_[GLOB.cock_shapes_icons[shape]]_[size]" icon_state = sanitize_text(string) var/lowershape = lowertext(shape) @@ -75,7 +75,7 @@ color = "#[skintone2hex(H.skin_tone)]" else color = "#[owner.dna.features["cock_color"]]" - o.update_body() + owner.update_body() /obj/item/organ/genital/penis/update_link() if(owner) 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 ecca3f27a0..e9b154d934 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -30,7 +30,7 @@ id = "eigenstate" description = "A strange mixture formed from a controlled reaction of bluespace with plasma, that causes localised eigenstate fluxuations within the patient" taste_description = "wiggly" - color = "#60A584" // rgb: 96, 0, 255 + color = "#5020H4" // rgb: 50, 20, 255 overdose_threshold = 15 addiction_threshold = 20 metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -434,8 +434,6 @@ metabolization_rate = 0.5 var/mob/living/carbon/human/H - - /datum/reagent/fermi/BElarger/on_mob_life(mob/living/carbon/M) //Increases breast size /* switch(current_cycle) @@ -526,18 +524,18 @@ if(nP) nP.length = 0.2 to_chat(M, "Your groin feels warm, as you feel a newly forming bulge down below.")//OwO - nP.cached_length = 0 - nP.prev_size = 0 + nP.cached_length = 0.1 + nP.prev_size = 0.1 M.reagents.remove_reagent(src.id, 5) P = nP - else - P.length = P.length + 0.1 - if (P.cached_length >= 10.5 && P.cached_length < 11) //too low? - var/target = M.get_bodypart(BODY_ZONE_CHEST) - to_chat(M, "Your cock begin to strain against your clothes tightly!") - M.apply_damage(5, BRUTE, target) - P.update_appearance() + P.cached_length = P.cached_length + 0.1 + if (P.cached_length >= 10.5 && P.cached_length < 11) //too low? + var/target = M.get_bodypart(BODY_ZONE_CHEST) + to_chat(M, "Your cock begin to strain against your clothes tightly!") + M.apply_damage(5, BRUTE, target) + + P.update() ..() /datum/reagent/fermi/PElarger/overdose_process(mob/living/carbon/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. @@ -566,24 +564,85 @@ ..() -/datum/reagent/fermi/Astral // Gives you the ability to astral project for a moment! +/datum/reagent/fermi/astral // Gives you the ability to astral project for a moment! name = "Astrogen" id = "astral" - description = "A volatile collodial mixture derived from various masculine solutions that encourages a larger gentleman's package via a potent testosterone mix." //The toxic masculinity thing is a joke because I thought it would be funny to include it in the reagents, but I don't think many would find it funny? - color = "#H60584" // rgb: 96, 0, 255 + description = "An opalescent murky liquid that is said to distort your soul from your being." + color = "#6600A4" // rgb: 96, 0, 255 taste_description = "a salty and sticky substance." - overdose_threshold = 12 - metabolization_rate = 0.5 + metabolization_rate = 2.5 + overdose_threshold = 20 + addiction_threshold = 30 + addiction_stage1_end = 9999//Should never end. + var/mob/living/carbon/origin + var/mob/living/simple_animal/hostile/retaliate/ghost/G = null -/datum/reagent/fermi/Astral // Gives you the ability to astral project for a moment! - name = "Astrogen" - id = "astral" - description = "A volatile collodial mixture derived from various masculine solutions that encourages a larger gentleman's package via a potent testosterone mix." //The toxic masculinity thing is a joke because I thought it would be funny to include it in the reagents, but I don't think many would find it funny? - color = "#H60584" // rgb: 96, 0, 255 - taste_description = "a salty and sticky substance." - overdose_threshold = 12 - metabolization_rate = 0.5 +/datum/reagent/fermi/astral/on_mob_life(mob/living/M) // Gives you the ability to astral project for a moment! + switch(current_cycle) + if(1) + //var/mob/living/carbon/H = M + M.alpha = 255 + origin = M + if (G == null) + G = new(get_turf(M.loc)) + G.attacktext = "raises the hairs on the neck of" + G.response_harm = "disrupts the concentration of" + G.response_disarm = "wafts" + G.loot = null + G.maxHealth = 5 + G.health = 5 + G.melee_damage_lower = 0 + G.melee_damage_upper = 0 + G.deathmessage = "disappears as if it was never really there to begin with" + G.incorporeal_move = 1 + G.alpha = 25 + G.name = "[M]'s astral ghost" + M.mind.transfer_to(G) + ..() +/datum/reagent/fermi/astral/on_mob_delete(mob/living/carbon/M) + G.mind.transfer_to(origin) + qdel(G) + ..() + +/datum/reagent/fermi/astral/overdose_start(mob/living/carbon/M) + origin.Sleeping(100, 0) + G.Sleeping(100, 0) + ..() + +//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 (cloning only..?). +/datum/reagent/fermi/astral/addiction_act_stage1(mob/living/carbon/M) + if(prob(50)) + M.alpha = M.alpha - 1 + switch(M.alpha) + if(245) + to_chat(M, "You notice your body starting to disappear, maybe you took too much Astrogen...?") + M.alpha = M.alpha - 1 + if(220) + to_chat(M, "Your addiction is only getting worse as your body disappears. Maybe you should get some more, and fast?") + M.alpha = M.alpha - 1 + if(180) + to_chat(M, "You're starting to get scared as more and more of your body and conciousness begins to fade.") + M.alpha = M.alpha - 1 + if(120) + to_chat(M, "As you lose more and more of yourself, you start to think that maybe shedding your mortality isn't too bad.") + M.alpha = M.alpha - 1 + 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) + if(80) + to_chat(M, "You feel a thrill shoot through your body as what's left of your mind contemplates the coming oblivion of your self.") + M.alpha = M.alpha - 1 + if(45) + to_chat(M, "The last vestiges of your mind eagerly await your imminent annihilation.") + M.alpha = M.alpha - 1 + if(M.alpha <= 30) + to_chat(M, "Your body disperses from exisitance, as you become one with the universe.") + to_chat(M, "As your body disappears, your conciousness 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 I will propose the idea that the player can retain living memories across lives if they die in this way only. + M.visible_message("[M] suddenly disappears, their body evaporatting from exisitance, freeing [M] from their mortal coil.") + qdel(M) + ..() /* diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 82c495b352..604faaffef 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -25,7 +25,7 @@ /datum/chemical_reaction/eigenstate/on_reaction(datum/reagents/holder) var/location = get_turf(holder.my_atom) - var/reagent/fermi/eigenstate/location_created = location + var/datum/reagent/fermi/eigenstate/location_created = location //serum /datum/chemical_reaction/SDGF