Everything fixed.

BE largement (probably) fully functional
PE I think has issues ripping clothes?
This commit is contained in:
Fermi
2019-04-30 05:43:49 +01:00
parent 4bd2da202b
commit 5ade1a27f0
6 changed files with 67 additions and 65 deletions
@@ -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, "<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>")
var/mob/living/carbon/human/H = owner
H.Force_update_genitals()
else if (breast_values[size] < breast_values[prev_size])
to_chat(owner, "<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>")
var/mob/living/carbon/human/H = owner
H.Force_update_genitals()
prev_size = size
else if (cached_size == 16.2)
to_chat(owner, "<span class='warning'>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!.</b></span>")
//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, "<span class='warning'>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.</b></span>")// taking both of your hands to hold!.</b></span>")
@@ -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)
*/
*/
@@ -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)
@@ -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)