More lines of code rewriting fermis' mess.

This commit is contained in:
Ghommie
2019-09-01 05:58:57 +02:00
parent 36ffd3d6a8
commit e66b95b9c9
4 changed files with 56 additions and 55 deletions
@@ -19,13 +19,17 @@
var/linked_organ_slot //only one of the two organs needs this to be set up. update_link() will handle linking the rest.
var/layer_index = GENITAL_LAYER_INDEX //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in.
/obj/item/organ/genital/Initialize()
/obj/item/organ/genital/Initialize(mapload, mob/living/carbon/human/H)
. = ..()
if(fluid_id)
create_reagents(fluid_max_volume)
if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION))
reagents.add_reagent(fluid_id, fluid_max_volume)
update()
if(H)
get_features(H)
Insert(H)
else
update()
/obj/item/organ/genital/Destroy()
if(linked_organ)
@@ -180,9 +184,7 @@
/mob/living/carbon/human/proc/give_genital(obj/item/organ/genital/G)
if(!dna || (NOGENITALS in dna.species.species_traits) || getorganslot(initial(G.slot)))
return FALSE
G = new G
G.get_features(src)
G.Insert(src)
G = new G(null, src)
return G
/obj/item/organ/genital/proc/get_features(mob/living/carbon/human/H)
@@ -12,10 +12,17 @@
masturbation_verb = "massage"
orgasm_verb = "leaking"
fluid_transfer_factor = 0.5
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/list/static/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/cached_size //for enlargement SHOULD BE A NUMBER
var/prev_size //For flavour texts SHOULD BE A LETTER
/obj/item/organ/genital/breasts/Initialize(mapload, mob/living/carbon/human/H)
if(!H)
cached_size = size
size = breast_values[size]
prev_size = size
return ..()
/obj/item/organ/genital/breasts/update_appearance()
. = ..()
var/lowershape = lowertext(shape)
@@ -28,14 +35,13 @@
desc = "You see three sets of breasts, running from their chest to their belly."
else
desc = "You see some breasts, they seem to be quite exotic."
if(cached_size > 16)
if(size == "huge")
desc = "You see [pick("some serious honkers", "a real set of badonkers", "some dobonhonkeros", "massive dohoonkabhankoloos", "two big old tonhongerekoogers", "a couple of giant bonkhonagahoogs", "a pair of humongous hungolomghnonoloughongous")]. Their volume is way beyond cupsize now, measuring in about [round(cached_size)]cm in diameter."
else if (!isnum(size))
else
if (size == "flat")
desc += " They're very small and flatchested, however."
else
desc += " You estimate that they're [uppertext(size)]-cups."
//string = "breasts_[lowertext(shape)]_[size]-s"
if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state)
desc += " They're leaking [fluid_id]."
@@ -62,38 +68,40 @@
//this is far too lewd wah
/obj/item/organ/genital/breasts/update_size()//wah
if(cached_size == size)
return
if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!fixed
if(owner)
to_chat(owner, "<span class='warning'>You feel your breasts shrinking away from your body as your chest flattens out.</b></span>")
to_chat(owner, "<span class='warning'>You feel your breasts shrinking away from your body as your chest flattens out.</span>")
QDEL_IN(src, 1)
return
var/enlargement = FALSE
switch(cached_size)
if(0 to 0.99) //If flatchested
switch(round(cached_size))
if(0) //flatchested
size = "flat"
if(16 to INFINITY) //if Rediculous
if(1 to 8) //modest
size = breast_values[round(cached_size)]
if(9 to 15) //massive
size = breast_values[round(cached_size)]
enlargement = TRUE
if(16 to INFINITY) //rediculous
size = "huge"
enlargement = TRUE
if(owner && !enlargement)
if(!owner.has_status_effect(/datum/status_effect/chem/breast_enlarger))
if(owner)
var/status_effect = owner.has_status_effect(/datum/status_effect/chem/breast_enlarger)
if(enlargement && !status_effect)
owner.apply_status_effect(/datum/status_effect/chem/breast_enlarger)
size = breast_values[round(cached_size)]
else if(status_effect)
owner.remove_status_effect(/datum/status_effect/chem/breast_enlarger)
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]
if(owner)
var/mob/living/carbon/human/H = owner
if (breast_values[size] > breast_values[prev_size])
to_chat(H, "<span class='warning'>Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [uppertext(size)]-cup.</b></span>")
to_chat(H, "<span class='warning'>Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [uppertext(size)]-cup.</span>")
H.dna.species.handle_genitals(src)
else if (breast_values[size] > 0.5)
to_chat(H, "<span class='warning'>Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [uppertext(size)]-cup.</b></span>")
to_chat(H, "<span class='warning'>Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [uppertext(size)]-cup.</span>")
H.dna.species.handle_genitals(src)
prev_size = size
else
size = "huge"
/obj/item/organ/genital/breasts/get_features(mob/living/carbon/human/H)
var/datum/dna/D = H.dna
@@ -107,12 +115,12 @@
if(!isnum(size))
if(size == "flat")
cached_size = 0
prev_size = 0
else if (cached_size == "huge")
prev_size = "huge"
else if (size == "huge")
cached_size = 16
else
cached_size = breast_values[size]
prev_size = size
prev_size = size
else
cached_size = size
size = breast_values[size]
prev_size = size
@@ -19,8 +19,6 @@
var/list/knotted_types = list("knotted", "barbed, knotted")
/obj/item/organ/genital/penis/update_size()
if(cached_length == length)
return
if(cached_length < 0)//I don't actually know what round() does to negative numbers, so to be safe!!
if(owner)
to_chat(owner, "<span class='warning'>You feel your tallywacker shrinking away from your body as your groin flattens out!</b></span>")
@@ -31,13 +29,13 @@
var/new_size
var/enlargement = FALSE
switch(round(cached_length))
if(0 to 6.99) //If modest size
if(0 to 6) //If modest size
new_size = 1
if(7 to 10.99) //If large
if(7 to 10) //If large
size = 2
if(11 to 19.99) //If massive
if(11 to 19) //If massive
size = 3
if(20 to 34.99) //If massive and due for large effects
if(20 to 34) //If massive and due for large effects
size = 3
enlargement = TRUE
if(35 to INFINITY) //If comical
@@ -52,10 +52,6 @@
if(!B)
H.emergent_genital_call()
return
if(!B.size == "huge")
var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5)
B.prev_size = B.size
B.cached_size = sizeConv[B.size]
/datum/reagent/fermi/breast_enlarger/on_mob_life(mob/living/carbon/M) //Increases breast size
if(!ishuman(M))//Just in case
@@ -87,7 +83,7 @@
nB.color = skintone2hex(H.skin_tone)
nB.size = "flat"
nB.cached_size = 0
nB.prev_size = 0
nB.prev_size = "flat"
to_chat(M, "<span class='warning'>Your chest feels warm, tingling with newfound sensitivity.</b></span>")
M.reagents.remove_reagent(id, 5)
B = nB
@@ -123,15 +119,13 @@
P.cached_length = P.cached_length - 0.05
P.update()
if(T)
T.Remove(M)
qdel(T)
if(!V)
var/obj/item/organ/genital/vagina/nV = new
nV.Insert(M)
V = nV
V = new
V.Insert(M)
if(!W)
var/obj/item/organ/genital/womb/nW = new
nW.Insert(M)
W = nW
W = new
W.Insert(M)
return ..()
/datum/reagent/fermi/BEsmaller
@@ -232,8 +226,6 @@
if(!P)
H.emergent_genital_call()
return
P.prev_length = P.length
P.cached_length = P.length
/datum/reagent/fermi/penis_enlarger/on_mob_life(mob/living/carbon/M) //Increases penis size, 5u = +1 inch.
if(!ishuman(M))
@@ -273,7 +265,9 @@
P.update()
return ..()
/datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders.
/datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/human/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders.
if(!istype(M))
return ..()
//Acute hepatic pharmacokinesis.
if(HAS_TRAIT(M, TRAIT_PHARMA))
var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
@@ -292,14 +286,13 @@
if(B)
B.cached_size = B.cached_size - 0.05
B.update()
if(V)
V.Remove(M)
if(M.getorganslot(ORGAN_SLOT_VAGINA))
qdel(V)
if(W)
W.Remove(M)
qdel(W)
if(!T)
var/obj/item/organ/genital/testicles/nT = new
nT.Insert(M)
T = nT
T = new
T.Insert(M)
return ..()
/datum/reagent/fermi/PEsmaller // Due to cozmo's request...!