From 5ade1a27f01dfc446f09aaacc5483832e6592212 Mon Sep 17 00:00:00 2001 From: Fermi Date: Tue, 30 Apr 2019 05:43:49 +0100 Subject: [PATCH] Everything fixed. BE largement (probably) fully functional PE I think has issues ripping clothes? --- code/modules/surgery/organs/tongue.dm | 9 ++-- .../code/datums/status_effects/chems.dm | 17 ++++-- .../code/modules/arousal/organs/breasts.dm | 22 +++----- .../code/modules/arousal/organs/genitals.dm | 23 ++++---- .../code/modules/arousal/organs/penis.dm | 8 +-- .../chemistry/reagents/fermi_reagents.dm | 53 +++++++++---------- 6 files changed, 67 insertions(+), 65 deletions(-) diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index e358e9ad43..13160479b4 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -212,11 +212,12 @@ message = replacetext(message, "no", "nyo") message = replacetext(message, "ove", "uv") message = replacetext(message, "ove", "uv") - message = replacetext(message, "th", "ff") + //message = replacetext(message, "th", "ff") //too incoherent in practice message = replacetext(message, "l", "w") message = replacetext(message, "r", "w") if(prob(20)) - message = replacetext(message, ".", "OwO.") + message += "OwO" else if(prob(30)) - message = replacetext(message, ".", "uwu.") - message = lowertext(message) + message += "uwu" + message = lowertext(message) + return message diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 288a3ffd5b..40aae850d2 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -23,7 +23,7 @@ /datum/status_effect/chem/SGDF/tick() //message_admins("SDGF ticking") if(owner.stat == DEAD) - message_admins("SGDF status swapping") + //message_admins("SGDF status swapping") if(fermi_Clone && fermi_Clone.stat != DEAD) if(owner.mind) owner.mind.transfer_to(fermi_Clone) @@ -49,8 +49,12 @@ 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..!") + + if(o.w_uniform || o.wear_suit) + 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..!") + o.visible_message("[o]'s chest suddenly bursts forth, ripping their clothes off!'") + else + to_chat(o, "Your bountiful bosom is so rich with mass, you seriously doubt you'll be able to fit any clothes over it.") 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 @@ -101,8 +105,11 @@ 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..!") + if(o.w_uniform || o.wear_suit) + 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..!") + owner.visible_message("[o]'s schlong suddenly bursts forth, ripping their clothes off!'") + else + to_chat(o, "Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.") return ..() diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 47c528072c..e32c9987d3 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -8,9 +8,9 @@ w_class = 3 size = BREASTS_SIZE_DEF var/cached_size = null//for enlargement - var/prev_size = BREASTS_SIZE_DEF//For flavour texts - var/breast_sizes = list ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "huge", "flat") - var/breast_values = list ("A" = 1, "B" = 2, "C" = 3, "D" = 4, "E" = 5, "F" = 6, "G" = 7, "H" = 8, "I" = 9, "J" = 10, "K" = 11, "L" = 12, "M" = 13, "N" = 14, "O" = 15, "huge" = 16, "flat" = 0) + var/prev_size //For flavour texts + var/breast_sizes = list ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "huge", "flat") + var/breast_values = list ("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0) var/statuscheck = FALSE fluid_id = "milk" var/amount = 2 @@ -119,19 +119,13 @@ //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.") + var/mob/living/carbon/human/H = owner + 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.") + var/mob/living/carbon/human/H = owner + H.Force_update_genitals() prev_size = 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() - //update_icon() - message_admins("attempting to update sprite") - var/mob/living/carbon/human/H = owner - H.update_genitals() - //owner.update_genitals() - //if(src.is_exposed()) - // update_icon() + 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!.") diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index aca3d9b964..a3ffcf3698 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -267,7 +267,13 @@ if(src && !QDELETED(src)) dna.species.handle_genitals(src) +/mob/living/carbon/human/proc/Force_update_genitals() + dna.species.handle_genitals(src) + //dna.species.handle_breasts(src) + + /datum/species/proc/handle_genitals(mob/living/carbon/human/H) + message_admins("attempting to update sprite") if(!H)//no args CRASH("H = null") if(!LAZYLEN(H.internal_organs))//if they have no organs, we're done @@ -276,15 +282,12 @@ return if(H.has_trait(TRAIT_HUSK)) return - var/list/genitals_to_add = list() var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_ADJ_LAYER, GENITALS_FRONT_LAYER) var/list/standing = list() var/size = null - for(var/L in relevant_layers) //Less hardcode H.remove_overlay(L) - //start scanning for genitals //var/list/worn_stuff = H.get_equipped_items()//cache this list so it's not built again for(var/obj/item/organ/O in H.internal_organs) @@ -293,7 +296,6 @@ if(G.is_exposed()) //Checks appropriate clothing slot and if it's through_clothes genitals_to_add += H.getorganslot(G.slot) //Now we added all genitals that aren't internal and should be rendered - //start applying overlays for(var/layer in relevant_layers) var/layertext = genitals_layertext(layer) @@ -351,10 +353,11 @@ /* /datum/species/proc/handle_breasts(mob/living/carbon/human/H) //check for breasts first! - var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") + + var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts") if(!B) return - + message_admins("attempting to update sprite in a hacky way") ///obj/item/organ/genital/breasts/update_icon(/obj/item/organ/genital) Where did this come from? //Variables: var/size = B.size @@ -372,7 +375,7 @@ //If breasts are hueg (larger than 5 only have one sprite atm) if (size > 5) - genital_overlay.icon_state = "[B.slot]_pair_[size]_0_[layertext]"//I haven't done around sizes above 5, I dunno how..! + genital_overlay.icon_state = "[B.slot]_[B.shape]_[size]_0_[layertext]"//I haven't done around sizes above 5, I dunno how..! else genital_overlay.icon_state = "[B.slot]_[S.icon_state]_[size]_[B.aroused_state]_[layertext]" @@ -385,10 +388,6 @@ genital_overlay.color = "#[skintone2hex(H.skin_tone)]" else switch(S.color_src) - if("cock_color") - genital_overlay.color = "#[H.dna.features["cock_color"]]" - if("breasts_color") - genital_overlay.color = "#[H.dna.features["breasts_color"]]" if("vag_color") genital_overlay.color = "#[H.dna.features["vag_color"]]" if(MUTCOLORS) @@ -415,4 +414,4 @@ for(var/L in relevant_layers) H.apply_overlay(L) -*/ \ No newline at end of file +*/ diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 02f9792fa4..4dfef831b6 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -68,10 +68,12 @@ //update_body() //P.update_icon() //Either of these don't work, why??? girth = (length * girth_ratio) - var/mob/living/carbon/human/H = owner - H.update_genitals() + //var/mob/living/carbon/human/H = owner + //H.update_genitals() //owner.update_genitals() + //I have no idea on how to update sprites and I hate it + /obj/item/organ/genital/penis/update_appearance() //var/mob/living/carbon/o = owner var/string = "penis_[GLOB.cock_shapes_icons[shape]]_[size]" @@ -85,7 +87,7 @@ color = "#[skintone2hex(H.skin_tone)]" else color = "#[owner.dna.features["cock_color"]]" - owner.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 e0714af177..553f8aa6b2 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -247,23 +247,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING if(pollStarted == FALSE) pollStarted = TRUE candies = pollGhostCandidates("Do you want to play as a clone and do you agree to respect their character and act in a similar manner to them? I swear to god if you diddle them I will be very disapointed in you.") - - - /* - for(var/mob/dead/observer/G in GLOB.player_list) - group += G - for(var/m in group) - var/mob/W = m - message_admins("Attempting to poll") - showCandidatePollWindow(M, 190, "Do you want to play as a clone of [M.name] and do you agree to respect their character and act in a similar manner to them? I swear to god if you diddle them I will be very disapointed in you.", result, null, current_cycle, TRUE) - if(19) - for(var/mob/W in result) - if(!W.key || !W.client) - result -= W - candies = result - */ - - if(20 to INFINITY) message_admins("Number of candidates [LAZYLEN(candies)]") if(LAZYLEN(candies) && src.playerClone == FALSE) //If there's candidates, clone the person and put them in there! @@ -303,17 +286,23 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING //Damage the clone SM.blood_volume = BLOOD_VOLUME_NORMAL/2 SM.adjustCloneLoss(80, 0) - SM.setBrainLoss(20) + SM.setBrainLoss(40) SM.nutrition = startHunger/2 - var/datum/reagents/SMR = SM + //var/datum/reagents/SMR = SM ///datum/reagents //var/mob/living/carbon/human has a holder, carbon does not // You need to add to a holder. // reagentS not reagent (?) //SM.create_reagents() - SMR = locate(/datum/reagents) in SM - SMR.add_reagent("SDGFheal", volume) + + //Really hacky way to deal with this stupid problem I have + SM.reagents.add_reagent("SDGFheal", volume) + //holder.add_reagent("SDGFheal", volume) holder.remove_reagent(src.id, 999) + //SMR = locate(/datum/reagents in SM) + //holder.trans_to(SMR, volume) + + return //BALANCE: should I make them a pacifist, or give them some cellular damage or weaknesses? //after_success(user, SM) @@ -410,7 +399,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING /datum/reagent/fermi/SDGFheal/on_mob_life(mob/living/carbon/M)//Used to heal the clone after splitting, the clone spawns damaged. (i.e. insentivies players to make more than required, so their clone doesn't have to be treated) if(M.blood_volume < BLOOD_VOLUME_NORMAL) M.blood_volume += 10 - M.adjustCloneLoss(-2.5, 0) + M.adjustCloneLoss(-2, 0) M.setBrainLoss(-1) M.nutrition += 10 @@ -424,6 +413,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING /datum/reagent/fermi/SDGFtox/on_mob_life(mob/living/carbon/M)//Used to heal the clone after splitting - the clone spawns damaged. (i.e. insentivies players to make more than required, so their clone doesn't have to be treated) M.blood_volume -= 10 M.adjustCloneLoss(2, 0) + ..() //Fail state of SDGF /datum/reagent/fermi/SDZF @@ -508,6 +498,16 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING metabolization_rate = 0.5 var/mob/living/carbon/human/H +/datum/reagent/fermi/BElarger/on_mob_add(mob/living/carbon/M) + var/mob/living/carbon/human/H = M + var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts") + if(!B) + return + var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5) + B.prev_size = B.size + B.cached_size = [sizeConv[B.size]] + message_admins("init B size: [B.size], prev: [B.prev_size], cache = [B.cached_size], raw: [sizeConv[B.size]]") + /datum/reagent/fermi/BElarger/on_mob_life(mob/living/carbon/M) //Increases breast size var/mob/living/carbon/human/H = M var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") @@ -529,7 +529,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.reagents.remove_reagent(src.id, 5) B = nB //If they have them, increase size. If size is comically big, limit movement and rip clothes. - message_admins("Breast size: [B.size], [B.cached_size], [holder]") + //message_admins("Breast size: [B.size], [B.cached_size], [holder]") B.cached_size = B.cached_size + 0.1 if (B.cached_size >= 8.5 && B.cached_size < 9) if(H.w_uniform || H.wear_suit) @@ -553,7 +553,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING if(P) P.length = P.length - 0.1 - message_admins("Breast size: [P.size], [P.cached_length], [holder]") + message_admins("lewdsnek size: [P.size], [P.cached_length], [holder]") P.update() if(T) T.Remove(M) @@ -760,10 +760,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING if(prob(20)) var/list/seen = viewers(5, get_turf(M))//Sound and sight checkers for(var/victim in seen) - to_chat(M, "You notice [victim]'s bulge, OwO!") + to_chat(M, "You notice [victim]'s bulge [pick("OwO!", "UwU!")]") if(21) - message_admins("holder define: [holder]") - var/obj/item/organ/tongue/T = M.getorganslot(BODY_ZONE_PRECISE_MOUTH) + var/obj/item/organ/tongue/T = M.getorganslot(ORGAN_SLOT_TONGUE) var/obj/item/organ/tongue/nT = new /obj/item/organ/tongue/OwO T.Remove(M) nT.Insert(M)