diff --git a/code/__DEFINES/pool.dm b/code/__DEFINES/pool.dm index 1bf39dcb1d..381abc2f39 100644 --- a/code/__DEFINES/pool.dm +++ b/code/__DEFINES/pool.dm @@ -7,6 +7,6 @@ GLOBAL_LIST_INIT(blacklisted_pool_reagents, list( /datum/reagent/toxin/plasma, /datum/reagent/oxygen, /datum/reagent/nitrous_oxide, /datum/reagent/nitrogen, //gases - /datum/reagent/fermi, //blanket fermichem ban sorry. this also covers mkultra, genital enlargers, etc etc. - /datum/reagent/consumable/semen //NO. + /datum/reagent/fermi //blanket fermichem ban sorry. this also covers mkultra, genital enlargers, etc etc. + // /datum/reagent/consumable/semen //NO. //yes )) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 25d044ebc3..f6d69bf241 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -811,7 +811,8 @@ GLOBAL_LIST_INIT(plastic_recipes, list( new /datum/stack_recipe("shower curtain", /obj/structure/curtain, 10, time = 10, one_per_turf = 1, on_floor = 1), \ new /datum/stack_recipe("duct", /obj/item/stack/ducts,1), \ new /datum/stack_recipe("laser pointer case", /obj/item/glasswork/glass_base/laserpointer_shell, 30), \ - new /datum/stack_recipe("wet floor sign", /obj/item/clothing/suit/caution, 2))) + new /datum/stack_recipe("wet floor sign", /obj/item/clothing/suit/caution, 2), + new /datum/stack_recipe("micro bricks", /obj/item/stack/sheet/micro_bricks, 1, 5, 15,))) /obj/item/stack/sheet/plastic name = "plastic" diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index e30ec783bf..88a3726df3 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -66,7 +66,12 @@ /obj/item/clothing/gloves, /obj/item/holosign_creator, /obj/item/forcefield_projector, - /obj/item/assembly/signaler + /obj/item/assembly/signaler, + /obj/item/carpentry/handsaw, + /obj/item/carpentry/hammer, + /obj/item/carpentry/sandpaper, + /obj/item/carpentry/borer, + /obj/item/carpentry/glue )) STR.can_hold = can_hold diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm index b888dc1a28..191320f029 100644 --- a/code/modules/cargo/bounty.dm +++ b/code/modules/cargo/bounty.dm @@ -77,7 +77,7 @@ GLOBAL_LIST_EMPTY(bounties_list) // Returns a new bounty of random type, but does not add it to GLOB.bounties_list. /proc/random_bounty() - switch(rand(1, 15)) + switch(rand(1, 16)) if(1) var/subtype = pick(subtypesof(/datum/bounty/item/assistant)) return new subtype @@ -123,6 +123,9 @@ GLOBAL_LIST_EMPTY(bounties_list) if(15) var/subtype = pick(subtypesof(/datum/bounty/item/gardencook)) return new subtype + if(16) + var/subtype = pick(subtypesof(/datum/bounty/lewd)) + return new subtype // Called lazily at startup to populate GLOB.bounties_list with random bounties. /proc/setup_bounties() @@ -140,7 +143,8 @@ GLOBAL_LIST_EMPTY(bounties_list) /datum/bounty/item/medical = 2, /datum/bounty/item/botany = 2, /datum/bounty/item/silly = 1, - /datum/bounty/item/gardencook = 1) + /datum/bounty/item/gardencook = 1, + /datum/bounty/lewd = 1) for(var/the_type in easy_add_list_subtypes) for(var/i in 1 to easy_add_list_subtypes[the_type]) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 47656f278b..54b4eddeec 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -838,7 +838,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Water" if(/datum/reagent/consumable/semen) dat += "Semen" - if(/datum/reagent/consumable/femcum) + if(/datum/reagent/consumable/semen/femcum) dat += "Femcum" if(/datum/reagent/consumable/alienhoney) dat += "Honey" @@ -882,7 +882,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Water" if(/datum/reagent/consumable/semen) dat += "Semen" - if(/datum/reagent/consumable/femcum) + if(/datum/reagent/consumable/semen/femcum) dat += "Femcum" if(/datum/reagent/consumable/alienhoney) dat += "Honey" @@ -2561,7 +2561,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("Semen") features["balls_fluid"] = /datum/reagent/consumable/semen if("Femcum") - features["balls_fluid"] = /datum/reagent/consumable/femcum + features["balls_fluid"] = /datum/reagent/consumable/semen/femcum if("Honey") features["balls_fluid"] = /datum/reagent/consumable/alienhoney @@ -2603,7 +2603,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("Semen") features["breasts_fluid"] = /datum/reagent/consumable/semen if("Femcum") - features["breasts_fluid"] = /datum/reagent/consumable/femcum + features["breasts_fluid"] = /datum/reagent/consumable/semen/femcum if("Honey") features["breasts_fluid"] = /datum/reagent/consumable/alienhoney diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 55dbd17aee..752e91f3f6 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/modular_splurt/code/datums/components/crafting/recipes/recipes_misc.dm b/modular_splurt/code/datums/components/crafting/recipes/recipes_misc.dm index e819ca7e65..0622e4b6f0 100644 --- a/modular_splurt/code/datums/components/crafting/recipes/recipes_misc.dm +++ b/modular_splurt/code/datums/components/crafting/recipes/recipes_misc.dm @@ -141,3 +141,43 @@ reqs = list(/obj/item/clothing/glasses/hud/blueshield = 1, /obj/item/clothing/glasses/regular = 1) category = CAT_CLOTHING + +//to do: put carpentry in it's own crafting tab +/datum/crafting_recipe/weak_metal + name = "Heated Metal" + reqs = list(/obj/item/stack/sheet/metal = 5) + tools = list(TOOL_WELDER) + subcategory = CAT_MISCELLANEOUS + category = CAT_MISCELLANEOUS + result = /obj/item/processed/metal + +/datum/crafting_recipe/processed_wood + name = "Processable Wood" + reqs = list(/obj/item/stack/sheet/mineral/wood = 5) + tools = list(TOOL_WIRECUTTER, TOOL_WELDER) + subcategory = CAT_MISCELLANEOUS + category = CAT_MISCELLANEOUS + result = /obj/item/processed/wood/plank + +/datum/crafting_recipe/stool_base + name = "Stool Base" + reqs = list(/obj/item/processed/wood/seat = 1, /obj/item/processed/wood/gluepeg = 4) + subcategory = CAT_MISCELLANEOUS + category = CAT_MISCELLANEOUS + result = /obj/item/processed/wood/stool1 + +/datum/crafting_recipe/clothcushion + name = "Cloth Cushion" + reqs = list(/obj/item/stack/sheet/cloth = 2, /obj/item/stack/sheet/cotton = 5) + tools = list(TOOL_WIRECUTTER) + subcategory = CAT_MISCELLANEOUS + category = CAT_MISCELLANEOUS + result = /obj/item/cushion + +/datum/crafting_recipe/silkcushion + name = "Silk Cushion" + reqs = list(/obj/item/stack/sheet/silk = 2, /obj/item/stack/sheet/cotton = 5) + tools = list(TOOL_WIRECUTTER) + subcategory = CAT_MISCELLANEOUS + category = CAT_MISCELLANEOUS + result = /obj/item/cushion/silk diff --git a/modular_splurt/code/game/object/items/stacks/sheets/sheet_types.dm b/modular_splurt/code/game/object/items/stacks/sheets/sheet_types.dm index 2f67ea3993..7f58120e01 100644 --- a/modular_splurt/code/game/object/items/stacks/sheets/sheet_types.dm +++ b/modular_splurt/code/game/object/items/stacks/sheets/sheet_types.dm @@ -62,3 +62,61 @@ GLOBAL_LIST_INIT(mush_wood_recipes, list ( \ /obj/item/stack/sheet/mineral/wood/mushroom/fifty amount = 50 + +/obj/item/stack/sheet/silk + name = "silk" + desc = "A long soft material. This one is just made out of cotton rather then any spiders or wyrms" + singular_name = "silk sheet" + icon_state = "sheet-silk" + item_state = "sheet-cloth" + novariants = TRUE + merge_type = /obj/item/stack/sheet/silk + grind_results = list(/datum/reagent/cellulose = 2) + +//obj/item/stack/sheet/silk/Initialize(mapload, new_amount, merge = TRUE) +// recipes = GLOB.silk_recipes +// return ..() + + +GLOBAL_LIST_INIT(micro_bricks_recipes, list ( \ + new /datum/stack_recipe("Road fourway", /obj/structure/micro_brick/road_fourway, 2, time = 2, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("Road threeway", /obj/structure/micro_brick/road_threeway, 2, time = 2, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("Road straight", /obj/structure/micro_brick/road_straight, 2, time = 2, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("Road turn", /obj/structure/micro_brick/Road_turn, 2, time = 2, one_per_turf = TRUE, on_floor = TRUE), \ + null, \ + new /datum/stack_recipe("Small houses", /obj/structure/micro_brick/small_house, 5, time = 2, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("Small business", /obj/structure/micro_brick/small_business, 5, time = 2, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("Small warehouse", /obj/structure/micro_brick/small_warehouse, 5, time = 2, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("Small museum", /obj/structure/micro_brick/small_museum, 5, time = 2, one_per_turf = TRUE, on_floor = TRUE), \ + null, \ + new /datum/stack_recipe("Small moon", /obj/item/moon, 5, time = 2), \ + null, \ + )) + +/obj/item/stack/sheet/micro_bricks + name = "Micro Bricks" + desc = "an studless version of the iconic bricks for recreation use on station with big crewmembers " + singular_name = "Micro Brick" + icon = 'modular_splurt/icons/obj/stack_objects.dmi' + icon_state = "SmallBucket" + item_state = "SmallBucket" + custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT) + flags_1 = CONDUCT_1 + resistance_flags = FIRE_PROOF + merge_type = /obj/item/stack/sheet/micro_bricks + +/obj/item/stack/sheet/micro_bricks/fifty + amount = 50 + +/obj/item/stack/sheet/micro_bricks/twenty + amount = 20 + +/obj/item/stack/sheet/micro_bricks/ten + amount = 10 + +/obj/item/stack/sheet/micro_bricks/five + amount = 5 + +/obj/item/stack/sheet/micro_bricks/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.micro_bricks_recipes + return ..() diff --git a/modular_splurt/code/game/object/structures/micro_bricks.dm b/modular_splurt/code/game/object/structures/micro_bricks.dm new file mode 100644 index 0000000000..0c167c87bd --- /dev/null +++ b/modular_splurt/code/game/object/structures/micro_bricks.dm @@ -0,0 +1,129 @@ +/obj/structure/micro_brick + icon = 'modular_splurt/icons/obj/small_world.dmi' + anchored = FALSE + var/buildstacktype = /obj/item/stack/sheet/micro_bricks + +/obj/structure/micro_brick/ComponentInitialize() + . = ..() + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE) + +/obj/structure/micro_brick/Initialize() + . = ..() + RegisterSignal(src, COMSIG_PARENT_ATTACKBY, .proc/on_attackby) + RegisterSignal(src, COMSIG_ATOM_ATTACK_HAND, .proc/handatacc) + +/obj/structure/micro_brick/proc/on_attackby(datum/source, obj/item/item, mob/user, params) + if(try_crush_microbricks(user)) + return TRUE + + if(istype(item, /obj/item/carpentry/glue)) + to_chat(user,"You glue the bricks to the floor.") + anchored = TRUE + return TRUE + + if(istype(item, /obj/item/crowbar)) + to_chat(user,"You pry the bricks from the floor.") + anchored = FALSE + return TRUE + + //probably could better, but im busy playing warframe rn to help Summer lmao -Dahl + // Moved it to the top, MERP! Also... i CHANGED THE CODE. Side note, AAAAAAA! -Summer + +/obj/structure/micro_brick/proc/handatacc(datum/source, mob/user, list/modifiers) + return try_crush_microbricks(user) + +/obj/structure/micro_brick/proc/try_crush_microbricks(mob/stomper) + if(stomper.a_intent != INTENT_HARM) + return FALSE + to_chat(stomper, "You crush the microbrick structure, what a monster!") + + playsound(src, pick('modular_splurt/sound/effects/bricks_1.ogg', 'modular_splurt/sound/effects/bricks_2.ogg'), 30, 0) + //I Stepped on these legos that i bought. and it hurts :( -Summer + qdel(src) + return TRUE + +/obj/structure/micro_brick/road_fourway + name = "Road fourway" + desc = "roundabouts are better!" + icon_state = "roadfourway" + resistance_flags = FLAMMABLE + max_integrity = 100 + integrity_failure = 30 + var/buildstackamount = 2 + +/obj/structure/micro_brick/road_threeway + name = "Road threeway" + desc = "Ill take the back you get the front." + icon_state = "roadthreeway" + resistance_flags = FLAMMABLE + max_integrity = 100 + integrity_failure = 30 + var/buildstackamount = 1 + +/obj/structure/micro_brick/road_straight + name = "Road straight" + desc = "Is it gay if the balls touch?" + icon_state = "roadstraight" + resistance_flags = FLAMMABLE + max_integrity = 100 + integrity_failure = 30 + var/buildstackamount = 1 + +/obj/structure/micro_brick/Road_turn + name = "Road turn" + desc = "Bending the Rules." + //i cannot find a joke for this :( + icon_state = "roadturn" + resistance_flags = FLAMMABLE + max_integrity = 100 + integrity_failure = 30 + var/buildstackamount = 1 + +/obj/structure/micro_brick/small_house + name = "Small houses" + desc = "Lets hope this household does their taxes!" + icon_state = "smallhouses" + resistance_flags = FLAMMABLE + max_integrity = 100 + integrity_failure = 30 + var/buildstackamount = 5 + +/obj/structure/micro_brick/small_business + name = "Small business" + desc = "A place for not many 9's with how many 5's" + icon_state = "smallbusiness" + var/rotation_flags = TRUE + resistance_flags = FLAMMABLE + max_integrity = 100 + integrity_failure = 30 + var/buildstackamount = 5 + +/obj/structure/micro_brick/small_warehouse + name = "Small warehouse" + desc = "The house has been exposed to the moon light and is now a warehouse!" + // https://i.redd.it/4ke5819c2ib61.jpg + icon_state = "warehouse" + resistance_flags = FLAMMABLE + max_integrity = 100 + integrity_failure = 30 + var/buildstackamount = 5 + +/obj/structure/micro_brick/small_museum + name = "Small museum" + desc = "A place to store old and small relics found around the station " + icon_state = "smallmuseum" + resistance_flags = FLAMMABLE + max_integrity = 100 + integrity_failure = 30 + var/buildstackamount = 5 + +/obj/item/moon + name = "Small moon" + icon_state = "smallmoon" + icon = 'modular_splurt/icons/obj/small_world.dmi' + desc = "You now have the power of the moon on your side" + throwforce = 0 + throw_speed = 3 + throw_range = 7 + force = 0 + total_mass = TOTAL_MASS_TINY_ITEM diff --git a/modular_splurt/code/modules/cargo/bounties/lewd.dm b/modular_splurt/code/modules/cargo/bounties/lewd.dm new file mode 100644 index 0000000000..e3f713388c --- /dev/null +++ b/modular_splurt/code/modules/cargo/bounties/lewd.dm @@ -0,0 +1,105 @@ + +//Jay Sparrow +//The base for this datum is found in reagent.dm +/datum/bounty/lewd + var/required_volume = 10 + var/shipped_volume = 0 + var/datum/reagent/wanted_reagent + + +/datum/bounty/lewd/completion_string() + return {"[round(shipped_volume)]/[required_volume] Units"} + +/datum/bounty/lewd/can_claim() + return ..() && shipped_volume >= required_volume + +/datum/bounty/lewd/applies_to(obj/O) + if(!istype(O, /obj/item/reagent_containers)) + return FALSE + if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.type)) + return FALSE + if(O.flags_1 & HOLOGRAM_1) + return FALSE + return shipped_volume < required_volume + +/datum/bounty/lewd/ship(obj/O) + if(!applies_to(O)) + return + shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.type) + if(shipped_volume > required_volume) + shipped_volume = required_volume + +/datum/bounty/lewd/compatible_with(other_bounty) + return TRUE //Not a lot of different reagents right now, so no sense in closing these off. + +/datum/bounty/lewd/fluid + name = "Discretionary Bounty" + reward = 1500 + +/datum/bounty/lewd/fluid/New() + var/reagent_type + switch(rand(1, 20)) //So we can set probabilities for each kind + if(1,2,3,4,5)//Cum bounty + required_volume = 200 + reagent_type = /datum/reagent/consumable/semen + wanted_reagent = new reagent_type + name = wanted_reagent.name + description = "CentCom is in need of donors for their fertility program." + reward += rand(2, 7) * 500 + if(6,7) //Big cum bounty + required_volume = 1000 + reagent_type = /datum/reagent/consumable/semen + wanted_reagent = new reagent_type + name = wanted_reagent.name + description = "Yes. We really need that much. We hear you're the best suppliers around." + reward += rand(10, 17) * 500 + if(8,9,10,11,12) //Milk + required_volume = 200 + reagent_type = /datum/reagent/consumable/milk + wanted_reagent = new reagent_type + name = wanted_reagent.name + description = "CentCom's kitchen is low on dairy, and this station always seems to have plenty for some reason. Mind sending us some?" + reward += rand(2, 7) * 500 + if(13,14) //Mega Milk + required_volume = 1000 + reagent_type = /datum/reagent/consumable/milk + wanted_reagent = new reagent_type + name = wanted_reagent.name + description = "The Kinaris annual bake sale is soon, and all of our milk has expired. Help us out." + reward += rand(10, 17) * 500 //Milk is generally easier to get. Make the reward a little lower. + if(15,16,17,18,19) //A little romance + var/static/list/possible_reagents = list(\ + /datum/reagent/drug/aphrodisiac,\ + /datum/reagent/consumable/ethanol/between_the_sheets,\ + /datum/reagent/drug/aphrodisiacplus,\ + /datum/reagent/lube) + required_volume = 30 + reagent_type = pick(possible_reagents) + wanted_reagent = new reagent_type + name = wanted_reagent.name + description = "A CentCom official wants something to spice up the bedroom. We told them this was a misuse of their power. It went through anyways." + reward += rand(0, 5) * 500 + if(20) //Not as popular of a fluid, so we will leave it the lowest chance. + required_volume = 30 + reagent_type = /datum/reagent/consumable/semen/femcum + wanted_reagent = new reagent_type + name = wanted_reagent.name + description = "A CentCom official requested this for undisclosed research purposes." + reward += rand(2, 7) * 500 + +/* //Just not getting this to work. +//Freeform sales +/datum/export/lewd/reagent_container + cost = 0 //Base cost of canister. We only care about what's inside. + unit_name = "Fluid Container" + export_types = list(/obj/item/reagent_containers/) +/datum/export/lewd/reagent_containers/get_cost(obj/O) + var/obj/item/reagent_containers/C = O + var/worth = 0 + var/fluids = C.reagents.reagent_list + + worth += fluids[/datum/reagent/consumable/semen]*2 + worth += fluids[/datum/reagent/consumable/milk]*2 + worth += fluids[/datum/reagent/consumable/semen/femcum]*5 + return worth +*/ diff --git a/modular_splurt/code/modules/cargo/exports/sheets.dm b/modular_splurt/code/modules/cargo/exports/sheets.dm new file mode 100644 index 0000000000..75db8c1aee --- /dev/null +++ b/modular_splurt/code/modules/cargo/exports/sheets.dm @@ -0,0 +1,5 @@ +/datum/export/stack/silk + cost = 200 //The new plasma + unit_name = "sheets" + message = "of silk" + export_types = list(/obj/item/stack/sheet/silk) diff --git a/modular_splurt/code/modules/cargo/exports/sweatshop.dm b/modular_splurt/code/modules/cargo/exports/sweatshop.dm new file mode 100644 index 0000000000..c59e94461b --- /dev/null +++ b/modular_splurt/code/modules/cargo/exports/sweatshop.dm @@ -0,0 +1,26 @@ +/datum/export/sweatshop/stool + cost = 2550 //buffed temporarily due to paper being pricier than actual wood, was 850 + unit_name = "custom stool" + export_types = list(/obj/item/processed/wood/stool) + +/datum/export/sweatshop/cushion + cost = 450 //buffed temporarily due to paper being pricier than actual cotton, was 300 + unit_name = "cloth cushion" + export_types = list(/obj/item/cushion) + +/datum/export/sweatshop/cushionsilk + cost = 750 //buffed temporarily due to paper being pricier than actual silk, was 500 + unit_name = "silk cushion" + export_types = list(/obj/item/cushion) + +/datum/export/sweatshop/stool/cushioncloth + cost = 5400 //buffed temporarily due to paper being pricier than actual wood, was 1800 + unit_name = "cushioned stool (cloth)" + export_types = list(/obj/item/processed/wood/stoolcloth) + +/datum/export/sweatshop/stool/cushionsilk + cost = 7200 //buffed temporarily due to paper being pricier than actual wood, was 2400 + unit_name = "cushioned stool (cloth)" + export_types = list(/obj/item/processed/wood/stoolsilk) + +// Prices above are temporary buffs until more carpentry is added diff --git a/modular_splurt/code/modules/cargo/packs/misc.dm b/modular_splurt/code/modules/cargo/packs/misc.dm index 277818532b..b39fbf9128 100644 --- a/modular_splurt/code/modules/cargo/packs/misc.dm +++ b/modular_splurt/code/modules/cargo/packs/misc.dm @@ -124,3 +124,67 @@ /obj/item/gun/energy/civilian) crate_name = "Civilian Energy Pistols" crate_type = /obj/structure/closet/crate/secure/weapon + +/datum/supply_pack/misc/carpet_exotic + name = "Exotic Carpet Crate" + desc = "Exotic carpets straight from Space Russia, for all your decorating needs. Contains 100 tiles each of 10 different flooring patterns." + cost = 7000 + contains = list(/obj/item/stack/tile/carpet/blue/fifty, + /obj/item/stack/tile/carpet/blue/fifty, + /obj/item/stack/tile/carpet/cyan/fifty, + /obj/item/stack/tile/carpet/cyan/fifty, + /obj/item/stack/tile/carpet/green/fifty, + /obj/item/stack/tile/carpet/green/fifty, + /obj/item/stack/tile/carpet/orange/fifty, + /obj/item/stack/tile/carpet/orange/fifty, + /obj/item/stack/tile/carpet/purple/fifty, + /obj/item/stack/tile/carpet/purple/fifty, + /obj/item/stack/tile/carpet/red/fifty, + /obj/item/stack/tile/carpet/red/fifty, + /obj/item/stack/tile/carpet/royalblue/fifty, + /obj/item/stack/tile/carpet/royalblue/fifty, + /obj/item/stack/tile/carpet/royalblack/fifty, + /obj/item/stack/tile/carpet/royalblack/fifty, + /obj/item/stack/tile/carpet/blackred/fifty, + /obj/item/stack/tile/carpet/blackred/fifty, + /obj/item/stack/tile/carpet/monochrome/fifty, + /obj/item/stack/tile/carpet/monochrome/fifty) + crate_name = "exotic carpet crate" + +/datum/supply_pack/misc/prospacillin //size changing should be hard to achieve; so enjoy the price tag. + name = "Prospacillin Bottle" + desc = "An extremely expensive solution of growth serum known as Prospacillin. Effects are permanent upon consumption, and growth is slow." + cost = 100000 + contains = list(/obj/item/reagent_containers/food/drinks/prospacillin) + +/datum/supply_pack/misc/diminicillin //size changing should be hard to achieve; so enjoy the price tag. + name = "Diminicillin Bottle" + desc = "An extremely expensive solution of shrinking serum known as Diminicillin. Effects are permanent upon consumption, and shrinking is slow." + cost = 100000 + contains = list(/obj/item/reagent_containers/food/drinks/diminicillin) + +/datum/supply_pack/misc/microbricks + name = "Microbricks Crate" + desc = "Extremely bored? Recreate a downscale city and get upset when it all comes crumbling down!" + cost = 1500 + contains = list(/obj/item/stack/sheet/micro_bricks/fifty) + crate_name = "microbricks crate" + +/datum/supply_pack/misc/carpentry + name = "Carpentry Crate" + desc = "Make money at cargo by learning some carpentry and making custom furniture." + cost = 1000 + contains = list(/obj/item/carpentry/handsaw, + /obj/item/carpentry/hammer, + /obj/item/carpentry/glue, + /obj/item/carpentry/borer, + /obj/item/carpentry/sandpaper) + crate_name = "carpentry crate" + +/datum/supply_pack/service/stripperpole + name = "Stripper Pole Crate" + desc = "No private bar is complete without a stripper pole, show off the goods! Comes with a ready-to-assemble stripper pole, and a complementary wrench to get things set up!" + cost = 3550 + contains = list(/obj/item/polepack, + /obj/item/wrench) + crate_name = "stripper pole crate" diff --git a/modular_splurt/code/modules/cargo/sweatshop/metal.dm b/modular_splurt/code/modules/cargo/sweatshop/metal.dm new file mode 100644 index 0000000000..101d69a003 --- /dev/null +++ b/modular_splurt/code/modules/cargo/sweatshop/metal.dm @@ -0,0 +1,6 @@ +/obj/item/processed/metal + name = "Heated Metal" + desc = "A malleable metal, able to be cut into nails." + icon = 'modular_splurt/icons/obj/cargo/sweatshop/metal.dmi' + icon_state = "metal" + sharpness = TRUE diff --git a/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm b/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm new file mode 100644 index 0000000000..d8611337ab --- /dev/null +++ b/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm @@ -0,0 +1,256 @@ +//THE TOOLS +/obj/item/carpentry + name = "carpentry" + desc = "You shouldn't be seeing this!" + icon = 'modular_splurt/icons/obj/cargo/sweatshop/sweatshop.dmi' + usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg') + +/obj/item/carpentry/handsaw + name = "handsaw" + desc = "A shoddy tool used to process wood into smaller segments." + icon_state = "handsaw" + slot_flags = ITEM_SLOT_BACK + force = 8 + sharpness = TRUE + w_class = WEIGHT_CLASS_HUGE + custom_materials = list(/datum/material/iron=50) + attack_verb = list("slashed", "sawed") + +/obj/item/carpentry/hammer + name = "hammer" + desc = "A tool used to manually bash nails into place." + icon_state = "hammer" + slot_flags = ITEM_SLOT_BELT + force = 7 + sharpness = FALSE + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/iron=100) + attack_verb = list("bonked", "nailed") + +/obj/item/carpentry/glue + name = "glue" + desc = "Used to haphazardly stick things together; secured by the toughest Monkey Glue(TM)." + icon_state = "glue" + force = 0 + sharpness = FALSE + w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/plastic=25) + attack_verb = list("glued", "coughed") + +/obj/item/carpentry/borer + name = "manual borer" + desc = "An incredibly awful tool used to manually drill holes into something... Surely there's a better option." + icon_state = "borer" + force = 3 + sharpness = TRUE + w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron=25) + attack_verb = list("bored", "drilled") + +/obj/item/carpentry/sandpaper + name = "sandpaper strip" + desc = "A strip of sandpaper, commonly used for sanding down rough surfaces into a more smooth shape." + icon_state = "sandpaper" + force = 1 + sharpness = FALSE + w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/glass=1) //lmao + attack_verb = list("sanded", "licked") + +/obj/item/nails + name = "metal nails" + desc = "A bunch of nails, used for hammering into things." + icon = 'modular_splurt/icons/obj/cargo/sweatshop/sweatshop.dmi' + icon_state = "nails" + force = 0 + sharpness = TRUE + w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/iron=10) + attack_verb = list("nailed", "screwed") + +/obj/item/cushion + name = "basic cushion" + desc = "Beats sitting on the floor." + icon = 'modular_splurt/icons/obj/cargo/sweatshop/cloth.dmi' + icon_state = "clothcushion" + force = 0 + sharpness = FALSE + w_class = WEIGHT_CLASS_NORMAL + attack_verb = list("thomped", "thwacked") + +/obj/item/cushion/silk + name = "silk cushion" + desc = "How'd it turn red?!" + icon_state = "silkcushion" + +//BASIC RECIPES - To do, add sound. As well as refactor everything in a more smart way so we can add the possibility of multiple wood types in the future. +//saw a plank into two platforms +/obj/item/processed/wood/plank/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/carpentry/handsaw)) + to_chat(user," You begin to saw [src] in half...") + if(do_after(user, 40) && isturf(loc)) + new src.sawobj(loc) + new src.sawobj(loc) //send help i dont know how to make two in the same line lmfao + to_chat(user, " You saw [src] in half.") + qdel(src) + else + to_chat(user, "You need to hold still to saw [src]!") + else + ..() +//saw a platform into four blocks +/obj/item/processed/wood/platform/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/carpentry/handsaw)) + to_chat(user," You begin cut [src] into smaller pieces...") + if(do_after(user, 20) && isturf(loc)) + new src.sawobj(loc) + new src.sawobj(loc) + new src.sawobj(loc) + new src.sawobj(loc) + to_chat(user, " You cut [src] into four pieces.") + qdel(src) + else + to_chat(user, "You need to hold still to saw [src]!") + else + ..() +//sand a block into a peg +/obj/item/processed/wood/block/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/carpentry/sandpaper)) + to_chat(user," You carefully begin to sand down [src]...") + if(do_after(user, 50) && isturf(loc)) + new src.sandobj(loc) + to_chat(user, " You smooth [src] into a peg.") + qdel(src) + else + to_chat(user, "You need to hold still to sand [src]!") + else + ..() +//cut heated metal into nails +/obj/item/processed/metal/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/wirecutters)) + to_chat(user," You tediously begin to cut [src] into several nails...") + if(do_after(user, 80) && isturf(loc)) + new /obj/item/nails(loc) + new /obj/item/nails(loc) + to_chat(user, " You make some crude metal nails.") + qdel(src) + else + to_chat(user, "You need to hold still to process [src]!") + else + ..() + +//Covered in glue +//cover a wooden block in glue +/obj/item/processed/wood/block/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/carpentry/glue)) + to_chat(user," You begin to glue down one end of [src]...") + if(do_after(user, 10) && isturf(loc)) + new src.glueobj(loc) + to_chat(user, " You slap some glue onto [src].") + qdel(src) + else + to_chat(user, "You need to hold still to glue [src]!") + else + ..() +//cover a wooden peg in glue +/obj/item/processed/wood/peg/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/carpentry/glue)) + to_chat(user," You begin to glue down one end of the [src]...") + if(do_after(user, 10) && isturf(loc)) + new src.glueobj(loc) + to_chat(user, " You slap some glue onto [src].") + qdel(src) + else + to_chat(user, "You need to hold still to glue [src]!") + else + ..() + +//Seats +//bore a platform into a seat +/obj/item/processed/wood/platform/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/carpentry/borer)) + to_chat(user," You begin to cut four holes into [src]...") + if(do_after(user, 40) && isturf(loc)) + new src.boreobj(loc) + to_chat(user, " You drill four holes into [src].") + qdel(src) + else + to_chat(user, "You need to hold still to refine [src]!") + else + ..() + +//Stools - Further crafting +/obj/item/processed/wood/stool1/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/nails)) + to_chat(user," You place nails into [src]...") + if(do_after(user, 20) && isturf(loc)) + new /obj/item/processed/wood/stool2(loc) + to_chat(user, " The nails are ready to be hammered.") + qdel(src) + qdel(I) + else + to_chat(user, "You need to hold still to refine [src]!") + else + ..() + +/obj/item/processed/wood/stool2/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/carpentry/hammer)) + to_chat(user," You begin to hammer the [src]...") + if(do_after(user, 30) && isturf(loc)) + new /obj/item/processed/wood/stool3(loc) + to_chat(user, " The nails are hammered into place.") + qdel(src) + else + to_chat(user, "You need to hold still to refine [src]!") + else + ..() + +/obj/item/processed/wood/stool3/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/carpentry/sandpaper)) + to_chat(user," You begin to sand the [src]...") + if(do_after(user, 30) && isturf(loc)) + new /obj/item/processed/wood/stool4(loc) + to_chat(user, " You sand down the [src].") + qdel(src) + else + to_chat(user, "You need to hold still to refine [src]!") + else + ..() + +/obj/item/processed/wood/stool4/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/processed/wood/glueblock)) + to_chat(user," You add some finishing touches to the [src]...") + if(do_after(user, 30) && isturf(loc)) + new /obj/item/processed/wood/stool(loc) + to_chat(user, " You complete the [src].") + qdel(src) + qdel(I) + else + to_chat(user, "You need to hold still to refine [src]!") + else + ..() + +/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/cushion)) + to_chat(user," You secure a cloth cushion to [src]...") + if(do_after(user, 30) && isturf(loc)) + new /obj/item/processed/wood/stoolcloth(loc) + to_chat(user, " You add a cushion to [src].") + qdel(src) + qdel(I) + else + to_chat(user, "You need to hold still to detail [src]!") + else + ..() + +/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/cushion/silk)) + to_chat(user," You secure a silk cushion to [src]...") + if(do_after(user, 30) && isturf(loc)) + new /obj/item/processed/wood/stoolsilk(loc) + to_chat(user, " You add a cushion to [src].") + qdel(src) + qdel(I) + else + to_chat(user, "You need to hold still to detail [src]!") + else + ..() diff --git a/modular_splurt/code/modules/cargo/sweatshop/wooden.dm b/modular_splurt/code/modules/cargo/sweatshop/wooden.dm new file mode 100644 index 0000000000..900441e1ce --- /dev/null +++ b/modular_splurt/code/modules/cargo/sweatshop/wooden.dm @@ -0,0 +1,128 @@ +//WOODEN COMPONENTS. honestly i need to move some shit around to allow for easier material swapping, but that's for a later date. + +/obj/item/processed/wood + name = "Wooden Processed Item" + desc = "You shouldn't see this!" + icon = 'modular_splurt/icons/obj/cargo/sweatshop/wooden.dmi' + sharpness = FALSE + attack_verb = list("slapped", "thunked") + var/sawobj = /obj/item/genital_equipment/condom + var/glueobj = /obj/item/dildo + var/sandobj = /obj/item/carpentry/sandpaper + var/boreobj = /obj/item/carpentry/borer + +/obj/item/processed/wood/plank + name = "processable wooden plank" + desc = "A somewhat sturdy refined plank. This can be used in various applications." + icon_state = "plank" + force = 3 + w_class = WEIGHT_CLASS_HUGE + sawobj = /obj/item/processed/wood/platform + +/obj/item/processed/wood/platform + name = "wood platform" + desc = "A somewhat sturdy cropping of a plank. This one is an alright foundation for chairs and stools." + icon_state = "platform" + force = 3 + w_class = WEIGHT_CLASS_NORMAL + sawobj = /obj/item/processed/wood/block + boreobj = /obj/item/processed/wood/seat + +/obj/item/processed/wood/block + name = "wood block" + desc = "A chopped platform into a wooden block. This one can be used for sanded into pegs, or used as a base on it's own." + icon_state = "block" + force = 2 + w_class = WEIGHT_CLASS_SMALL + sandobj = /obj/item/processed/wood/peg + glueobj = /obj/item/processed/wood/glueblock + +/obj/item/processed/wood/peg + name = "wood peg" + desc = "A wooden peg. Useful for fitting into holes." + icon_state = "peg" + force = 1 + w_class = WEIGHT_CLASS_TINY + attack_verb = list("donked", "thunked") + glueobj = /obj/item/processed/wood/gluepeg + +//glue + +/obj/item/processed/wood/gluepeg + name = "glued wood peg" + desc = "A wooden peg. With a bunch of glue used for securing." + icon_state = "gluepeg" + force = 1 + w_class = WEIGHT_CLASS_TINY + attack_verb = list("pegged", "thunked") + +/obj/item/processed/wood/glueblock + name = "glued wood block" + desc = "A wooden block. With a bunch of glue used for securing." + icon_state = "glueblock" + force = 2 + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("blocked", "thunked") + +//seat +/obj/item/processed/wood/seat + name = "wood seat" + desc = "A baseline for crafting seats. Not exactly that comfortable to sit on..." + icon_state = "seat" + force = 2 + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("slapped", "thunked") + + +//Stool steps. There's probably an easier way to do this, but I cannot be assed rn, I'll refine after PR +/obj/item/processed/wood/stool1 + name = "stool base" + desc = "A haphazardly made base for a stool. It's not even secured with any nails." + icon_state = "stool1" + force = 4 + w_class = WEIGHT_CLASS_BULKY + +/obj/item/processed/wood/stool2 + name = "nailed stool base" + desc = "Nails are in position" + icon_state = "stool2" + force = 4 + w_class = WEIGHT_CLASS_BULKY + +/obj/item/processed/wood/stool3 + name = "hammered stool base" + desc = "A vaguely stool-shaped... Thing. Could use some sandpaper." + icon_state = "stool3" + force = 4 + w_class = WEIGHT_CLASS_BULKY + +/obj/item/processed/wood/stool4 + name = "bland stool" + desc = "A rather bland stool." + icon_state = "stool4" + force = 4 + w_class = WEIGHT_CLASS_BULKY + +//The finished product +/obj/item/processed/wood/stool + name = "custom stool" + desc = "An intricite, custom stool." + icon_state = "stool" + force = 10 + w_class = WEIGHT_CLASS_BULKY + +//Let's make it soft and more expensive + +/obj/item/processed/wood/stoolcloth + name = "cloth-cushioned stool" + desc = "A custom stool with a cloth cushion." + icon_state = "stoolcloth" + force = 10 + w_class = WEIGHT_CLASS_BULKY + +/obj/item/processed/wood/stoolsilk + name = "cloth-cushioned stool" + desc = "A custom stool with a silk cushion." + icon_state = "stoolsilk" + force = 11 //lol + w_class = WEIGHT_CLASS_BULKY diff --git a/modular_splurt/code/modules/events/vent_clog.dm b/modular_splurt/code/modules/events/vent_clog.dm index b95e0b250f..856cd1658a 100644 --- a/modular_splurt/code/modules/events/vent_clog.dm +++ b/modular_splurt/code/modules/events/vent_clog.dm @@ -21,3 +21,49 @@ var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 7, get_turf(vent), TRUE) // Intentionally silent. There's a fuck ton of vents. smoke.start() + +/datum/round_event_control/vent_clog/female + name = "Clogged Vents: Girlcum" + typepath = /datum/round_event/vent_clog/female + max_occurrences = 1 + +/datum/round_event/vent_clog/female + reagentsAmount = 100 + +/datum/round_event/vent_clog/female/announce() + priority_announce("The scrubbers network is experiencing a backpressure squirt. Some squirting of contents may occur.", "Atmospherics alert") + +/datum/round_event/vent_clog/female/start() + for(var/obj/machinery/atmospherics/components/unary/vent in vents) + if(vent && vent.loc && !vent.welded) + var/datum/reagents/R = new/datum/reagents(1000) + R.my_atom = vent + R.add_reagent(/datum/reagent/consumable/semen/femcum, reagentsAmount) + + var/datum/effect_system/foam_spread/foam = new + foam.set_up(200, get_turf(vent), R) + foam.start() + CHECK_TICK + +/datum/round_event_control/vent_clog/male + name = "Clogged Vents: Semen" + typepath = /datum/round_event/vent_clog/male + max_occurrences = 1 + +/datum/round_event/vent_clog/male + reagentsAmount = 100 + +/datum/round_event/vent_clog/male/announce() + priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejaculation of contents may occur.", "Atmospherics alert") + +/datum/round_event/vent_clog/male/start() + for(var/obj/machinery/atmospherics/components/unary/vent in vents) + if(vent && vent.loc && !vent.welded) + var/datum/reagents/R = new/datum/reagents(1000) + R.my_atom = vent + R.add_reagent(/datum/reagent/consumable/semen, reagentsAmount) + + var/datum/effect_system/foam_spread/foam = new + foam.set_up(200, get_turf(vent), R) + foam.start() + CHECK_TICK diff --git a/modular_splurt/code/modules/food_and_drinks/drinks/drinks/sizeitems.dm b/modular_splurt/code/modules/food_and_drinks/drinks/drinks/sizeitems.dm new file mode 100644 index 0000000000..7325b1911f --- /dev/null +++ b/modular_splurt/code/modules/food_and_drinks/drinks/drinks/sizeitems.dm @@ -0,0 +1,15 @@ +/obj/item/reagent_containers/food/drinks/prospacillin + name = "Prospacillin Bottle" + desc = "An incredibly expensive bottle used by Kinaris command. It has golden engravings and reeks of corporate greed." + w_class = WEIGHT_CLASS_TINY + icon = 'modular_splurt/icons/obj/drinks.dmi' + icon_state = "prospacillin" + list_reagents = list(/datum/reagent/growthchem = 15) + +/obj/item/reagent_containers/food/drinks/diminicillin + name = "Diminicillin Bottle" + desc = "An incredibly expensive bottle used by Kinaris command. It has golden engravings and reeks of corporate greed." + w_class = WEIGHT_CLASS_TINY + icon = 'modular_splurt/icons/obj/drinks.dmi' + icon_state = "diminicillin" + list_reagents = list(/datum/reagent/shrinkchem = 15) diff --git a/modular_splurt/code/modules/food_and_drinks/food/snacks_burgers.dm b/modular_splurt/code/modules/food_and_drinks/food/snacks_burgers.dm new file mode 100644 index 0000000000..0ca28832f6 --- /dev/null +++ b/modular_splurt/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -0,0 +1,8 @@ +/obj/item/reagent_containers/food/snacks/burger/cumburger + name = "Cumburger" + desc = "A sticky and salty burger." + icon = 'modular_splurt/icons/obj/food/burgerbread.dmi' + icon_state = "cumburger" + tastes = list("bun" = 4, "salt" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/semen = 10, /datum/reagent/drug/anaphrodisiac = 3) + foodtype = GRAIN diff --git a/modular_splurt/code/modules/food_and_drinks/food/snacks_pastry.dm b/modular_splurt/code/modules/food_and_drinks/food/snacks_pastry.dm new file mode 100644 index 0000000000..b43cfd291e --- /dev/null +++ b/modular_splurt/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -0,0 +1,11 @@ +/obj/item/reagent_containers/food/snacks/donut/semen + name = "\"cream\" donut" + desc = "That cream looks a little runny..." + icon = 'modular_splurt/icons/obj/food/donut.dmi' + icon_state = "donut_cum" + bitesize = 10 + bonus_reagents = list(/datum/reagent/consumable/semen = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/semen = 5) + filling_color = "#FFFFFF" + tastes = list("donut" = 1, "salt" = 3) + foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR diff --git a/modular_splurt/code/modules/food_and_drinks/recipes/drink_recipes.dm b/modular_splurt/code/modules/food_and_drinks/recipes/drink_recipes.dm index 5ab9cd106f..f3547e5671 100644 --- a/modular_splurt/code/modules/food_and_drinks/recipes/drink_recipes.dm +++ b/modular_splurt/code/modules/food_and_drinks/recipes/drink_recipes.dm @@ -14,3 +14,28 @@ results = list(/datum/reagent/consumable/ethanol/lean = 3) required_reagents = list(/datum/reagent/medicine/salbutamol = 1, /datum/reagent/consumable/pwr_game = 1, /datum/reagent/consumable/sugar = 1) // Salbutamol for the cough syrup. Pwr Game for the Sprite, sugar for the candies. mix_message = "The mixture turns a deep purple colour." + +/datum/chemical_reaction/wockyslush + name = "Wocky Slush" + id = /datum/reagent/consumable/wockyslush + results = list(/datum/reagent/consumable/wockyslush = 5) + required_reagents = list(/datum/reagent/toxin/fentanyl = 1, /datum/reagent/consumable/ice = 1, /datum/reagent/consumable/lemon_lime = 1) + mix_message = "That thang bleedin’ P!" + +/datum/chemical_reaction/cum_in_a_hot_tub + name = "Cum in a Hot Tub" + id = /datum/reagent/consumable/ethanol/cum_in_a_hot_tub + results = list(/datum/reagent/consumable/ethanol/cum_in_a_hot_tub = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/ethanol/white_russian = 1, /datum/reagent/consumable/ethanol/irish_cream = 0.1) + +/datum/chemical_reaction/cum_in_a_hot_tub/semen + name = "Cum in a Hot Tub" + id = /datum/reagent/consumable/ethanol/cum_in_a_hot_tub/semen + results = list(/datum/reagent/consumable/ethanol/cum_in_a_hot_tub/semen = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/semen = 1, /datum/reagent/consumable/ethanol/irish_cream = 0.1) + +/datum/chemical_reaction/orange_creamsicle + name = "Orange Creamsical" + id = /datum/reagent/consumable/orange_creamsicle + results = list(/datum/reagent/consumable/orange_creamsicle = 4) + required_reagents = list(/datum/reagent/consumable/vanilla = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/consumable/ice = 1, /datum/reagent/consumable/orangejuice = 1) diff --git a/modular_splurt/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm b/modular_splurt/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm new file mode 100644 index 0000000000..48c98d7845 --- /dev/null +++ b/modular_splurt/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm @@ -0,0 +1,8 @@ +/datum/crafting_recipe/food/cumburger + name = "Cumburger" + reqs = list( + /datum/reagent/consumable/semen = 10, + /obj/item/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/reagent_containers/food/snacks/burger/cumburger + subcategory = CAT_BURGER diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 3c3df72d9b..acc1dfa7ad 100644 --- a/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -56,3 +56,19 @@ if(M.stat == CONSCIOUS) M.visible_message("[M] clutches at [M.p_their()] chest as if [M.p_their()] heart stopped!") // too much lean :( ..() + +/datum/reagent/consumable/ethanol/cum_in_a_hot_tub + name = "Cum in the Hot Tub" + boozepwr = 80 + color = "#D2D7D9" + quality = DRINK_VERYGOOD + taste_description = "smooth cream" + glass_icon_state = "cum_glass" + shot_glass_icon_state = "cum_shot" //I'm funny, I know + glass_name = "Cum in the Hot Tub" + glass_desc = "Doesn't really leave it to the imagination, eh?" + +/datum/reagent/consumable/ethanol/cum_in_a_hot_tub/semen + boozepwr = 65 + taste_description = "viscous cream" + glass_desc = "The name is probably exactly what it is." diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/drink_reagents.dm new file mode 100644 index 0000000000..ec68c4a9b2 --- /dev/null +++ b/modular_splurt/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -0,0 +1,29 @@ +//Edits of main code +/datum/reagent/consumable/milk + glass_icon_state = "milkglass" + +//Own +/datum/reagent/consumable/wockyslush + name = "Wocky Slush" + description = "That thang bleedin' to the-... ya know I mean?" + color = "#7b60c4" // rgb(123, 96, 196) + quality = DRINK_VERYGOOD + taste_description = "cold rainbows" + glass_icon_state = "wockyslush" + glass_name = "Wocky Slush" + glass_desc = "That thang bleedin' to the-... ya know I mean?" + +/datum/reagent/consumable/wockyslush/on_mob_life(mob/living/carbon/M) + M.emote(pick("twitch","giggle","stare")) + M.set_drugginess(75) + M.apply_status_effect(/datum/status_effect/throat_soothed) + ..() + +/datum/reagent/consumable/orange_creamsicle + name = "Orange Creamsicle" + description = "A Summer time drink that can be frozen and eaten or drunk from a glass!" + color = "#ffb46e" // rgb(255, 180, 110) + taste_description = "ice cream and orange soda" + glass_icon_state = "orangecreamsicle" + glass_desc = "A Summer time drink that can be frozen and eaten or Drinked from a glass!" + glass_name = "Orange Creamsicle" diff --git a/modular_splurt/code/modules/reagents/reagent_dispenser.dm b/modular_splurt/code/modules/reagents/reagent_dispenser.dm new file mode 100644 index 0000000000..ed0d8d65dc --- /dev/null +++ b/modular_splurt/code/modules/reagents/reagent_dispenser.dm @@ -0,0 +1,11 @@ +/obj/structure/reagent_dispensers/keg/semen + name = "keg of semen" + desc = "Dear lord, where did this even come from?" + icon_state = "whitekeg" + reagent_id = /datum/reagent/consumable/semen + +/obj/structure/reagent_dispensers/keg/femcum + name = "keg of femcum" + desc = "... Let's just say it's a keg of squirt..." + icon_state = "whitekeg" + reagent_id = /datum/reagent/consumable/semen/femcum diff --git a/modular_splurt/icons/obj/cargo/sweatshop/cloth.dmi b/modular_splurt/icons/obj/cargo/sweatshop/cloth.dmi new file mode 100644 index 0000000000..bd71472c66 Binary files /dev/null and b/modular_splurt/icons/obj/cargo/sweatshop/cloth.dmi differ diff --git a/modular_splurt/icons/obj/cargo/sweatshop/metal.dmi b/modular_splurt/icons/obj/cargo/sweatshop/metal.dmi new file mode 100644 index 0000000000..e847d11c35 Binary files /dev/null and b/modular_splurt/icons/obj/cargo/sweatshop/metal.dmi differ diff --git a/modular_splurt/icons/obj/cargo/sweatshop/sweatshop.dmi b/modular_splurt/icons/obj/cargo/sweatshop/sweatshop.dmi new file mode 100644 index 0000000000..27fd5fb1a6 Binary files /dev/null and b/modular_splurt/icons/obj/cargo/sweatshop/sweatshop.dmi differ diff --git a/modular_splurt/icons/obj/cargo/sweatshop/wooden.dmi b/modular_splurt/icons/obj/cargo/sweatshop/wooden.dmi new file mode 100644 index 0000000000..6a190f8dec Binary files /dev/null and b/modular_splurt/icons/obj/cargo/sweatshop/wooden.dmi differ diff --git a/modular_splurt/icons/obj/drinks.dmi b/modular_splurt/icons/obj/drinks.dmi new file mode 100644 index 0000000000..bc1756aa59 Binary files /dev/null and b/modular_splurt/icons/obj/drinks.dmi differ diff --git a/modular_splurt/icons/obj/food/burgerbread.dmi b/modular_splurt/icons/obj/food/burgerbread.dmi new file mode 100644 index 0000000000..884ffea166 Binary files /dev/null and b/modular_splurt/icons/obj/food/burgerbread.dmi differ diff --git a/modular_splurt/icons/obj/food/donut.dmi b/modular_splurt/icons/obj/food/donut.dmi new file mode 100644 index 0000000000..0bbf3fdd86 Binary files /dev/null and b/modular_splurt/icons/obj/food/donut.dmi differ diff --git a/modular_splurt/icons/obj/small_world.dmi b/modular_splurt/icons/obj/small_world.dmi new file mode 100644 index 0000000000..453383d62d Binary files /dev/null and b/modular_splurt/icons/obj/small_world.dmi differ diff --git a/modular_splurt/icons/obj/stack_objects.dmi b/modular_splurt/icons/obj/stack_objects.dmi index 7eee2eab4a..97ccc91c9e 100644 Binary files a/modular_splurt/icons/obj/stack_objects.dmi and b/modular_splurt/icons/obj/stack_objects.dmi differ diff --git a/modular_splurt/sound/effects/bricks_1.ogg b/modular_splurt/sound/effects/bricks_1.ogg new file mode 100644 index 0000000000..4d1dc37931 Binary files /dev/null and b/modular_splurt/sound/effects/bricks_1.ogg differ diff --git a/modular_splurt/sound/effects/bricks_2.ogg b/modular_splurt/sound/effects/bricks_2.ogg new file mode 100644 index 0000000000..29d5541149 Binary files /dev/null and b/modular_splurt/sound/effects/bricks_2.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 7d56a20afe..27f53f468d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4267,6 +4267,7 @@ #include "modular_splurt\code\game\object\structures\false_walls.dm" #include "modular_splurt\code\game\object\structures\flora.dm" #include "modular_splurt\code\game\object\structures\ghost_role_spawners.dm" +#include "modular_splurt\code\game\object\structures\micro_bricks.dm" #include "modular_splurt\code\game\object\structures\pole.dm" #include "modular_splurt\code\game\object\structures\statues.dm" #include "modular_splurt\code\game\object\structures\table_frames.dm" @@ -4315,8 +4316,14 @@ #include "modular_splurt\code\modules\atmospherics\machinery\components\unary_devices\outlet_injector.dm" #include "modular_splurt\code\modules\atmospherics\machinery\components\unary_devices\vent_pump.dm" #include "modular_splurt\code\modules\atmospherics\machinery\components\unary_devices\vent_scrubber.dm" +#include "modular_splurt\code\modules\cargo\exports\sheets.dm" +#include "modular_splurt\code\modules\cargo\exports\sweatshop.dm" +#include "modular_splurt\code\modules\cargo\bounties\lewd.dm" #include "modular_splurt\code\modules\cargo\exports\engineering.dm" #include "modular_splurt\code\modules\cargo\packs\armory.dm" +#include "modular_splurt\code\modules\cargo\sweatshop\wooden.dm" +#include "modular_splurt\code\modules\cargo\sweatshop\sweatshop.dm" +#include "modular_splurt\code\modules\cargo\sweatshop\metal.dm" #include "modular_splurt\code\modules\cargo\packs\engine.dm" #include "modular_splurt\code\modules\cargo\packs\goodies.dm" #include "modular_splurt\code\modules\cargo\packs\misc.dm" @@ -4358,8 +4365,12 @@ #include "modular_splurt\code\modules\discord\toggle_notify.dm" #include "modular_splurt\code\modules\events\bruh_moment.dm" #include "modular_splurt\code\modules\events\vent_clog.dm" +#include "modular_splurt\code\modules\food_and_drinks\drinks\drinks\sizeitems.dm" #include "modular_splurt\code\modules\food_and_drinks\food\snacks.dm" +#include "modular_splurt\code\modules\food_and_drinks\food\snacks_burgers.dm" +#include "modular_splurt\code\modules\food_and_drinks\food\snacks_pastry.dm" #include "modular_splurt\code\modules\food_and_drinks\recipes\drink_recipes.dm" +#include "modular_splurt\code\modules\food_and_drinks\recipes\tablecraft\recipes_burger.dm" #include "modular_splurt\code\modules\hydroponics\grown\towercap.dm" #include "modular_splurt\code\modules\jobs\job_types\blueshield.dm" #include "modular_splurt\code\modules\jobs\job_types\bridgeofficer.dm" @@ -4416,8 +4427,10 @@ #include "modular_splurt\code\modules\projectiles\guns\misc\grenade_launcher.dm" #include "modular_splurt\code\modules\projectiles\projectile\bullets\cannonball.dm" #include "modular_splurt\code\modules\projectiles\projectile\bullets\smg.dm" +#include "modular_splurt\code\modules\reagents\reagent_dispenser.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\alcohol_reagents.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\cit_reagents.dm" +#include "modular_splurt\code\modules\reagents\chemistry\reagents\drink_reagents.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\drug_reagents.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\enlargement.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\food_reagents.dm"