diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 08adb8e56..31776bd00 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -47,8 +47,8 @@
//Basically syntax is species_restricted = list("Species Name","Species Name")
//Add a "exclude" string to do the opposite, making it only only species listed that can't wear it.
//You append this to clothing objects.
-
-
+ //Hyper change// - Variables for HS13 checks
+ var/roomy = 0 //0 For false
/obj/item/clothing/Initialize()
@@ -95,6 +95,18 @@
obj_integrity = max_integrity
to_chat(user, "You fix the damage on [src] with [C].")
return 1
+ //Hyper Change//
+ if(istype(W, /obj/item/bluespace_thread))
+ var/obj/item/bluespace_thread/B = W
+ if (istype(src, /obj/item/clothing/under) || istype(src, /obj/item/clothing/suit)) //Make sure the thread is used on an item that could be ripped off in the first place
+ roomy = 1 //True
+ user.show_message("You add a few stiches to your clothing, and find them to fit a little looser.", 1)
+ B.uses -= 1 //One use has been used
+ if(B.uses <= 0)
+ user.show_message("The thread has been used up!", 1)
+ qdel(B)
+ else
+ user.show_message("You probably don't need any more room in that.", 1)
return ..()
/obj/item/clothing/Destroy()
diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm
index 0e4252bb5..4c77e09fa 100644
--- a/code/modules/vending/clothesmate.dm
+++ b/code/modules/vending/clothesmate.dm
@@ -130,7 +130,8 @@
/obj/item/clothing/suit/jacket/leather/overcoat = 4,
/obj/item/clothing/under/pants/mustangjeans = 3,
/obj/item/clothing/neck/necklace/dope = 5,
- /obj/item/clothing/suit/jacket/letterman_nanotrasen = 5)
+ /obj/item/clothing/suit/jacket/letterman_nanotrasen = 5,
+ /obj/item/bluespace_thread = 3)
refill_canister = /obj/item/vending_refill/clothing
/obj/item/vending_refill/clothing
diff --git a/hyperstation/code/obj/bluespace sewing kit.dm b/hyperstation/code/obj/bluespace sewing kit.dm
new file mode 100644
index 000000000..f466460ed
--- /dev/null
+++ b/hyperstation/code/obj/bluespace sewing kit.dm
@@ -0,0 +1,35 @@
+//Jay Sparrow
+#define ROOMY = "ROOMY"
+
+/obj/item/bluespace_thread
+ name = "Bluespace Sewing Kit"
+ desc = "Thread infused with bluespace dust to make your clothes a little more roomy."
+ icon = 'hyperstation/icons/obj/bluespace_thread.dmi'
+ icon_state = "thread"
+ item_state = "thread"
+ var/uses = 2 //Give it two charges, so you can hit your uniform and jacket
+
+/obj/item/bluespace_thread/attack_obj(obj/O, mob/living/user)
+ . = ..()
+ if(!istype(O, /obj/item/clothing))
+ user.show_message("You find yourself unable to stitch this.", 1)
+ return
+
+
+/obj/item/bluespace_thread/attack_self(mob/living/user)
+ user.show_message("The spool has [uses] uses remaining.", 1)
+
+//Let's add this to the loadout screen
+/datum/gear/bluespace_thread
+ name = "Bluespace Sewing Kit"
+ category = SLOT_IN_BACKPACK
+ path = /obj/item/bluespace_thread
+
+//Crafting recipe
+/datum/crafting_recipe/bluespace_thread
+ name = "Bluespace Sewing Kit"
+ result = /obj/item/bluespace_thread
+ time = 40
+ reqs = list(/obj/item/stack/ore/bluespace_crystal = 1,
+ /obj/item/stack/sheet/cloth = 2)
+ category = CAT_MISC
\ No newline at end of file
diff --git a/hyperstation/code/obj/leash.dm b/hyperstation/code/obj/leash.dm
index 235fcc254..a4f94c980 100644
--- a/hyperstation/code/obj/leash.dm
+++ b/hyperstation/code/obj/leash.dm
@@ -87,7 +87,7 @@ Icons, maybe?
//Called when someone is clicked with the leash
/obj/item/leash/attack(mob/living/carbon/C, mob/living/user) //C is the target, user is the one with the leash
- if(istype(C.get_item_by_slot(SLOT_NECK), /obj/item/clothing/neck/petcollar) || istype(C.get_item_by_slot(SLOT_NECK), /obj/item/electropack/shockcollar)) //TODO: Shock collars too why not
+ if(istype(C.get_item_by_slot(SLOT_NECK), /obj/item/clothing/neck/petcollar) || istype(C.get_item_by_slot(SLOT_NECK), /obj/item/electropack/shockcollar))
var/leashtime = 50
if(C.handcuffed)
leashtime = 5
@@ -394,3 +394,10 @@ Icons, maybe?
QDEL_NULL(mobhook_leash_freepet)
leash_pet.add_movespeed_modifier(MOVESPEED_ID_LEASH, multiplicative_slowdown = 5)
+/datum/crafting_recipe/leash
+ name = "Leash"
+ result = /obj/item/leash
+ time = 40
+ reqs = list(/obj/item/stack/sheet/metal = 1,
+ /obj/item/stack/sheet/cloth = 3)
+ category = CAT_MISC
\ No newline at end of file
diff --git a/hyperstation/code/obj/rope.dm b/hyperstation/code/obj/rope.dm
index 829257e41..98c933a27 100644
--- a/hyperstation/code/obj/rope.dm
+++ b/hyperstation/code/obj/rope.dm
@@ -47,3 +47,9 @@
if (!C.handcuffed)
return //Break when the rope is removed
+/datum/crafting_recipe/rope
+ name = "Soft Rope"
+ result = /obj/item/restraints/handcuffs/rope
+ time = 40
+ reqs = list(/obj/item/stack/sheet/cloth = 5)
+ category = CAT_MISC
\ No newline at end of file
diff --git a/hyperstation/icons/obj/bluespace_thread.dmi b/hyperstation/icons/obj/bluespace_thread.dmi
new file mode 100644
index 000000000..77b9e6d57
Binary files /dev/null and b/hyperstation/icons/obj/bluespace_thread.dmi differ
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 099d4559e..599a590a3 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -44,12 +44,16 @@
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(o, "Your clothes give, ripping into pieces 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.")
+ //Hyper change
+ var/obj/item/clothing/W2 = W
+ if(!W2.roomy == 1) //If the clothes are "roomy" then don't do this.
+ //Hyper change end
+ o.dropItemToGround(W, TRUE)
+ playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
+ to_chat(o, "Your clothes give, ripping into pieces 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 ..()
/datum/status_effect/chem/breast_enlarger/tick(mob/living/carbon/human/H)//If you try to wear clothes, you fail. Slows you down if you're comically huge
@@ -66,9 +70,13 @@
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, "Your enormous breasts are way too large to fit anything over them!")
+ //Hyper change// Check for a flag before we remove clothes.
+ var/obj/item/clothing/W2 = W
+ if(!W2.roomy == 1) //If the clothes are "roomy" then don't do this.
+ //End Hyper Change//
+ o.dropItemToGround(W, TRUE)
+ playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
+ to_chat(owner, "Your enormous breasts are way too large to fit anything over them!")
/*
if (B.size == "huge")
if(prob(1))
@@ -125,14 +133,23 @@
var/mob/living/carbon/human/o = owner
var/items = o.get_contents()
if(o.w_uniform || o.wear_suit)
- to_chat(o, "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..!")
- owner.visible_message("[o]'s schlong suddenly bursts forth, ripping their clothes off!'")
+ //Hyper change// Check for a flag before we remove clothes.
+ var/obj/item/clothing/suit = o.get_item_by_slot(SLOT_W_UNIFORM)
+ var/obj/item/clothing/jacket = o.get_item_by_slot(SLOT_WEAR_SUIT)
+ if(!suit.roomy == 1 || !jacket.roomy == 1) //If the clothes are "roomy" then don't do this.
+ //End Hyper Change//
+ to_chat(o, "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..!")
+ owner.visible_message("[o]'s schlong suddenly bursts forth, ripping their clothes off!'")
else
to_chat(o, "Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.")
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)
+ //Hyper change// Check for a flag before we remove clothes.
+ var/obj/item/clothing/W2 = W
+ if(!W2.roomy == 1) //If the clothes are "roomy" then don't do this.
+ //End Hyper Change//
+ o.dropItemToGround(W, TRUE)
+ playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
return ..()
@@ -151,14 +168,19 @@
var/items = o.get_contents()
for(var/obj/item/W in items)
- if (o.arousalloss > 32) // warning that your shaft is getting errect!
- if(W == o.w_uniform || W == o.wear_suit )
- to_chat(M, "Your swelling cock begins to strain against your clothes tightly!")
- if (o.arousalloss > 33)
- 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, "Your erect member is way to large to fit anything over! You will need to be flaccid again to wear clothes!")
+ //Hyper change// Check for a flag before we remove clothes.
+ if(istype(W, /obj/item/clothing))
+ var/obj/item/clothing/W2 = W
+ if(!W2.roomy == 1) //If the clothes are "roomy" then don't do this.
+ //End Hyper Change//
+ if (o.arousalloss > 32) // warning that your shaft is getting errect!
+ if(W == o.w_uniform || W == o.wear_suit )
+ to_chat(M, "Your swelling cock begins to strain against your clothes tightly!")
+ if (o.arousalloss > 33)
+ 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, "Your erect member is way to large to fit anything over! You will need to be flaccid again to wear clothes!")
/*
switch(round(P.cached_length))
if(21)
diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm
index 6bed45ce0..fd6294dd0 100644
--- a/modular_citadel/code/game/machinery/vending.dm
+++ b/modular_citadel/code/game/machinery/vending.dm
@@ -63,7 +63,9 @@
)
premium = list(
/obj/item/electropack/shockcollar = 3,
- /obj/item/clothing/neck/petcollar/locked = 1
+ /obj/item/clothing/neck/petcollar/locked = 1,
+ /obj/item/restraints/handcuffs/rope = 1,
+ /obj/item/leash = 1
)
refill_canister = /obj/item/vending_refill/kink
/*
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
index 5ebad3b26..6f8954f7a 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
@@ -98,10 +98,15 @@
B.cached_size = B.cached_size + 0.05
if (B.cached_size >= 8.5 && B.cached_size < 9)
if(H.w_uniform || H.wear_suit)
- var/target = M.get_bodypart(BODY_ZONE_CHEST)
- to_chat(M, "Your breasts begin to strain against your clothes tightly!")
- M.adjustOxyLoss(5, 0)
- M.apply_damage(1, BRUTE, target)
+ //Hyper change// Check for a flag before we remove clothes.
+ var/obj/item/clothing/suit = H.get_item_by_slot(SLOT_W_UNIFORM)
+ var/obj/item/clothing/jacket = H.get_item_by_slot(SLOT_WEAR_SUIT)
+ if(!suit.roomy == 1 || !jacket.roomy == 1) //If the clothes are "roomy" then don't do this.
+ //End Hyper Change//
+ var/target = M.get_bodypart(BODY_ZONE_CHEST)
+ to_chat(M, "Your breasts begin to strain against your clothes tightly!")
+ M.adjustOxyLoss(5, 0)
+ M.apply_damage(1, BRUTE, target)
B.update()
..()
@@ -272,9 +277,14 @@
P.cached_length = P.cached_length + 0.1
if (P.cached_length >= 20.5 && P.cached_length < 21)
if(H.w_uniform || H.wear_suit|| H.arousalloss > 33)
- var/target = M.get_bodypart(BODY_ZONE_CHEST)
- to_chat(M, "Your cock begins to strain against your clothes tightly!")
- M.apply_damage(1, BRUTE, target)
+ //Hyper change// Check for a flag before we remove clothes.
+ var/obj/item/clothing/suit = H.get_item_by_slot(SLOT_W_UNIFORM)
+ var/obj/item/clothing/jacket = H.get_item_by_slot(SLOT_WEAR_SUIT)
+ if(!suit.roomy == 1 || !jacket.roomy == 1) //If the clothes are "roomy" then don't do this.
+ //End Hyper Change//
+ var/target = M.get_bodypart(BODY_ZONE_CHEST)
+ to_chat(M, "Your cock begins to strain against your clothes tightly!")
+ M.apply_damage(1, BRUTE, target)
P.update()
..()
diff --git a/tgstation.dme b/tgstation.dme
index ff636be00..9bd0c7b8f 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2891,6 +2891,7 @@
#include "hyperstation\code\modules\resize\holder_micro.dm"
#include "hyperstation\code\modules\resize\resizing.dm"
#include "hyperstation\code\modules\resize\sizegun.dm"
+#include "hyperstation\code\obj\bluespace sewing kit.dm"
#include "hyperstation\code\obj\decal.dm"
#include "hyperstation\code\obj\fluff.dm"
#include "hyperstation\code\obj\kinkyclothes.dm"