From ba84ef600bbfd281cd61aae11248cb75db7fb563 Mon Sep 17 00:00:00 2001 From: Fermi Date: Sat, 27 Apr 2019 12:00:26 +0100 Subject: [PATCH] PE and BE functionality fixed/added. --- .../code/datums/status_effects/chems.dm | 47 ++++++ .../code/modules/arousal/organs/breasts.dm | 4 +- .../chemistry/reagents/fermi_reagents.dm | 145 +++++++++--------- .../reagents/chemistry/recipes/fermi.dm | 4 + 4 files changed, 125 insertions(+), 75 deletions(-) diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 6f3d4c99ae..43f8b18cd0 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -34,6 +34,52 @@ // to_chat(owner, "[linked_extract] desperately tries to move your soul to a living body, but can't find one!") ..() +/datum/status_effect/chem/BElarger + id = "BElarger" + var/list/items = list() + +/datum/status_effect/chem/BElarger/on_apply(mob/living/carbon/M) + var/mob/living/carbon/human/H + if(H.w_uniform || H.wear_suit) + playsound(M.loc, 'sound/items/poster_ripped.ogg', 50, 1) + items |= M.get_equipped_items(TRUE) + M.visible_message("[M]'s chest suddenly bursts forth, ripping their clothes off!'") + to_chat(M, "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..!") + M.dropItemToGround(H.wear_suit) + M.dropItemToGround(H.w_uniform) + +/datum/status_effect/chem/BElarger/tick(mob/living/carbon/M) + var/mob/living/carbon/human/H + if(H.w_uniform || H.wear_suit) + items |= M.get_equipped_items(TRUE) + to_chat(M, "Your enormous breasts are way to large to fit anything over!") + M.dropItemToGround(H.wear_suit) + M.dropItemToGround(H.w_uniform) + +/datum/status_effect/chem/PElarger + id = "PElarger" + var/list/items = list() + +/datum/status_effect/chem/PElarger/on_apply(mob/living/carbon/M) + var/mob/living/carbon/human/H + if(H.w_uniform || H.wear_suit) + playsound(M.loc, 'sound/items/poster_ripped.ogg', 50, 1) + items |= M.get_equipped_items(TRUE) + M.visible_message("[M]'s penis suddenly bursts forth, ripping their clothes off!'") + to_chat(M, "Your clothes give, ripping into peices under the strain of your swelling penis! 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..!") + M.dropItemToGround(H.wear_suit) + M.dropItemToGround(H.w_uniform) + +/datum/status_effect/chem/PElarger/tick(mob/living/carbon/M) + var/mob/living/carbon/human/H + if(H.w_uniform || H.wear_suit) + items |= M.get_equipped_items(TRUE) + to_chat(M, "Your enormous package is way to large to fit anything over!") + M.dropItemToGround(H.wear_suit) + M.dropItemToGround(H.w_uniform) + + +/*Doesn't work /datum/status_effect/chem/SDGF/candidates id = "SGDFCandi" var/mob/living/fermi_Clone @@ -42,3 +88,4 @@ /datum/status_effect/chem/SDGF/candidates/on_apply() 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. ", "FermiClone", null, ROLE_SENTIENCE, 300) // see poll_ignore.dm, should allow admins to ban greifers or bullies return ..() +*/ diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index b17cb9be72..1ea7d68cfc 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -44,9 +44,9 @@ desc = "You see a pair of breasts." else desc = "You see some breasts, they seem to be quite exotic." - if (size >= 8.5) + if (size <= 7) desc += " You estimate that they're [uppertext(size)]-cups." - else if (size > 8.5) + else if (size > 7) desc = "You see [pick("some serious honkers", "a real set of badonkers", "some dobonhonkeros", "massive dohoonkabhankoloos", "big old tonhongerekoogers", "giant bonkhonagahoogs", "humongous hungolomghnonoloughongous")]. Their volume is way beyond cupsize now, measuring in about [size]cm in diameter." else desc += " You wouldn't measure them in cup sizes." 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 d3643b8e1a..3ed6a4fa30 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -12,10 +12,10 @@ id = "fermi" taste_description = "If affection had a taste, this would be it." -/datum/reagent/fermi/on_mob_life(mob/living/carbon/M) +///datum/reagent/fermi/on_mob_life(mob/living/carbon/M) //current_cycle++ - holder.remove_reagent(src.id, metabolization_rate / M.metabolism_efficiency, FALSE) //fermi reagents stay longer if you have a better metabolism - return ..() + //holder.remove_reagent(src.id, metabolization_rate / M.metabolism_efficiency, FALSE) //fermi reagents stay longer if you have a better metabolism + //return ..() /datum/reagent/fermi/overdose_start(mob/living/carbon/M) current_cycle++ @@ -37,7 +37,7 @@ addiction_stage2_end = 30 addiction_stage3_end = 40 addiction_stage4_end = 43 //Incase it's too long - var/turf/open/location_created = null + var/location_created var/turf/open/location_return = null var/addictCyc1 = 1 var/addictCyc2 = 1 @@ -48,26 +48,17 @@ mob/living/carbon/purgeBody + /* -/datum/reagent/fermi/eigenstate/oew() - . = ..() //Needed! - location_created = get_turf(src) //Sets up coordinate of where it was created - message_admins("Attempting to get creation location from on_new() [location_created]") - //..()s -*/ /datum/reagent/fermi/eigenstate/on_new() -//obj/item/reagent/fermi/eigenstate/Initialize() -//datum/reagent/fermi/eigenstate/Initialize() - . = ..() //Needed! - //if(holder && holder.my_atom) location_created = get_turf(loc) //Sets up coordinate of where it was created message_admins("Attempting to get creation location from init() [location_created]") //..() - +*/ /datum/reagent/fermi/eigenstate/on_mob_life(mob/living/M) //Teleports to chemistry! switch(current_cycle) - if(0) + if(1) location_return = get_turf(M) //sets up return point to_chat(M, "You feel your wavefunction split!") do_sparks(5,FALSE,M) @@ -216,13 +207,14 @@ message_admins("Attempting to poll") ^^^breaks everything */ +/* /datum/reagent/fermi/proc/sepPoll() //var/list/procCandies = list() //if (pollStarted == FALSE) // procCandies = 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.") sleep(300) return procCandies - +*/ /*if(1) //I'm not sure how pollCanditdates works, so I did this. Gives a chance for people to say yes. M.apply_status_effect(/datum/status_effect/chem/SDGF/candidates) /datum/status_effect/chem/SDGF/candidates/candies = new /datum/status_effect/chem/SDGF/candidates @@ -234,7 +226,7 @@ //Setup clone switch(current_cycle) if(1) - if(pollStarted = FALSE) + 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.") @@ -258,6 +250,7 @@ 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! message_admins("Candidate found!") + to_chat(M, "The cells reach a critical micelle concentration, nucleating rapidly within your body!") //var/typepath = owner.type //clone = new typepath(owner.loc) var/typepath = M.type @@ -281,14 +274,16 @@ //SM.sentience_act() to_chat(SM, "You feel a strange sensation building in your mind as you realise there's two of you, before you get a chance to think about it, you suddenly split from your old body, and find yourself face to face with yourself, or rather, your original self.") to_chat(SM, "While you find your newfound existence strange, you share the same memories as [M.real_name]. [pick("However, You find yourself indifferent to the goals you previously had, and take more interest in your newfound independence, but still have an indescribable care for the safety of your original", "Your mind has not deviated from the tasks you set out to do, and now that there's two of you the tasks should be much easier.")]") - to_chat(M, "You feel a strange sensation building in your mind as you realise there's two of you, before you get a chance to think about it, you suddenly split from your old body, and find yourself face to face with yourself.") + to_chat(M, "You feel a strange sensation building in your mind as you realise there's two of you, before you get a chance to think about it, you suddenly split from your old body, and find yourself face to face with yourself.") M.visible_message("[M] suddenly shudders, and splits into two identical twins!") SM.copy_known_languages_from(M, FALSE) playerClone = TRUE M.next_move_modifier = 1 M.nutrition = 150 - holder.remove_reagent("SGDF", 999, FALSE) + + reaction_mob(SM, ) + holder.remove_reagent("SDGF", 999) //BALANCE: should I make them a pacifist, or give them some cellular damage or weaknesses? //after_success(user, SM) @@ -333,7 +328,7 @@ to_chat(M, "Your body splits away from the cell clone of yourself, leaving you with a drained and hollow feeling inside.") M.apply_status_effect(/datum/status_effect/chem/SGDF) if(87 to INFINITY) - holder.remove_reagent("SGDF", 1, FALSE)//removes SGDF on completion. + holder.remove_reagent("SGDF", 1)//removes SGDF on completion. message_admins("Purging SGDF [volume]") message_admins("Growth nucleation occuring (SDGF), step [current_cycle] of 77") @@ -407,17 +402,18 @@ ZI.real_name = M.real_name//Give your offspring a big old kiss. ZI.name = M.real_name //ZI.updateappearance(mutcolor_update=1) - holder.remove_reagent("SGZF", 20, FALSE) + M.reagents.remove_reagent("SDZF", 20) else to_chat(M, "The pentetic acid seems to have stopped the decay for now, clumping up the cells into a horrifying tumour.") - if(77 to INFINITY)//purges chemical fast, producing a "slime" for each one. Said slime is weak to fire. + if(87 to INFINITY)//purges chemical fast, producing a "slime" for each one. Said slime is weak to fire. M.nutrition -= 100 var/mob/living/simple_animal/slime/S = new(get_turf(M.loc),"grey") S.damage_coeff = list(BRUTE = ((1 / volume)**0.1) , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) S.name = "Living teratoma" S.real_name = "Living teratoma" + S.rabid = 1 //S.updateappearance(mutcolor_update=1) - holder.remove_reagent("SGZF", 20, FALSE) + M.reagents.remove_reagent("SDZF", 20) M.adjustToxLoss(10, 0) to_chat(M, "A large glob of the tumour suddenly splits itself from your body. You feel grossed out and slimey...") message_admins("Growth nucleation occuring (SDGF), step [current_cycle] of 20") @@ -434,7 +430,7 @@ color = "#E60584" // rgb: 96, 0, 255 taste_description = "a milky ice cream like flavour." overdose_threshold = 12 - metabolization_rate = 0.5 * REAGENTS_METABOLISM + metabolization_rate = 2 //var/mob/living/carbon/M var/mob/living/carbon/human/H //var/mob/living/carbon/human/species/S @@ -467,51 +463,48 @@ nB.color = skintone2hex(H.skin_tone) nB.size = "a" to_chat(M, "Your chest feels warm, tingling with newfound sensitivity.") - holder.remove_reagent("BElarger", 2, FALSE) + M.reagents.remove_reagent(src.id, 5) else //If they have them, increase size. If size is comically big, limit movement and rip clothes. - message_admins("Breast size: [B.size]") + message_admins("Breast size: [B.size], [holder]") if(B.size == "a") B.size = "b" to_chat(M, "You feel your breasts grow to a modest size.") - holder.remove_reagent("BElarger", 2, FALSE) - sleep(20) - if(B.size == "b") + M.reagents.remove_reagent(src.id, 5) + sleep(500) + else if(B.size == "b") B.size = "c" to_chat(M, "Your breasts swell up to a substancial size.") - holder.remove_reagent("BElarger", 2, FALSE) - sleep(20) - if(B.size == "c") + M.reagents.remove_reagent(src.id, 5) + sleep(500) + else if(B.size == "c") B.size = "d" to_chat(M, "Your breasts flourish into a full pair.") - holder.remove_reagent("BElarger", 2, FALSE) - sleep(20) - if(B.size == "d") + M.reagents.remove_reagent(src.id, 5) + sleep(500) + else if(B.size == "d") B.size = "e" to_chat(M, "Your breasts expand into a large voluptuous pair!") - holder.remove_reagent("BElarger", 2, FALSE) - sleep(20) - if(B.size == "e") + M.reagents.remove_reagent(src.id, 5) + sleep(500) + else if(B.size == "e") B.size = 7 - to_chat(M, "Your breasts expand into a large voluptuous pair!") - holder.remove_reagent("BElarger", 2, FALSE) - sleep(20) - if(B.size > 7) - B.size += 0.2 + to_chat(M, "Your breasts burst forth into [pick("some serious honkers", "a real set of badonkers", "some dobonhonkeros", "massive dohoonkabhankoloos", "big old tonhongerekoogers", "giant bonkhonagahoogs", "humongous hungolomghnonoloughongous")].") + M.reagents.remove_reagent(src.id, 5) + sleep(500) + if(B.size >= 7) + B.size = B.size + 0.1 if (B.size > 9) //M.adjustOxyLoss((-50, 0) - if(H.w_uniform || H.wear_suit) - M.visible_message("[M]'s chest suddenly bursts forth, ripping their clothes off!'") - to_chat(M, "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..!") - playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) - H.dna.species.no_equip = list(SLOT_WEAR_SUIT, SLOT_W_UNIFORM) - M.add_movespeed_modifier("hugebreasts", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (B.size - 8.1)) + M.apply_status_effect(/datum/status_effect/chem/BElarger) + M.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (B.size - 8.1)) M.next_move_modifier += 0.1 else if (B.size > 8.5) to_chat(M, "Your breasts begin to strain against your clothes tightly!") M.adjustOxyLoss(10, 0) M.adjustBruteLoss(2, 0) + sleep(500) - //M.update() + B.update_appearance() ..() /datum/reagent/fermi/BElarger/overdose_start(mob/living/carbon/M) //Turns you into a female if male and ODing, doesn't touch nonbinary and object genders. @@ -526,17 +519,18 @@ M.visible_message("[M] suddenly looks more feminine!", "You suddenly feel more feminine!") if(P) - P.size -= 0.2 - if (P.size <= 0.1) + P.length -= 0.1 + if (P.length <= 0.1) to_chat(M, "You feel your penis shink, disappearing from your loins, leaving a strange smoothness in your pants.") P.Remove(P) if(T) T.Remove(M) - else if (P.size > 9 ) - M.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (P.size - 8.1))//Via la liberation + else if (P.length > 7) + M.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (P.length - 10.1))//Via la liberation M.next_move_modifier -= 0.1 H.dna.species.no_equip = list(SLOT_WEAR_SUIT, SLOT_W_UNIFORM) - + else + M.remove_status_effect(/datum/status_effect/chem/PElarger) if(!V) var/obj/item/organ/genital/vagina/nV = new nV.Insert(M) @@ -545,7 +539,7 @@ var/obj/item/organ/genital/womb/nW = new nW.Insert(M) W = nW - //M.update() + P.update_appearance() ..() /datum/reagent/fermi/PElarger // Due to popular demand...! @@ -574,7 +568,7 @@ */ - var/obj/item/organ/genital/penis/P = M.getorganslot("penis)") + var/obj/item/organ/genital/penis/P = M.getorganslot("penis") if(!P) message_admins("No penis found!") var/obj/item/organ/genital/penis/nP = new @@ -586,26 +580,23 @@ else if(M.dna.features["cock_color"]) nP.color = "#[M.dna.features["cock_color"]]" else*/ - nP.color = skintone2hex(H.skin_tone) - nP.size = 0 + //nP.color = skintone2hex(H.skin_tone) + nP.length = 0.2 to_chat(M, "Your groin feels warm, as you feel a new bulge down below.") P = nP + P.update_size() else - P.size += 0.2 - if (P.size > 9) - if(H.w_uniform || H.wear_suit) - M.visible_message("[M]'s penis suddenly bursts forth, ripping their clothes off!'") - to_chat(M, "Your clothes give, ripping into peices under the strain of your swelling penis! 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..!") - playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) - H.dna.species.no_equip = list() - M.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (P.size - 8.1)) + P.length = P.length + 0.1 + if (P.length > 9) + M.apply_status_effect(/datum/status_effect/chem/BElarger) + M.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (P.length - 10.1)) M.next_move_modifier += 0.1 - else if (P.size > 8.5) + else if (P.length > 8.5) to_chat(M, "Your cock begin to strain against your clothes tightly!") M.adjustBruteLoss(5, 0) - //H.update() - message_admins("P size: [P.size]") + P.update_appearance() + message_admins("P size: [P.length]") ..() /datum/reagent/fermi/PElarger/overdose_start(mob/living/carbon/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. @@ -620,19 +611,27 @@ M.visible_message("[M] suddenly looks more masculine!", "You suddenly feel more masculine!") if(B) - B.size -= 0.2 + B.size -= 0.1 if (B.size < 0.1) to_chat(M, "You feel your breasts shrinking away from your body as your chest flattens out.") B.Remove(M) + else if (B.size >= 9) + M.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (B.size - 8.1))//Via la liberation + M.next_move_modifier -= 0.1 + H.dna.species.no_equip = list(SLOT_WEAR_SUIT, SLOT_W_UNIFORM) if(V) V.Remove(M) if(W) W.Remove(M) + B.update_appearance() + else + M.remove_status_effect(/datum/status_effect/chem/BElarger) + if(!T) var/obj/item/organ/genital/testicles/nT = new nT.Insert(M) - //H.update() + ..() diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index d4cbf6847a..82c495b352 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -23,6 +23,10 @@ FermiExplode = FALSE //If the chemical explodes in a special way ImpureChem = "toxin" //What chemical is produced with an inpure reaction +/datum/chemical_reaction/eigenstate/on_reaction(datum/reagents/holder) + var/location = get_turf(holder.my_atom) + var/reagent/fermi/eigenstate/location_created = location + //serum /datum/chemical_reaction/SDGF name = "synthetic-derived growth factor"