diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 08adb8e5..31776bd0 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 0e4252bb..4c77e09f 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 00000000..f466460e --- /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 235fcc25..a4f94c98 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 829257e4..98c933a2 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 00000000..77b9e6d5 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 099d4559..599a590a 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 6bed45ce..fd6294dd 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 5ebad3b2..6f8954f7 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 ff636be0..9bd0c7b8 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"