Added Astral beta chem.

This commit is contained in:
Fermi
2019-04-28 15:55:23 +01:00
parent 3c82bb2d46
commit 890b3f8d7d
5 changed files with 131 additions and 69 deletions
@@ -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("<span class='boldnotice'>[H]'s chest suddenly bursts forth, ripping their clothes off!'</span>")
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("<span class='boldnotice'>[o]'s chest suddenly bursts forth, ripping their clothes off!'</span>")
to_chat(o, "<span class='warning'>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..!</b></span>")
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, "<span class='warning'>Your enormous breasts are way to large to fit anything over!</b></span>")
if(o.wear_suit)
o.dropItemToGround(H.wear_suit, TRUE)
to_chat(owner, "<span class='warning'>Your enormous breasts are way to large to fit anything over!</b></span>")
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, "<span class='warning'>Your enormous breasts are way too large to fit anything over them!</b></span>")
//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("<span class='boldnotice'>[o]'s schlong suddenly bursts forth, ripping their clothes off!'</span>")
to_chat(o, "<span class='warning'>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..!</b></span>")
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, "<span class='warning'>Your enormous package is way to large to fit anything over!</b></span>")
if(o.wear_suit)
o.dropItemToGround(o.wear_suit, TRUE)
to_chat(owner, "<span class='warning'>Your enormous package is way to large to fit anything over!</b></span>")
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, "<span class='warning'>Your enormous package is way to large to fit anything over!</b></span>")
switch(round(P.cached_length))
if(11)
if (!(P.prev_size == P.size))
@@ -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, "<span class='warning'>You feel your breasts shrinking away from your body as your chest flattens out.</b></span>")
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, "<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>")
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>")
prev_size = size
icon_state = sanitize_text("breasts_[shape]_[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()
B.update_icon()
update_icon()
@@ -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, "<span class='warning'>You feel your tallywacker shrinking away from your body as your groin flattens out!</b></span>")
P.Remove(o)
switch(round(cached_length))
@@ -58,12 +58,12 @@
to_chat(o, "<span class='warning'>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.</b></span>")
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)
@@ -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, "<span class='warning'>Your groin feels warm, as you feel a newly forming bulge down below.</b></span>")//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, "<span class='warning'>Your cock begin to strain against your clothes tightly!</b></span>")
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, "<span class='warning'>Your cock begin to strain against your clothes tightly!</b></span>")
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, "<span class='warning'>You notice your body starting to disappear, maybe you took too much Astrogen...?</b></span>")
M.alpha = M.alpha - 1
if(220)
to_chat(M, "<span class='notice'>Your addiction is only getting worse as your body disappears. Maybe you should get some more, and fast?</b></span>")
M.alpha = M.alpha - 1
if(180)
to_chat(M, "<span class='notice'>You're starting to get scared as more and more of your body and conciousness begins to fade.</b></span>")
M.alpha = M.alpha - 1
if(120)
to_chat(M, "<span class='notice'>As you lose more and more of yourself, you start to think that maybe shedding your mortality isn't too bad.</b></span>")
M.alpha = M.alpha - 1
if(100)
to_chat(M, "<span class='notice'>You feel a substantial part of your soul flake off into the ethereal world, rendering yourself unclonable.</b></span>")
M.alpha = M.alpha - 1
M.add_trait(TRAIT_NOCLONE)
if(80)
to_chat(M, "<span class='notice'>You feel a thrill shoot through your body as what's left of your mind contemplates the coming oblivion of your self.</b></span>")
M.alpha = M.alpha - 1
if(45)
to_chat(M, "<span class='warning'>The last vestiges of your mind eagerly await your imminent annihilation.</b></span>")
M.alpha = M.alpha - 1
if(M.alpha <= 30)
to_chat(M, "<span class='warning'>Your body disperses from exisitance, as you become one with the universe.</b></span>")
to_chat(M, "<span class='userdanger'>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.)</span>")//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)
..()
/*
@@ -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