the thing

the
This commit is contained in:
BongaTheProto
2022-03-04 19:51:12 -05:00
parent 8eef5107da
commit 8badaaf8ec
37 changed files with 1019 additions and 10 deletions
@@ -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
*/
@@ -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)
@@ -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
@@ -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"
@@ -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
@@ -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,"<span class='notice'> You begin to saw [src] in half...</span>")
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, "<span class='notice'> You saw [src] in half.</span>")
qdel(src)
else
to_chat(user, "<span class='warning'>You need to hold still to saw [src]!</span>")
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,"<span class='notice'> You begin cut [src] into smaller pieces...</span>")
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, "<span class='notice'> You cut [src] into four pieces.</span>")
qdel(src)
else
to_chat(user, "<span class='warning'>You need to hold still to saw [src]!</span>")
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,"<span class='notice'> You carefully begin to sand down [src]...</span>")
if(do_after(user, 50) && isturf(loc))
new src.sandobj(loc)
to_chat(user, "<span class='notice'> You smooth [src] into a peg.</span>")
qdel(src)
else
to_chat(user, "<span class='warning'>You need to hold still to sand [src]!</span>")
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,"<span class='notice'> You tediously begin to cut [src] into several nails...</span>")
if(do_after(user, 80) && isturf(loc))
new /obj/item/nails(loc)
new /obj/item/nails(loc)
to_chat(user, "<span class='notice'> You make some crude metal nails.</span>")
qdel(src)
else
to_chat(user, "<span class='warning'>You need to hold still to process [src]!</span>")
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,"<span class='notice'> You begin to glue down one end of [src]...</span>")
if(do_after(user, 10) && isturf(loc))
new src.glueobj(loc)
to_chat(user, "<span class='notice'> You slap some glue onto [src].</span>")
qdel(src)
else
to_chat(user, "<span class='warning'>You need to hold still to glue [src]!</span>")
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,"<span class='notice'> You begin to glue down one end of the [src]...</span>")
if(do_after(user, 10) && isturf(loc))
new src.glueobj(loc)
to_chat(user, "<span class='notice'> You slap some glue onto [src].</span>")
qdel(src)
else
to_chat(user, "<span class='warning'>You need to hold still to glue [src]!</span>")
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,"<span class='notice'> You begin to cut four holes into [src]...</span>")
if(do_after(user, 40) && isturf(loc))
new src.boreobj(loc)
to_chat(user, "<span class='notice'> You drill four holes into [src].</span>")
qdel(src)
else
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
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,"<span class='notice'> You place nails into [src]...</span>")
if(do_after(user, 20) && isturf(loc))
new /obj/item/processed/wood/stool2(loc)
to_chat(user, "<span class='notice'> The nails are ready to be hammered.</span>")
qdel(src)
qdel(I)
else
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
else
..()
/obj/item/processed/wood/stool2/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/hammer))
to_chat(user,"<span class='notice'> You begin to hammer the [src]...</span>")
if(do_after(user, 30) && isturf(loc))
new /obj/item/processed/wood/stool3(loc)
to_chat(user, "<span class='notice'> The nails are hammered into place.</span>")
qdel(src)
else
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
else
..()
/obj/item/processed/wood/stool3/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/sandpaper))
to_chat(user,"<span class='notice'> You begin to sand the [src]...</span>")
if(do_after(user, 30) && isturf(loc))
new /obj/item/processed/wood/stool4(loc)
to_chat(user, "<span class='notice'> You sand down the [src].</span>")
qdel(src)
else
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
else
..()
/obj/item/processed/wood/stool4/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/processed/wood/glueblock))
to_chat(user,"<span class='notice'> You add some finishing touches to the [src]...</span>")
if(do_after(user, 30) && isturf(loc))
new /obj/item/processed/wood/stool(loc)
to_chat(user, "<span class='notice'> You complete the [src].</span>")
qdel(src)
qdel(I)
else
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
else
..()
/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/cushion))
to_chat(user,"<span class='notice'> You secure a cloth cushion to [src]...</span>")
if(do_after(user, 30) && isturf(loc))
new /obj/item/processed/wood/stoolcloth(loc)
to_chat(user, "<span class='notice'> You add a cushion to [src].</span>")
qdel(src)
qdel(I)
else
to_chat(user, "<span class='warning'>You need to hold still to detail [src]!</span>")
else
..()
/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/cushion/silk))
to_chat(user,"<span class='notice'> You secure a silk cushion to [src]...</span>")
if(do_after(user, 30) && isturf(loc))
new /obj/item/processed/wood/stoolsilk(loc)
to_chat(user, "<span class='notice'> You add a cushion to [src].</span>")
qdel(src)
qdel(I)
else
to_chat(user, "<span class='warning'>You need to hold still to detail [src]!</span>")
else
..()
@@ -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