diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm
index 6110f2b0c0..12492c8043 100644
--- a/code/modules/ninja/suit/suit.dm
+++ b/code/modules/ninja/suit/suit.dm
@@ -101,7 +101,7 @@ Contents:
to_chat(H, "fÄTaL ÈÈRRoR: 382200-*#00CÖDE RED\nUNAUHORIZED USÈ DETÈCeD\nCoMMÈNCING SUB-R0UIN3 13...\nTÈRMInATING U-U-USÈR...")
H.gib()
return FALSE
- if(!istype(H.head, /obj/item/clothing/head/helmet/space/space_ninja))
+ if(!istype(H.head, /obj/item/clothing/head/helmet/space/space_ninja) || !istype(H.head, /obj/item/clothing/head/hattip))//Fermichem edit, so ninjas can still use their suit with a fancy hat.
to_chat(H, "ERROR: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING...")
return FALSE
if(!istype(H.shoes, /obj/item/clothing/shoes/space_ninja))
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index aa46c164b4..9b71ebd457 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -56,14 +56,12 @@
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(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!'")
//message_admins("BElarge started!")
-
- 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 ..()
+ 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
var/mob/living/carbon/human/o = owner
diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm
index eb80137735..b2b565b603 100644
--- a/modular_citadel/code/modules/arousal/organs/breasts.dm
+++ b/modular_citadel/code/modules/arousal/organs/breasts.dm
@@ -25,6 +25,7 @@
. = ..()
reagents.add_reagent(fluid_id, fluid_max_volume)
prev_size = size
+ cached_size = breast_values[size]
/obj/item/organ/genital/breasts/on_life()
if(QDELETED(src))
diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm
index 2766d46bc1..aad06f8cdb 100644
--- a/modular_citadel/code/modules/arousal/organs/genitals.dm
+++ b/modular_citadel/code/modules/arousal/organs/genitals.dm
@@ -263,14 +263,15 @@
return
update_genitals()
-/mob/living/carbon/human/proc/update_genitals()
+/mob/living/carbon/human/proc/update_genitals(mob/living/carbon/human/H)
if(src && !QDELETED(src))
dna.species.handle_genitals(src)
+ H.update_body()
-/mob/living/carbon/human/proc/Force_update_genitals()
- //dna.species.handle_genitals(src)
+/mob/living/carbon/human/proc/Force_update_genitals(mob/living/carbon/human/H)
+ dna.species.handle_genitals(src)
dna.species.handle_breasts(src)
-
+ H.update_body()
/datum/species/proc/handle_genitals(mob/living/carbon/human/H)
message_admins("attempting to update sprite")
@@ -358,23 +359,27 @@
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?
+ //obj/item/organ/genital/breasts/update_icon(/obj/item/organ/genital) //Where did this come from?
//Variables:
var/size = B.size
var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_ADJ_LAYER, GENITALS_FRONT_LAYER)
var/datum/sprite_accessory/S = GLOB.breasts_shapes_list[B.shape]
var/list/standing = list()
- if(!S || S.icon_state == "none")
- return
+
+ //if(!S || S.icon_state == "none")
+ //return
+
for(var/layer in relevant_layers)
var/layertext = genitals_layertext(layer)
S = GLOB.breasts_shapes_list[B.shape]
+ message_admins("Attempting sprite calc: Bslot:[B.slot], B.shape:[B.shape], size:[size], Arouse:[B.aroused_state], layertxt:[layertext]")
+
var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer)
//If breasts are hueg (larger than 5 only have one sprite atm)
- if (size > 5)
+ if (B.breast_values[size] > 5)
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]"
@@ -415,3 +420,4 @@
for(var/L in relevant_layers)
H.apply_overlay(L)
H.update_icons()
+ ///obj/item/organ/genital/breasts/update_icon(/obj/item/organ/genital) //Where did this come from?
diff --git a/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm b/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm
index 546093f960..38e3a14740 100644
--- a/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm
+++ b/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm
@@ -3,10 +3,11 @@
/obj/item/clothing/head/hattip //I wonder if anyone else has played cryptworlds
name = "Sythetic hat"
- con = 'icons/obj/clothing/hats.dmi'
+ icon = 'icons/obj/clothing/hats.dmi'
icon_state = "cowboy"
desc = "A sythesized hat, you can't seem to take it off. And tips their hat."
- armor = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ item_flags = NODROP //Tips their hat!
/obj/item/clothing/head/hattip/attack_hand(mob/user)
if(iscarbon(user))
@@ -19,5 +20,8 @@
return ..()
/obj/item/clothing/head/hattip/speechModification(message)
- message += ".\" And tips their hat. \"Yeehaw"
+ if(prob(0.01))
+ message += "\" and tips their hat. \"Spy's sappin' my Sentry!"
+ return message
+ message += "\" and tips their hat. \"[pick("Yeehaw!", "Boy howdy.", "Darn tootin'.", "Well don't that beat all.", "Whoooowee, would ya look at that!", "Whoooowee! Makin' bacon!", "Cream Gravy!", "Yippekeeyah-heeyapeeah-kayoh!", "Move 'em out!", "Giddy up!")]"
return message
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 906f1c25ae..6a42fc973b 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -17,19 +17,23 @@
//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++
+///datum/reagent/fermi/overdose_start(mob/living/carbon/M)
+ //current_cycle++
//eigenstate Chem
//Teleports you to chemistry and back
//OD teleports you randomly around the Station
//Addiction send you on a wild ride and replaces you with an alternative reality version of yourself.
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// EIGENSTASIUM
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
/datum/reagent/fermi/eigenstate
name = "Eigenstasium"
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"
+ taste_description = "wiggly cosmic dust."
color = "#5020H4" // rgb: 50, 20, 255
overdose_threshold = 15
addiction_threshold = 20
@@ -496,6 +500,10 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
message_admins("Growth nucleation occuring (SDGF), step [current_cycle] of 20")
..()
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// BREAST ENLARGE
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
//breast englargement
//Honestly the most requested chems
//I'm not a very kinky person, sorry if it's not great
@@ -538,7 +546,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
nB.cached_size = 0
nB.prev_size = 0
to_chat(M, "Your chest feels warm, tingling with newfound sensitivity.")
- M.reagents.remove_reagent(src.id, 5)
+ holder.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]")
@@ -579,6 +587,10 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
W = nW
..()
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// PENIS ENLARGE
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
//TODO: failing the reaction creates a penis instead.
/datum/reagent/fermi/PElarger // Due to popular demand...!
name = "Incubus draft"
@@ -612,7 +624,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
to_chat(M, "Your groin feels warm, as you feel a newly forming bulge down below.")//OwO
nP.cached_length = 0.1
nP.prev_size = 0.1
- M.reagents.remove_reagent(src.id, 5)
+ holder.remove_reagent(src.id, 5)
P = nP
P.cached_length = P.cached_length + 0.1
@@ -650,6 +662,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
T = nT
..()
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// ASTROGEN
+///////////////////////////////////////////////////////////////////////////////////////////////////
/datum/reagent/fermi/astral // Gives you the ability to astral project for a moment!
name = "Astrogen"
id = "astral"
@@ -736,9 +751,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
if(0 to 30)
to_chat(M, "Your body disperses from existence, as you become one with the universe.")
to_chat(M, "As your body disappears, your consciousness doesn't. Should you find a way back into the mortal coil, your memories of your previous life and afterlife remain with you. (At the cost of staying in character while dead. Failure to do this may get you banned from this chem. You are still obligated to follow your directives if you play a midround antag)")//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 how about the player can retain living memories across lives if they die in this way only.
- M.visible_message("[M.name] suddenly disappears, their body evaporating from existence, freeing [M.nane] from their mortal coil.")
- deadchat_broadcast("[M.name] has become one with the universe, meaning that their IC conciousness is continuous throughout death. If they find a way back to life, they are allowed to remember what was said in deadchat and their previous life. Be careful what you say. If they don't act IC while dead, bwoink the FUCK otta them.")
- message_admins("[M.name] has become one with the universe, and have continuous memories thoughout death should they find a way to come back to life (such as an inteligence potion, midround antag). They MUST stay within characer while dead.")
+ M.visible_message("[M] suddenly disappears, their body evaporating from existence, freeing [M] from their mortal coil.")
+ deadchat_broadcast("[M] has become one with the universe, meaning that their IC conciousness is continuous throughout death. If they find a way back to life, they are allowed to remember what was said in deadchat and their previous life. Be careful what you say. If they don't act IC while dead, bwoink the FUCK otta them.")
+ message_admins("[M] has become one with the universe, and have continuous memories thoughout death should they find a way to come back to life (such as an inteligence potion, midround antag). They MUST stay within characer while dead.")
qdel(M) //Approx 60minutes till death from initial addiction
..()
@@ -788,6 +803,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
..()
/datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)
+ . = ..()
M.add_trait(TRAIT_PACIFISM, "MKUltra")
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
if (!M.has_status_effect(/datum/status_effect/chem/enthrall))
@@ -812,19 +828,19 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
//Addiction is applied when creator is out of viewer
//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// HATIMUIM
///////////////////////////////////////////////////////////////////////////////////////////////////
-/datum/reagent/fermi/hatmium
+/datum/reagent/fermi/hatmium //for hatterhat
name = "Hat growth serium"
id = "hatmium"
description = "A strange substance that draws in a hat from the hat dimention, "
color = "#A080H4" // rgb: , 0, 255
- taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
- //metabolization_rate = 0.5
- overdose_threshold = 100 //If this is too easy to get 100u of this, then double it please.
- var/obj/item/clothing/head/hat
- //addiction_threshold = 30
- //addiction_stage1_end = 9999//Should never end.
+ taste_description = "like jerky, whiskey and an off aftertaste of a crypt"
+ overdose_threshold = 100
+ var/obj/item/clothing/head/hattip/hat
+
/datum/reagent/fermi/hatmium/on_mob_add(mob/living/carbon/human/M)
//var/mob/living/carbon/human/o = M
@@ -832,21 +848,24 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
for(var/obj/item/W in items)
if(W == M.head)
M.dropItemToGround(W, TRUE)
- hat = new var/obj/item/clothing/head/hattip
- equip_to_slot_if_possible(hat, SLOT_HEAD, 1, 1)
+ hat = new /obj/item/clothing/head/hattip()
+ M.equip_to_slot(hat, SLOT_HEAD, 1, 1)
+
/datum/reagent/fermi/hatmium/on_mob_life(mob/living/carbon/human/M)
//hat.armor = list("melee" = (1+(current_cycle/20)), "bullet" = (1+(current_cycle/20)), "laser" = (1+(current_cycle/20)), "energy" = (1+(current_cycle/20)), "bomb" = (1+(current_cycle/20)), "bio" = (1+(current_cycle/20)), "rad" = (1+(current_cycle/20)), "fire" = (1+(current_cycle/20)), "acid" = (1+(current_cycle/20)))
if(!overdosed)
- for var/i in hat.armor
- hat.armor[i] = (1+(current_cycle/10))
-
-/datum/reagent/fermi/enthrall/overdose_process(mob/living/carbon/M)//To prevent people in cyro going nuts
- for var/i in hat.armor
- hat.armor[i] = (1/(current_cycle*10))
-
-///////////////////////////////////////////////////////////////////////////////////////////////
+ for (var/i in hat.armor)
+ hat.armor[i] = (1+(current_cycle*20)) //Doesn't work aaarghhhhh!!!!
+ else
+ for (var/i in hat.armor)
+ hat.armor[i] = (1/(current_cycle*10))
+ ..()
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// FURRANIUM
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//Works as intended!!
/datum/reagent/fermi/furranium
name = "Furranium"
id = "furranium"
@@ -893,16 +912,20 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
///////////////////////////////////////////////////////////////////////////////////////////////
/datum/reagent/fermi/secretcatchem //Should I hide this from code divers? A secret cit chem?
- name = "Catgirli[pick("a","u","e","y","")]m [pick("apex", "prime", "meow")]" //an attempt at hiding it
+ //name = "Catgirl" //an attempt at hiding it
id = "secretcatchem"
description = "An illegal and hidden chem that turns people into catgirls. It's said you see the light if you take too much of it."
color = "#A0B0E4" // rgb: , 0, 255
taste_description = "hairballs and cream"
overdose_threshold = 10
-/datum/reagent/fermi/Catgirlium/on_mob_add(mob/living/carbon/human/H)
+/datum/reagent/fermi/secretcatchem/New()
+ name = "Catgirli[pick("a","u","e","y")]m [pick("apex", "prime", "meow")]"
+
+/datum/reagent/fermi/secretcatchem/on_mob_add(mob/living/carbon/human/H)
+ . = ..()
var/current_species = H.dna.species.type
- var/datum/species/mutation = race
+ var/datum/species/mutation = /datum/species/human/felinid
if(mutation && mutation != current_species)
to_chat(H, "You crumple in agony as your flesh wildly morphs into new forms!")
H.visible_message("[H] falls to the ground and screams as [H.p_their()] skin bubbles and froths!")
@@ -911,21 +934,23 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
else
to_chat(H, "The pain vanishes suddenly. You feel no different.")
-/datum/reagent/fermi/Catgirlium/on_mob_life(mob/living/carbon/M)
+/datum/reagent/fermi/secretcatchem/on_mob_life(mob/living/carbon/M)
if(prob(10))
playsound(get_turf(M), 'modular_citadel/sound/voice/nya.ogg', 50, 1, -1)
- H.emote("me","lets out a nya!")
+ M.emote("me","lets out a nya!")
if(prob(10))
playsound(get_turf(M), 'sound/effects/meow1.ogg', 50, 1, -1)
- H.emote("me","lets out a mewl!")
+ M.emote("me","lets out a mewl!")
if(prob(10))
playsound(get_turf(M), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1)
- H.emote("me","lets out a meowrowr!")
+ M.emote("me","lets out a meowrowr!")
+ ..()
-/datum/reagent/fermi/Catgirlium/overdose_start(mob/living/carbon/human/H) //I couldn't resist - should I hide this somewhere else?
+/datum/reagent/fermi/secretcatchem/overdose_start(mob/living/carbon/human/H) //I couldn't resist - should I hide this somewhere else?
+ . = ..()
to_chat(H, "You suddenly see the light and realise that everyone will be better off, and much happier, if they were only a cat girl.")
- objective = "Aid in the production of more chemicals and turn everyone on the station into catgirls. Avoid any and all attempts at renoucing your newfound catgirl form for this is your true form now."
- if (owner.mind.assigned_role in GLOB.antagonists)
+ var/objective = "Aid in the production of more chemicals and turn everyone on the station into catgirls. Avoid any and all attempts at renoucing your newfound catgirl form for this is your true form now."
+ if (H.mind.assigned_role in GLOB.antagonists)
objective += "Complete your objectives in tandem with this new objective. If you are tasked with murdering someone turning someone into a catgirl is now an alternative to you."
brainwash(H, objective)
@@ -937,6 +962,8 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
C.mind.transfer_to(cat)
cat.name = C.name
qdel(C)
+ //Add to chat lines
+ //Maybe teleport player away instead?
*/
@@ -948,7 +975,7 @@ alpha = 20
reduce viewrange?
*/
-/*
+/* Needs to be fixed:
//Nanite removal
//Writen by Trilby!!
/datum/reagent/fermi/naninte_b_gone
diff --git a/tgstation.dme b/tgstation.dme
index b50b9e273f..f1e41b6c2f 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2901,6 +2901,7 @@
#include "modular_citadel\code\modules\client\verbs\who.dm"
#include "modular_citadel\code\modules\clothing\clothing.dm"
#include "modular_citadel\code\modules\clothing\neck.dm"
+#include "modular_citadel\code\modules\clothing\fermichemclothe\fermiclothes.dm"
#include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm"
#include "modular_citadel\code\modules\clothing\head\head.dm"
#include "modular_citadel\code\modules\clothing\spacesuits\cydonian_armor.dm"