From 8a7fd1071c444292fe88849dc0957b3b3a0bbf49 Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Sun, 17 Sep 2023 23:22:43 -0700 Subject: [PATCH 01/13] initial --- .../code/modules/loafing/code/loaf.dm | 24 +++++ .../code/modules/loafing/code/loafer.dm | 87 +++++++++++++++++++ tgstation.dme | 2 + 3 files changed, 113 insertions(+) create mode 100644 monkestation/code/modules/loafing/code/loaf.dm create mode 100644 monkestation/code/modules/loafing/code/loafer.dm diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm new file mode 100644 index 000000000000..eab60ca4053c --- /dev/null +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -0,0 +1,24 @@ +/obj/item/food/prison_loaf + name = "prison loaf" + desc = "A barely edible brick of nutrients, designed as a low-cost solution to malnourishment." + icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon_state = "loaf0" + var/loaf_density = 0 + + +/obj/item/food/prison_loaf/proc/condense() + switch(src.loaf_density) + + if(0 to 100) + src.name = "prison loaf" + src.desc = "A barely edible brick of nutrients, designed as a low-cost solution to malnourishment." + src.icon_state = "loaf0" + src.force = 0 + src.throwforce = 0 + if(101 to 250) + src.name = "dense prison loaf" + src.desc = "This loaf is noticeably heavier than usual." + src.icon_state = "loaf0" + src.force = 3 + src.throwforce = 3 + diff --git a/monkestation/code/modules/loafing/code/loafer.dm b/monkestation/code/modules/loafing/code/loafer.dm new file mode 100644 index 000000000000..43e85bbe1226 --- /dev/null +++ b/monkestation/code/modules/loafing/code/loafer.dm @@ -0,0 +1,87 @@ +/obj/structure/disposalpipe/loafer + name = "loafing device" + desc = "A prisoner feeding device that condenses matter into an Ultra Delicious(tm) nutrition bar!" + icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon_state = "loafer" + + +/obj/structure/disposalpipe/loafer/transfer(obj/structure/disposalholder/debris) + + //check if there's anything in there + if (debris.contents.len) + //start playing sound + playsound(src.loc, "sound", 50, 1) + src.icon_state = "loafer-on" + + //create new loaf + var/obj/item/food/prison_loaf/loaf = new /obj/item/food/prison_loaf(src) + + //add all the garbage to the loaf's contents + for (var/atom/movable/foodstuff in debris) + if(foodstuff.reagents)//the object has reagents + foodstuff.reagents.trans_to(loaf, 1000) + if(istype(foodstuff, /obj/item/food/prison_loaf))//the object is a loaf, compress somehow + var/obj/item/food/prison_loaf/loaf_to_grind = foodstuff + loaf.loaf_density += loaf_to_grind.loaf_density + loaf_to_grind = null + else if(isliving(foodstuff)) + var/mob/living/victim = foodstuff + //different mobs add different reagents + if(issilicon(victim)) + loaf.reagents.add_reagent("oil", 10) + loaf.reagents.add_reagent("iron", 10) + else + loaf.reagents.add_reagent("blood", 10) + loaf.reagents.add_reagent("urine", 10) + //then we give the loaf more power + if(ishuman(victim)) + loaf.loaf_density += 50 + else + loaf.loaf_density += 10 + if(!isdead(victim)) + victim.emote("scream") + victim.death() + if(victim.mind || victim.client) + victim.ghostize(FALSE) + else if (istype(foodstuff, /obj/item))//everything else + var/obj/item/kitchen_sink = foodstuff + var/weight = kitchen_sink.w_class + loaf.loaf_density += weight + debris.contents -= foodstuff + qdel(foodstuff) + + loaf.condense() + loaf.loc = debris.loc + src.icon_state = "loafer" + + return transfer_to_dir(debris, nextdir(debris)) + +/obj/structure/disposalpipe/loafer/deconstruct(disassembled = TRUE) + if(!(flags_1 & NODECONSTRUCT_1)) + if(disassembled) + if(stored) + stored.forceMove(loc) + transfer_fingerprints_to(stored) + stored.setDir(dir) + stored = null + else + var/turf/T = get_turf(src) + for(var/D in GLOB.cardinals) + if(D & dpdir) + var/obj/structure/disposalpipe/broken/P = new(T) + P.setDir(D) + spew_forth() + qdel(src) + +/obj/structure/disposalconstruct/loafer + name = "disposal pipe segment" + desc = "A huge pipe segment used for constructing disposal systems." + icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon_state = "conloafer" + pipe_type = /obj/structure/disposalpipe/loafer + +/obj/structure/disposalpipe/loafer/broken + desc = "A broken piece of disposal pipe." + icon_state = "loafer_broken" + initialize_dirs = DISP_DIR_NONE + diff --git a/tgstation.dme b/tgstation.dme index 46c16219451b..c614887f7d42 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5827,6 +5827,8 @@ #include "monkestation\code\modules\loadouts\items\toys.dm" #include "monkestation\code\modules\loadouts\items\under\donator.dm" #include "monkestation\code\modules\loadouts\items\under\under.dm" +#include "monkestation\code\modules\loafing\code\loaf.dm" +#include "monkestation\code\modules\loafing\code\loafer.dm" #include "monkestation\code\modules\maptext\maptext_image_helper.dm" #include "monkestation\code\modules\mech_comp\_interface.dm" #include "monkestation\code\modules\mech_comp\_message.dm" From 7eff71ae797d741cb94cd79ed0d5c8678ad616b3 Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Thu, 21 Sep 2023 20:36:56 -0700 Subject: [PATCH 02/13] fuck --- .../code/modules/loafing/code/loaf.dm | 66 +++++++++++++++++- .../code/modules/loafing/code/loafer.dm | 55 ++++++++------- .../code/modules/loafing/sound/loafer.ogg | Bin 0 -> 71886 bytes 3 files changed, 91 insertions(+), 30 deletions(-) create mode 100644 monkestation/code/modules/loafing/sound/loafer.ogg diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm index eab60ca4053c..d7aa0a0d55bd 100644 --- a/monkestation/code/modules/loafing/code/loaf.dm +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -3,22 +3,82 @@ desc = "A barely edible brick of nutrients, designed as a low-cost solution to malnourishment." icon = 'monkestation/code/modules/loafing/icon/obj.dmi' icon_state = "loaf0" - var/loaf_density = 0 + var/loaf_density = 1 //base loaf density + var/can_condense = TRUE //for special loaves, make false /obj/item/food/prison_loaf/proc/condense() + if(!src.can_condense) + return switch(src.loaf_density) - if(0 to 100) + if(0 to 10) src.name = "prison loaf" src.desc = "A barely edible brick of nutrients, designed as a low-cost solution to malnourishment." src.icon_state = "loaf0" src.force = 0 src.throwforce = 0 - if(101 to 250) + if(11 to 100) src.name = "dense prison loaf" src.desc = "This loaf is noticeably heavier than usual." src.icon_state = "loaf0" src.force = 3 src.throwforce = 3 + if(101 to 250) + src.name = "thicc ass prison loaf" + src.desc = "This loaf is caked UP" + src.icon_state = "loaf0" + src.force = 5 + src.throwforce = 5 + src.throw_range = 6 + if(251 to 500) + src.name = "thicc ass prison loaf" + src.desc = "This loaf is caked UP" + src.icon_state = "loaf1" + src.force = 10 + src.throwforce = 10 + src.throw_range = 6 + if(501 to 2500) + src.name = "thicc ass prison loaf" + src.desc = "This loaf is caked UP" + src.icon_state = "loaf1" + src.force = 20 + src.throwforce = 20 + src.throw_range = 5 + if(2501 to 50000) + src.name = "thicc ass prison loaf" + src.desc = "This loaf is caked UP" + src.icon_state = "loaf1" + src.force = 40 + src.throwforce = 40 + src.throw_range = 4 + if(50001 to 250000) + src.name = "thicc ass prison loaf" + src.desc = "This loaf is caked UP" + src.icon_state = "loaf1" + src.force = 65 + src.throwforce = 65 + src.throw_range = 3 + if(250001 to 1000000) + src.name = "thicc ass prison loaf" + src.desc = "This loaf is caked UP" + src.icon_state = "loaf1" + src.force = 80 + src.throwforce = 80 + src.throw_range = 2 + if(250001 to 1000000) + src.name = "thicc ass prison loaf" + src.desc = "This loaf is caked UP" + src.icon_state = "loaf1" + src.force = 125 + src.throwforce = 125 + src.throw_range = 1 + if(250001 to 1000000) + src.name = "quantum loaf" + src.desc = "This loaf is caked UP" + src.icon_state = "loaf1" + src.force = 250 + src.throwforce = 250 + src.throw_range = 0 + diff --git a/monkestation/code/modules/loafing/code/loafer.dm b/monkestation/code/modules/loafing/code/loafer.dm index 43e85bbe1226..b0dc4c7ccc4f 100644 --- a/monkestation/code/modules/loafing/code/loafer.dm +++ b/monkestation/code/modules/loafing/code/loafer.dm @@ -1,3 +1,4 @@ + /obj/structure/disposalpipe/loafer name = "loafing device" desc = "A prisoner feeding device that condenses matter into an Ultra Delicious(tm) nutrition bar!" @@ -6,16 +7,14 @@ /obj/structure/disposalpipe/loafer/transfer(obj/structure/disposalholder/debris) - + var/nextdir = nextdir(debris.dir) //check if there's anything in there if (debris.contents.len) //start playing sound - playsound(src.loc, "sound", 50, 1) src.icon_state = "loafer-on" - - //create new loaf + playsound(src, 'monkestation/code/modules/loafing/sound/loafer.ogg', 50, 1) + //create the loaf var/obj/item/food/prison_loaf/loaf = new /obj/item/food/prison_loaf(src) - //add all the garbage to the loaf's contents for (var/atom/movable/foodstuff in debris) if(foodstuff.reagents)//the object has reagents @@ -28,11 +27,11 @@ var/mob/living/victim = foodstuff //different mobs add different reagents if(issilicon(victim)) - loaf.reagents.add_reagent("oil", 10) - loaf.reagents.add_reagent("iron", 10) + loaf.reagents.add_reagent(/datum/reagent/fuel, 10) + loaf.reagents.add_reagent(/datum/reagent/iron, 10) else - loaf.reagents.add_reagent("blood", 10) - loaf.reagents.add_reagent("urine", 10) + loaf.reagents.add_reagent(/datum/reagent/blood, 10) + loaf.reagents.add_reagent(/datum/reagent/ammonia/urine, 10) //then we give the loaf more power if(ishuman(victim)) loaf.loaf_density += 50 @@ -50,28 +49,30 @@ debris.contents -= foodstuff qdel(foodstuff) + //condense the loaf loaf.condense() - loaf.loc = debris.loc src.icon_state = "loafer" + playsound(src, 'sound/machines/microwave/microwave-end.ogg', 50, 1) + debris.contents += loaf + + addtimer(CALLBACK(src, PROC_REF(output_debris), debris, nextdir), 10 SECONDS) - return transfer_to_dir(debris, nextdir(debris)) +/obj/structure/disposalpipe/loafer/proc/output_debris(obj/structure/disposalholder/debris, nextdir) + debris.setDir(nextdir) + var/turf/nextturf = debris.nextloc() + var/obj/structure/disposalpipe/nextpipe = debris.findpipe(nextturf) -/obj/structure/disposalpipe/loafer/deconstruct(disassembled = TRUE) - if(!(flags_1 & NODECONSTRUCT_1)) - if(disassembled) - if(stored) - stored.forceMove(loc) - transfer_fingerprints_to(stored) - stored.setDir(dir) - stored = null - else - var/turf/T = get_turf(src) - for(var/D in GLOB.cardinals) - if(D & dpdir) - var/obj/structure/disposalpipe/broken/P = new(T) - P.setDir(D) - spew_forth() - qdel(src) + if(!nextpipe) // if there wasn't a pipe, then they'll be expelled. + return + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/nextholder = locate() in nextpipe + if(nextholder && !nextholder.active) + if(nextholder.hasmob) //If it's stopped and there's a mob, add to the pile + nextholder.merge(debris) + return + debris.merge(nextholder)//Otherwise, we push it along through. + debris.forceMove(nextpipe) + return nextpipe /obj/structure/disposalconstruct/loafer name = "disposal pipe segment" diff --git a/monkestation/code/modules/loafing/sound/loafer.ogg b/monkestation/code/modules/loafing/sound/loafer.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4ce15e80e60bc7b6f38358895e4d1d821ae38a7d GIT binary patch literal 71886 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

c43C&9yYwsVK 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 PfHh2%vaAVFJetG+Cf<`; literal 0 HcmV?d00001 From 5663c0eeec754870048690e99e9188f7cc484f50 Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Sun, 24 Sep 2023 16:35:48 -0700 Subject: [PATCH 03/13] full loafing potential --- code/controllers/subsystem/throwing.dm | 2 +- .../code/modules/loafing/code/loaf.dm | 224 +++++++++++++++--- .../code/modules/loafing/code/loafer.dm | 111 +++++---- 3 files changed, 254 insertions(+), 83 deletions(-) diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index 1c5c50dd0fbf..dd0795ded7ee 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -219,7 +219,7 @@ SUBSYSTEM_DEF(throwing) if (callback) callback.Invoke() - if(!thrownthing.currently_z_moving) // I don't think you can zfall while thrown but hey, just in case. + if(!thrownthing?.currently_z_moving) // I don't think you can zfall while thrown but hey, just in case. var/turf/T = get_turf(thrownthing) T?.zFall(thrownthing) diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm index d7aa0a0d55bd..31ee606f53df 100644 --- a/monkestation/code/modules/loafing/code/loaf.dm +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -2,10 +2,151 @@ name = "prison loaf" desc = "A barely edible brick of nutrients, designed as a low-cost solution to malnourishment." icon = 'monkestation/code/modules/loafing/icon/obj.dmi' - icon_state = "loaf0" + icon_state = "loaf" var/loaf_density = 1 //base loaf density var/can_condense = TRUE //for special loaves, make false + //vars for high level loafs + var/atom/movable/warp_effect/warp + var/lifespan = ANOMALY_COUNTDOWN_TIMER //works similar to grav anomaly when hits critical + var/death_time + var/countdown_colour = COLOR_ASSEMBLY_LBLUE + var/obj/effect/countdown/loaf/countdown + var/boing = 0 + var/obj/singularity/singuloaf + +/obj/item/food/prison_loaf/process(seconds_per_tick) + anomalyEffect(seconds_per_tick) + if(death_time < world.time) + if(loc) + detonate() + qdel(src) + +/obj/item/food/prison_loaf/Destroy() + STOP_PROCESSING(SSobj, src) + QDEL_NULL(countdown) + vis_contents -= warp + warp = null + return ..() + +/obj/item/food/prison_loaf/proc/anomalyEffect(seconds_per_tick) + if(SPT_PROB(ANOMALY_MOVECHANCE, seconds_per_tick)) + step(src,pick(GLOB.alldirs)) + boing = 1 + for(var/obj/object in orange(4, src)) + if(!object.anchored) + step_towards(object,src) + for(var/mob/living/M in range(0, src)) + gravShock(M) + for(var/mob/living/M in orange(4, src)) + if(!M.mob_negates_gravity()) + step_towards(M,src) + for(var/obj/object in range(0,src)) + if(!object.anchored) + if(isturf(object.loc)) + var/turf/T = object.loc + if(T.underfloor_accessibility < UNDERFLOOR_INTERACTABLE && HAS_TRAIT(object, TRAIT_T_RAY_VISIBLE)) + continue + var/mob/living/target = locate() in view(4,src) + if(target && !target.stat) + object.throw_at(target, 5, 10) + animate(warp, time = seconds_per_tick*3, transform = matrix().Scale(0.5,0.5)) + animate(time = seconds_per_tick*7, transform = matrix()) + +/obj/item/food/prison_loaf/proc/detonate() + var/turf/T = get_turf(src) + log_game("\A [src] critical loaf has ended its lifespan, turning into a singularity at [AREACOORD(T)].") + message_admins("A [src.name] critical loaf has ended its lifespan, turning into a singularity at [ADMIN_VERBOSEJMP(T)].") + + singuloaf = new /obj/singularity/(src) + singuloaf.loc = src.loc + return + +/obj/item/food/prison_loaf/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) + . = ..() + if(same_z_layer) + return + if(warp) + SET_PLANE(warp, PLANE_TO_TRUE(warp.plane), new_turf) + +/obj/item/food/prison_loaf/proc/on_entered(datum/source, atom/movable/AM) + SIGNAL_HANDLER + gravShock(AM) + +/obj/item/food/prison_loaf/Bump(atom/A) + gravShock(A) + +/obj/item/food/prison_loaf/Bumped(atom/movable/AM) + gravShock(AM) + +/obj/item/food/prison_loaf/proc/gravShock(mob/living/A) + if(boing && isliving(A) && !A.stat) + A.Paralyze(40) + var/atom/target = get_edge_target_turf(A, get_dir(src, get_step_away(A, src))) + A.throw_at(target, 5, 1) + boing = 0 + +/obj/item/food/prison_loaf/proc/critical() + var/turf/T = get_turf(src) + notify_ghosts("A [src] has been condensed to the point of criticality!", source=src, action=NOTIFY_ORBIT, header="Loaf Criticality!!") + log_game("\A [src] has been condensed to the point of criticality at [AREACOORD(T)].") + message_admins("A [src.name] has been condensed to the point of criticality at [ADMIN_VERBOSEJMP(T)].") + death_time = world.time + lifespan + warp = new(src) + vis_contents += warp + countdown = new(src) + if(countdown_colour) + countdown.color = countdown_colour + countdown.start() + can_condense = FALSE + START_PROCESSING(SSobj, src) + +/obj/effect/countdown/loaf + name = "singuloaf countdown" + +/obj/effect/countdown/loaf/get_value() + var/obj/item/food/prison_loaf/loaf = attached_to + if(!istype(loaf)) + return + else + var/time_left = max(0, (loaf.death_time - world.time) / 10) + return round(time_left) + + + + + + + + +/obj/item/food/prison_loaf/rod + name = "rod loaf" + desc = "If you loaf something, set it free. If it comes back, it's yours." + icon_state = "rod_loaf" + can_condense = FALSE + +/obj/item/food/prison_loaf/rod/after_throw(datum/callback/callback) + . = ..() + var/startside = pick(GLOB.cardinals) + var/turf/end_turf = get_edge_target_turf(get_random_station_turf(), turn(startside, 180)) + var/turf/start_turf = get_turf(usr) + var/atom/rod = new /obj/effect/immovablerod/loaf(start_turf, end_turf) + notify_ghosts("[usr.name] has an object of interest: [rod]!", source=rod, action=NOTIFY_ORBIT, header="Something's Interesting!") + qdel(src) + +/obj/effect/immovablerod/loaf + name = "immovable loaf" + desc = "Oh no, the flavor is coming right for us!" + icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon_state = "rod_loaf" + +/obj/machinery/power/supermatter_crystal/loaf + name = "suppermatter loaf" //you can't kill me for my bad puns. they make me immortal. + desc = "A prison loaf that has condensed and crystalized to the point where it can be used as a standard power source." + icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon_state = "supermatter_loaf" + + /obj/item/food/prison_loaf/proc/condense() if(!src.can_condense) @@ -13,72 +154,81 @@ switch(src.loaf_density) if(0 to 10) - src.name = "prison loaf" + src.name = initial(src.name) src.desc = "A barely edible brick of nutrients, designed as a low-cost solution to malnourishment." - src.icon_state = "loaf0" + src.icon_state = initial(src.icon_state) + "0" src.force = 0 src.throwforce = 0 + src.reagents.add_reagent(/datum/reagent/consumable/salt, 1) if(11 to 100) - src.name = "dense prison loaf" - src.desc = "This loaf is noticeably heavier than usual." - src.icon_state = "loaf0" + src.name = "dense " + initial(src.name) + src.desc = initial(src.desc) + " This loaf is noticeably heavier than usual." + src.icon_state = initial(src.icon_state) + "0" src.force = 3 src.throwforce = 3 + src.reagents.add_reagent(/datum/reagent/consumable/salt, 3) if(101 to 250) - src.name = "thicc ass prison loaf" - src.desc = "This loaf is caked UP" - src.icon_state = "loaf0" + src.name = "compacted " + initial(src.name) + src.desc = initial(src.desc) + " Hooh, this thing packs a punch. What are they putting into these?" + src.icon_state = initial(src.icon_state) + "0" src.force = 5 src.throwforce = 5 src.throw_range = 6 + src.reagents.add_reagent(/datum/reagent/consumable/salt, 8) if(251 to 500) - src.name = "thicc ass prison loaf" - src.desc = "This loaf is caked UP" - src.icon_state = "loaf1" + src.name = "super-compressed " + initial(src.name) + src.desc = initial(src.desc) + " Hard enough to scratch a diamond, yet still somehow edible, this loaf seems to be emitting decay heat. Dear god." + src.icon_state = initial(src.icon_state) + "1" src.force = 10 src.throwforce = 10 src.throw_range = 6 + src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) if(501 to 2500) - src.name = "thicc ass prison loaf" - src.desc = "This loaf is caked UP" - src.icon_state = "loaf1" + src.name = "molecular " + initial(src.name) + src.desc = initial(src.desc) + " The loaf has become so dense that no food particulates are visible to the naked eye." + src.icon_state = initial(src.icon_state) + "2" src.force = 20 src.throwforce = 20 src.throw_range = 5 - if(2501 to 50000) - src.name = "thicc ass prison loaf" - src.desc = "This loaf is caked UP" - src.icon_state = "loaf1" + src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + if(2501 to 10000) + src.name = "atomic " + initial(src.name) + src.desc = initial(src.desc) + " Forget food particulates, the loaf is now comprised of flavor atoms." + src.icon_state = initial(src.icon_state) + "3" src.force = 40 src.throwforce = 40 src.throw_range = 4 - if(50001 to 250000) - src.name = "thicc ass prison loaf" - src.desc = "This loaf is caked UP" - src.icon_state = "loaf1" + src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + if(10001 to 25000) + src.name = "sub atomic " + initial(src.name) + src.desc = initial(src.desc) + " Oh good, the flavor atoms in this prison loaf have collapsed down to a a solid lump of neutrons." + src.icon_state = initial(src.icon_state) + "4" src.force = 65 src.throwforce = 65 src.throw_range = 3 - if(250001 to 1000000) - src.name = "thicc ass prison loaf" - src.desc = "This loaf is caked UP" - src.icon_state = "loaf1" + src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + if(25001 to 50000) + src.name = "quark " + initial(src.name) + src.desc = initial(src.desc) + " This nutritional loaf is collapsing into subatomic flavor particles. It is unfathmomably heavy." + src.icon_state = initial(src.icon_state) + "5" src.force = 80 src.throwforce = 80 src.throw_range = 2 - if(250001 to 1000000) - src.name = "thicc ass prison loaf" - src.desc = "This loaf is caked UP" - src.icon_state = "loaf1" + src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + if(50001 to 100000) + src.name = "strangelet " + initial(src.name) + src.desc = initial(src.desc) + " At this point you may be considering: has man gone too far? Are we meant to have food this powerful?" + src.icon_state = initial(src.icon_state) + "6" src.force = 125 src.throwforce = 125 src.throw_range = 1 - if(250001 to 1000000) - src.name = "quantum loaf" - src.desc = "This loaf is caked UP" - src.icon_state = "loaf1" + src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + if(100001 to 1000000) + src.name = "quantum " + initial(src.name) + src.desc = initial(src.desc) + " The mere existence of this nutritional masterpiece is causing reality to distort!" + src.icon_state = initial(src.icon_state) + "7" src.force = 250 src.throwforce = 250 src.throw_range = 0 - - + src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + critical() diff --git a/monkestation/code/modules/loafing/code/loafer.dm b/monkestation/code/modules/loafing/code/loafer.dm index b0dc4c7ccc4f..82b685aff305 100644 --- a/monkestation/code/modules/loafing/code/loafer.dm +++ b/monkestation/code/modules/loafing/code/loafer.dm @@ -1,30 +1,41 @@ - /obj/structure/disposalpipe/loafer name = "loafing device" desc = "A prisoner feeding device that condenses matter into an Ultra Delicious(tm) nutrition bar!" icon = 'monkestation/code/modules/loafing/icon/obj.dmi' icon_state = "loafer" + var/is_loafing = FALSE - -/obj/structure/disposalpipe/loafer/transfer(obj/structure/disposalholder/debris) - var/nextdir = nextdir(debris.dir) +/obj/structure/disposalpipe/loafer/transfer(obj/structure/disposalholder/holder) + if(is_loafing) + return src //check if there's anything in there - if (debris.contents.len) + if (holder.contents.len) //start playing sound + is_loafing = TRUE src.icon_state = "loafer-on" - playsound(src, 'monkestation/code/modules/loafing/sound/loafer.ogg', 50, 1) - //create the loaf - var/obj/item/food/prison_loaf/loaf = new /obj/item/food/prison_loaf(src) + src.update_appearance() + playsound(src, 'monkestation/code/modules/loafing/sound/loafer.ogg', 100, 1) + + //create new loaf + var/obj/item/food/prison_loaf/loaf = locate(/obj/item/food/prison_loaf) in holder.contents + if(!loaf) + loaf = new /obj/item/food/prison_loaf(src) + //add all the garbage to the loaf's contents - for (var/atom/movable/foodstuff in debris) - if(foodstuff.reagents)//the object has reagents - foodstuff.reagents.trans_to(loaf, 1000) - if(istype(foodstuff, /obj/item/food/prison_loaf))//the object is a loaf, compress somehow - var/obj/item/food/prison_loaf/loaf_to_grind = foodstuff + for (var/atom/movable/debris in holder) + if(debris.reagents)//the object has reagents + debris.reagents.trans_to(loaf, 1000) + if(istype(debris, /obj/machinery/power/supermatter_crystal/)) + var/obj/machinery/power/supermatter_crystal/loaf/superloaf = new /obj/machinery/power/supermatter_crystal/loaf + loaf = null + holder.contents += superloaf + break + if(istype(debris, /obj/item/food/prison_loaf))//the object is a loaf, compress somehow + var/obj/item/food/prison_loaf/loaf_to_grind = debris loaf.loaf_density += loaf_to_grind.loaf_density loaf_to_grind = null - else if(isliving(foodstuff)) - var/mob/living/victim = foodstuff + else if(isliving(debris)) + var/mob/living/victim = debris //different mobs add different reagents if(issilicon(victim)) loaf.reagents.add_reagent(/datum/reagent/fuel, 10) @@ -42,47 +53,57 @@ victim.death() if(victim.mind || victim.client) victim.ghostize(FALSE) - else if (istype(foodstuff, /obj/item))//everything else - var/obj/item/kitchen_sink = foodstuff + else if (istype(debris, /obj/item))//everything else + var/obj/item/kitchen_sink = debris var/weight = kitchen_sink.w_class loaf.loaf_density += weight - debris.contents -= foodstuff - qdel(foodstuff) + holder.contents -= debris + qdel(debris) + + sleep(3 SECONDS) //condense the loaf loaf.condense() + //place the loaf + loaf.forceMove(holder) + holder.contents += loaf + is_loafing = FALSE src.icon_state = "loafer" - playsound(src, 'sound/machines/microwave/microwave-end.ogg', 50, 1) - debris.contents += loaf - - addtimer(CALLBACK(src, PROC_REF(output_debris), debris, nextdir), 10 SECONDS) + return transfer_to_dir(holder, nextdir(holder)) -/obj/structure/disposalpipe/loafer/proc/output_debris(obj/structure/disposalholder/debris, nextdir) - debris.setDir(nextdir) - var/turf/nextturf = debris.nextloc() - var/obj/structure/disposalpipe/nextpipe = debris.findpipe(nextturf) - - if(!nextpipe) // if there wasn't a pipe, then they'll be expelled. - return - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/nextholder = locate() in nextpipe - if(nextholder && !nextholder.active) - if(nextholder.hasmob) //If it's stopped and there's a mob, add to the pile - nextholder.merge(debris) - return - debris.merge(nextholder)//Otherwise, we push it along through. - debris.forceMove(nextpipe) - return nextpipe +/obj/structure/disposalpipe/loafer/deconstruct(disassembled = TRUE) + if(!(flags_1 & NODECONSTRUCT_1)) + if(disassembled) + if(stored) + stored.forceMove(loc) + transfer_fingerprints_to(stored) + stored.setDir(dir) + stored = null + else + var/turf/T = get_turf(src) + for(var/D in GLOB.cardinals) + if(D & dpdir) + var/obj/structure/disposalpipe/broken/P = new(T) + P.setDir(D) + spew_forth() + qdel(src) /obj/structure/disposalconstruct/loafer - name = "disposal pipe segment" - desc = "A huge pipe segment used for constructing disposal systems." + name = "loafing device" + desc = "A prisoner feeding device that condenses matter into an Ultra Delicious(tm) nutrition bar!" icon = 'monkestation/code/modules/loafing/icon/obj.dmi' icon_state = "conloafer" pipe_type = /obj/structure/disposalpipe/loafer -/obj/structure/disposalpipe/loafer/broken - desc = "A broken piece of disposal pipe." - icon_state = "loafer_broken" - initialize_dirs = DISP_DIR_NONE +//spawning + +/obj/effect/spawner/random/loafer + name = "loafer spawner" + spawn_scatter_radius = 5 + layer = DISPOSAL_PIPE_LAYER + +/obj/effect/spawner/random/loafer/Initialize(mapload) + loot = list( + /obj/structure/disposalpipe/loafer/) + . = ..() From 48f1862f5c7a68e5cd36f97864e951c6c018e970 Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Sun, 24 Sep 2023 19:47:13 -0700 Subject: [PATCH 04/13] add reagents, fix bug --- .../code/modules/loafing/code/loaf.dm | 32 ++++++++++++------- .../code/modules/loafing/code/loafer.dm | 19 ++++------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm index 31ee606f53df..58c496075920 100644 --- a/monkestation/code/modules/loafing/code/loaf.dm +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -112,13 +112,6 @@ var/time_left = max(0, (loaf.death_time - world.time) / 10) return round(time_left) - - - - - - - /obj/item/food/prison_loaf/rod name = "rod loaf" desc = "If you loaf something, set it free. If it comes back, it's yours." @@ -152,7 +145,6 @@ if(!src.can_condense) return switch(src.loaf_density) - if(0 to 10) src.name = initial(src.name) src.desc = "A barely edible brick of nutrients, designed as a low-cost solution to malnourishment." @@ -160,6 +152,7 @@ src.force = 0 src.throwforce = 0 src.reagents.add_reagent(/datum/reagent/consumable/salt, 1) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 1) if(11 to 100) src.name = "dense " + initial(src.name) src.desc = initial(src.desc) + " This loaf is noticeably heavier than usual." @@ -167,6 +160,7 @@ src.force = 3 src.throwforce = 3 src.reagents.add_reagent(/datum/reagent/consumable/salt, 3) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 3) if(101 to 250) src.name = "compacted " + initial(src.name) src.desc = initial(src.desc) + " Hooh, this thing packs a punch. What are they putting into these?" @@ -174,7 +168,8 @@ src.force = 5 src.throwforce = 5 src.throw_range = 6 - src.reagents.add_reagent(/datum/reagent/consumable/salt, 8) + src.reagents.add_reagent(/datum/reagent/consumable/salt, 5) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 5) if(251 to 500) src.name = "super-compressed " + initial(src.name) src.desc = initial(src.desc) + " Hard enough to scratch a diamond, yet still somehow edible, this loaf seems to be emitting decay heat. Dear god." @@ -182,7 +177,8 @@ src.force = 10 src.throwforce = 10 src.throw_range = 6 - src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + src.reagents.add_reagent(/datum/reagent/consumable/salt, 8) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 8) if(501 to 2500) src.name = "molecular " + initial(src.name) src.desc = initial(src.desc) + " The loaf has become so dense that no food particulates are visible to the naked eye." @@ -191,6 +187,8 @@ src.throwforce = 20 src.throw_range = 5 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) + src.reagents.add_reagent(/datum/reagent/consumable/corn_syrup, 5) if(2501 to 10000) src.name = "atomic " + initial(src.name) src.desc = initial(src.desc) + " Forget food particulates, the loaf is now comprised of flavor atoms." @@ -199,22 +197,28 @@ src.throwforce = 40 src.throw_range = 4 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) + src.reagents.add_reagent(/datum/reagent/growthserum, 5) if(10001 to 25000) src.name = "sub atomic " + initial(src.name) - src.desc = initial(src.desc) + " Oh good, the flavor atoms in this prison loaf have collapsed down to a a solid lump of neutrons." + src.desc = initial(src.desc) + " Oh good, the flavor atoms in this prison loaf have collapsed down to a a solid lump of neutrons. Eating this could prove dangerous." src.icon_state = initial(src.icon_state) + "4" src.force = 65 src.throwforce = 65 src.throw_range = 3 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) + src.reagents.add_reagent(/datum/reagent/consumable/vitfro, 5) if(25001 to 50000) src.name = "quark " + initial(src.name) - src.desc = initial(src.desc) + " This nutritional loaf is collapsing into subatomic flavor particles. It is unfathmomably heavy." + src.desc = initial(src.desc) + " This nutritional loaf is collapsing into subatomic flavor particles. Consuption could convert your DNA into synthetic sludge." src.icon_state = initial(src.icon_state) + "5" src.force = 80 src.throwforce = 80 src.throw_range = 2 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) + src.reagents.add_reagent(/datum/reagent/mulligan, 5) if(50001 to 100000) src.name = "strangelet " + initial(src.name) src.desc = initial(src.desc) + " At this point you may be considering: has man gone too far? Are we meant to have food this powerful?" @@ -223,6 +227,8 @@ src.throwforce = 125 src.throw_range = 1 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) + src.reagents.add_reagent(/datum/reagent/cyborg_mutation_nanomachines, 5) if(100001 to 1000000) src.name = "quantum " + initial(src.name) src.desc = initial(src.desc) + " The mere existence of this nutritional masterpiece is causing reality to distort!" @@ -231,4 +237,6 @@ src.throwforce = 250 src.throw_range = 0 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) + src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) + src.reagents.add_reagent(/datum/reagent/gravitum, 25) critical() diff --git a/monkestation/code/modules/loafing/code/loafer.dm b/monkestation/code/modules/loafing/code/loafer.dm index 82b685aff305..4203811c029e 100644 --- a/monkestation/code/modules/loafing/code/loafer.dm +++ b/monkestation/code/modules/loafing/code/loafer.dm @@ -17,22 +17,15 @@ playsound(src, 'monkestation/code/modules/loafing/sound/loafer.ogg', 100, 1) //create new loaf - var/obj/item/food/prison_loaf/loaf = locate(/obj/item/food/prison_loaf) in holder.contents - if(!loaf) - loaf = new /obj/item/food/prison_loaf(src) + var/obj/item/food/prison_loaf/loaf = new /obj/item/food/prison_loaf(src) //add all the garbage to the loaf's contents for (var/atom/movable/debris in holder) if(debris.reagents)//the object has reagents debris.reagents.trans_to(loaf, 1000) - if(istype(debris, /obj/machinery/power/supermatter_crystal/)) - var/obj/machinery/power/supermatter_crystal/loaf/superloaf = new /obj/machinery/power/supermatter_crystal/loaf - loaf = null - holder.contents += superloaf - break if(istype(debris, /obj/item/food/prison_loaf))//the object is a loaf, compress somehow var/obj/item/food/prison_loaf/loaf_to_grind = debris - loaf.loaf_density += loaf_to_grind.loaf_density + loaf.loaf_density += loaf_to_grind.loaf_density * 1.05 loaf_to_grind = null else if(isliving(debris)) var/mob/living/victim = debris @@ -41,8 +34,10 @@ loaf.reagents.add_reagent(/datum/reagent/fuel, 10) loaf.reagents.add_reagent(/datum/reagent/iron, 10) else - loaf.reagents.add_reagent(/datum/reagent/blood, 10) - loaf.reagents.add_reagent(/datum/reagent/ammonia/urine, 10) + loaf.reagents.add_reagent(/datum/reagent/bone_dust, 3) + loaf.reagents.add_reagent(/datum/reagent/ammonia/urine, 2) + loaf.reagents.add_reagent(/datum/reagent/consumable/liquidgibs, 2) + loaf.reagents.add_reagent(/datum/reagent/consumable/nutriment/organ_tissue, 2) //then we give the loaf more power if(ishuman(victim)) loaf.loaf_density += 50 @@ -56,7 +51,7 @@ else if (istype(debris, /obj/item))//everything else var/obj/item/kitchen_sink = debris var/weight = kitchen_sink.w_class - loaf.loaf_density += weight + loaf.loaf_density += weight * 3 holder.contents -= debris qdel(debris) From 023b91d4d2c0b3495355bbb8e1675362f8cf0e91 Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Sun, 24 Sep 2023 20:03:33 -0700 Subject: [PATCH 05/13] each day god tests my sanity --- monkestation/code/modules/loafing/code/loaf.dm | 2 +- .../code/modules/loafing/code/loafer.dm | 2 +- monkestation/code/modules/loafing/icons/obj.dmi | Bin 0 -> 31417 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 monkestation/code/modules/loafing/icons/obj.dmi diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm index 58c496075920..362989eed3a3 100644 --- a/monkestation/code/modules/loafing/code/loaf.dm +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -1,7 +1,7 @@ /obj/item/food/prison_loaf name = "prison loaf" desc = "A barely edible brick of nutrients, designed as a low-cost solution to malnourishment." - icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon = 'monkestation/code/modules/loafing/icons/obj.dmi' icon_state = "loaf" var/loaf_density = 1 //base loaf density var/can_condense = TRUE //for special loaves, make false diff --git a/monkestation/code/modules/loafing/code/loafer.dm b/monkestation/code/modules/loafing/code/loafer.dm index 4203811c029e..956df33bcf52 100644 --- a/monkestation/code/modules/loafing/code/loafer.dm +++ b/monkestation/code/modules/loafing/code/loafer.dm @@ -1,7 +1,7 @@ /obj/structure/disposalpipe/loafer name = "loafing device" desc = "A prisoner feeding device that condenses matter into an Ultra Delicious(tm) nutrition bar!" - icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon = 'monkestation/code/modules/loafing/icons/obj.dmi' icon_state = "loafer" var/is_loafing = FALSE diff --git a/monkestation/code/modules/loafing/icons/obj.dmi b/monkestation/code/modules/loafing/icons/obj.dmi new file mode 100644 index 0000000000000000000000000000000000000000..30bffe2c1ec7408d00160b4e2bed29921f67789c GIT binary patch literal 31417 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 yrz527ie? Date: Sun, 24 Sep 2023 20:08:58 -0700 Subject: [PATCH 06/13] fart --- monkestation/code/modules/loafing/code/loaf.dm | 4 ++-- monkestation/code/modules/loafing/code/loafer.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm index 362989eed3a3..c71412239a98 100644 --- a/monkestation/code/modules/loafing/code/loaf.dm +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -130,13 +130,13 @@ /obj/effect/immovablerod/loaf name = "immovable loaf" desc = "Oh no, the flavor is coming right for us!" - icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon = 'monkestation/code/modules/loafing/icons/obj.dmi' icon_state = "rod_loaf" /obj/machinery/power/supermatter_crystal/loaf name = "suppermatter loaf" //you can't kill me for my bad puns. they make me immortal. desc = "A prison loaf that has condensed and crystalized to the point where it can be used as a standard power source." - icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon = 'monkestation/code/modules/loafing/icons/obj.dmi' icon_state = "supermatter_loaf" diff --git a/monkestation/code/modules/loafing/code/loafer.dm b/monkestation/code/modules/loafing/code/loafer.dm index 956df33bcf52..a717e73e9bc6 100644 --- a/monkestation/code/modules/loafing/code/loafer.dm +++ b/monkestation/code/modules/loafing/code/loafer.dm @@ -86,7 +86,7 @@ /obj/structure/disposalconstruct/loafer name = "loafing device" desc = "A prisoner feeding device that condenses matter into an Ultra Delicious(tm) nutrition bar!" - icon = 'monkestation/code/modules/loafing/icon/obj.dmi' + icon = 'monkestation/code/modules/loafing/icons/obj.dmi' icon_state = "conloafer" pipe_type = /obj/structure/disposalpipe/loafer From 8164c3a46910ff381f0a25bf6ce1faa5514086fd Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Wed, 27 Sep 2023 16:32:32 -0700 Subject: [PATCH 07/13] tweaks --- .../code/modules/loafing/code/loaf.dm | 77 ++++++++++-------- .../code/modules/loafing/code/loafer.dm | 17 +++- .../code/modules/loafing/icons/obj.dmi | Bin 31417 -> 31408 bytes 3 files changed, 58 insertions(+), 36 deletions(-) diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm index c71412239a98..37aa1639911e 100644 --- a/monkestation/code/modules/loafing/code/loaf.dm +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -137,7 +137,7 @@ name = "suppermatter loaf" //you can't kill me for my bad puns. they make me immortal. desc = "A prison loaf that has condensed and crystalized to the point where it can be used as a standard power source." icon = 'monkestation/code/modules/loafing/icons/obj.dmi' - icon_state = "supermatter_loaf" + icon_state = "sm" @@ -155,88 +155,101 @@ src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 1) if(11 to 100) src.name = "dense " + initial(src.name) - src.desc = initial(src.desc) + " This loaf is noticeably heavier than usual." + src.desc = initial(src.desc) + "\n This loaf is noticeably heavier than usual." src.icon_state = initial(src.icon_state) + "0" - src.force = 3 - src.throwforce = 3 + src.force = 2 + src.throwforce = 2 src.reagents.add_reagent(/datum/reagent/consumable/salt, 3) src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 3) if(101 to 250) src.name = "compacted " + initial(src.name) - src.desc = initial(src.desc) + " Hooh, this thing packs a punch. What are they putting into these?" + src.desc = initial(src.desc) + "\n Hooh, this thing packs a punch. What are they putting into these?" src.icon_state = initial(src.icon_state) + "0" - src.force = 5 - src.throwforce = 5 + src.force = 4 + src.throwforce = 4 src.throw_range = 6 src.reagents.add_reagent(/datum/reagent/consumable/salt, 5) src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 5) if(251 to 500) src.name = "super-compressed " + initial(src.name) - src.desc = initial(src.desc) + " Hard enough to scratch a diamond, yet still somehow edible, this loaf seems to be emitting decay heat. Dear god." + src.desc = initial(src.desc) + "\n Hard enough to scratch a diamond, yet still somehow edible,\n this loaf seems to be emitting decay heat. Dear god." src.icon_state = initial(src.icon_state) + "1" - src.force = 10 - src.throwforce = 10 + src.force = 5 + src.throwforce = 5 src.throw_range = 6 src.reagents.add_reagent(/datum/reagent/consumable/salt, 8) src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 8) if(501 to 2500) src.name = "molecular " + initial(src.name) - src.desc = initial(src.desc) + " The loaf has become so dense that no food particulates are visible to the naked eye." + src.desc = initial(src.desc) + "\n The loaf has become so dense that no food particulates are visible to the naked eye." src.icon_state = initial(src.icon_state) + "2" - src.force = 20 - src.throwforce = 20 + src.force = 10 + src.throwforce = 10 src.throw_range = 5 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) src.reagents.add_reagent(/datum/reagent/consumable/corn_syrup, 5) if(2501 to 10000) src.name = "atomic " + initial(src.name) - src.desc = initial(src.desc) + " Forget food particulates, the loaf is now comprised of flavor atoms." + src.desc = initial(src.desc) + "\n Forget food particulates, the loaf is now comprised of flavor atoms." src.icon_state = initial(src.icon_state) + "3" - src.force = 40 - src.throwforce = 40 + src.force = 20 + src.throwforce = 20 src.throw_range = 4 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) src.reagents.add_reagent(/datum/reagent/growthserum, 5) if(10001 to 25000) src.name = "sub atomic " + initial(src.name) - src.desc = initial(src.desc) + " Oh good, the flavor atoms in this prison loaf have collapsed down to a a solid lump of neutrons. Eating this could prove dangerous." + src.desc = initial(src.desc) + "\n Oh good, the flavor atoms in this prison loaf have collapsed down to a a solid lump of neutrons. Eating this could prove dangerous." src.icon_state = initial(src.icon_state) + "4" - src.force = 65 - src.throwforce = 65 + src.force = 30 + src.throwforce = 30 src.throw_range = 3 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) - src.reagents.add_reagent(/datum/reagent/consumable/vitfro, 5) + src.reagents.add_reagent(/datum/reagent/consumable/vitfro, 25) if(25001 to 50000) src.name = "quark " + initial(src.name) - src.desc = initial(src.desc) + " This nutritional loaf is collapsing into subatomic flavor particles. Consuption could convert your DNA into synthetic sludge." + src.desc = initial(src.desc) + "\n This nutritional loaf is collapsing into subatomic flavor particles. Consuption could convert your DNA into synthetic sludge." src.icon_state = initial(src.icon_state) + "5" - src.force = 80 - src.throwforce = 80 + src.force = 50 + src.throwforce = 50 src.throw_range = 2 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) - src.reagents.add_reagent(/datum/reagent/mulligan, 5) + src.reagents.add_reagent(/datum/reagent/mulligan, 25) if(50001 to 100000) src.name = "strangelet " + initial(src.name) - src.desc = initial(src.desc) + " At this point you may be considering: has man gone too far? Are we meant to have food this powerful?" + src.desc = initial(src.desc) + "\n At this point you may be considering: has man gone too far? Are we meant to have food this powerful?" src.icon_state = initial(src.icon_state) + "6" - src.force = 125 - src.throwforce = 125 + src.force = 75 + src.throwforce = 75 src.throw_range = 1 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) - src.reagents.add_reagent(/datum/reagent/cyborg_mutation_nanomachines, 5) + src.reagents.add_reagent(/datum/reagent/cyborg_mutation_nanomachines, 50) if(100001 to 1000000) src.name = "quantum " + initial(src.name) - src.desc = initial(src.desc) + " The mere existence of this nutritional masterpiece is causing reality to distort!" + src.desc = initial(src.desc) + "\n The mere existence of this nutritional masterpiece is causing reality to distort!" src.icon_state = initial(src.icon_state) + "7" - src.force = 250 - src.throwforce = 250 + src.force = 100 + src.throwforce = 100 src.throw_range = 0 src.reagents.add_reagent(/datum/reagent/consumable/salt, 10) src.reagents.add_reagent(/datum/reagent/consumable/nutraslop, 10) - src.reagents.add_reagent(/datum/reagent/gravitum, 25) + src.reagents.add_reagent(/datum/reagent/gravitum, 100) critical() + + +/datum/export/food/loaf + cost = 10 + unit_name = "loaf" + message = "of Nutraloaf" + export_types = list(/obj/item/food/prison_loaf) + include_subtypes = TRUE + +/datum/export/food/loaf/get_cost(obj/O, apply_elastic = TRUE) + var/obj/item/food/prison_loaf/loaf = O + cost = max(10, loaf.loaf_density / 5) + diff --git a/monkestation/code/modules/loafing/code/loafer.dm b/monkestation/code/modules/loafing/code/loafer.dm index a717e73e9bc6..4b4b64fd8638 100644 --- a/monkestation/code/modules/loafing/code/loafer.dm +++ b/monkestation/code/modules/loafing/code/loafer.dm @@ -4,6 +4,7 @@ icon = 'monkestation/code/modules/loafing/icons/obj.dmi' icon_state = "loafer" var/is_loafing = FALSE + var/list/loaf_blacklist = list(/obj/item/organ/internal/brain, /obj/item/bodypart/head) /obj/structure/disposalpipe/loafer/transfer(obj/structure/disposalholder/holder) if(is_loafing) @@ -14,13 +15,21 @@ is_loafing = TRUE src.icon_state = "loafer-on" src.update_appearance() - playsound(src, 'monkestation/code/modules/loafing/sound/loafer.ogg', 100, 1) + playsound(src, 'monkestation/code/modules/loafing/sound/loafer.ogg', 100, 1, mixer_channel = CHANNEL_MACHINERY) //create new loaf var/obj/item/food/prison_loaf/loaf = new /obj/item/food/prison_loaf(src) //add all the garbage to the loaf's contents for (var/atom/movable/debris in holder) + if(debris.resistance_flags & INDESTRUCTIBLE || (debris.type in loaf_blacklist)) + if(holder.contents.len > 1) + continue + else + loaf = null + src.icon_state = "loafer" + is_loafing = FALSE + return transfer_to_dir(holder, nextdir(holder)) if(debris.reagents)//the object has reagents debris.reagents.trans_to(loaf, 1000) if(istype(debris, /obj/item/food/prison_loaf))//the object is a loaf, compress somehow @@ -40,12 +49,12 @@ loaf.reagents.add_reagent(/datum/reagent/consumable/nutriment/organ_tissue, 2) //then we give the loaf more power if(ishuman(victim)) - loaf.loaf_density += 50 + loaf.loaf_density += 25 else loaf.loaf_density += 10 if(!isdead(victim)) victim.emote("scream") - victim.death() + victim.gib() if(victim.mind || victim.client) victim.ghostize(FALSE) else if (istype(debris, /obj/item))//everything else @@ -101,4 +110,4 @@ /obj/effect/spawner/random/loafer/Initialize(mapload) loot = list( /obj/structure/disposalpipe/loafer/) - . = ..() + return ..() diff --git a/monkestation/code/modules/loafing/icons/obj.dmi b/monkestation/code/modules/loafing/icons/obj.dmi index 30bffe2c1ec7408d00160b4e2bed29921f67789c..8fedcae132d5b09fd3f5b0d579bb368369edef45 100644 GIT binary patch delta 275 zcmV+u0qp*{^#QQ;0gxkq0Qq`USad{Xb7OL8aCB*JZU6vyoTZY%j=~@qgwOC46TPwx z*ml(e7gJ+;&{r^Zi?&gV0iyBkJ$Tr{(p}Al6Ulrt{|__9V!0|eDApytDq~ySK_W{y zCAYSA4J6VDC5>tijeB0KtDJ(w=%lN?G9yar)>uenlA-aS7l+Uzi+cor zl5(HQ<5V6A_QB6MI2)QcDBJWuPiD`5?#h!X<4Mj0C5?9Wq8%jWOz{37M%P=vL4GO6 ZSZ)dw>ykbILe}F2_~_+AWV0^;ig{Mag$)1z delta 284 zcmV+%0ptF#^#Qr{0gxkq0RnndSad{Xb7OL8aCB*JZU6vyoTZX6Z^AGXglGF#oM1JP zO%f=Bmnx{r0Dl3wD3C5g%7hP0g8F>3yRGE From f49b4c1536a15d3475c1683ba5b32e5e0697fc8e Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Sat, 30 Sep 2023 10:57:29 -0700 Subject: [PATCH 08/13] no more loaf sledgehammer of doom --- code/__DEFINES/flags.dm | 3 ++ code/datums/components/food/edible.dm | 7 +++- code/game/objects/items/food/_food.dm | 3 +- monkestation/code/modules/loafing/README.txt | 41 +++++++++++++++++++ .../code/modules/loafing/code/loaf.dm | 3 +- 5 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 monkestation/code/modules/loafing/README.txt diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 7ac94778a2a5..33bd40023180 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -70,6 +70,9 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 /// Yes I know this is a stupid flag, no you can't take him from me #define DECAL_INIT_UPDATE_EXPERIENCED_1 (1<<20) +/// Used for items that cannot be used directly to harm people with, ex. loafs +#define CANNOT_ATTACK_WITH (1<<21) + // Update flags for [/atom/proc/update_appearance] /// Update the atom's name #define UPDATE_NAME (1<<0) diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index 221d4945c0e2..ae6bc7f5a599 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -310,7 +310,12 @@ Behavior that's still missing from this component that original food items had t var/atom/owner = parent - if((feeder.istate & ISTATE_HARM)) + var/obj/item/food/foodstuff + + if(istype(owner, /obj/item/food)) + foodstuff = owner + + if((feeder.istate & ISTATE_HARM) && !(foodstuff?.force_feed_on_aggression)) //monkestation edit - add loafing return . = COMPONENT_CANCEL_ATTACK_CHAIN //Point of no return I suppose diff --git a/code/game/objects/items/food/_food.dm b/code/game/objects/items/food/_food.dm index a790cb65f4c4..b18f0b09f9fc 100644 --- a/code/game/objects/items/food/_food.dm +++ b/code/game/objects/items/food/_food.dm @@ -46,7 +46,8 @@ var/decomp_req_handle = FALSE ///Used to set custom decomposition times for food. Set to 0 to have it automatically set via the food's flags. var/decomposition_time = 0 - + ///If we want to still force feed food even on combat mode or harm intent - monkestation edit + var/force_feed_on_aggression = FALSE ///The food buffs the food has var/food_buffs = STATUS_EFFECT_FOOD_STAM_MEDIUM diff --git a/monkestation/code/modules/loafing/README.txt b/monkestation/code/modules/loafing/README.txt new file mode 100644 index 000000000000..cd5b1e842aae --- /dev/null +++ b/monkestation/code/modules/loafing/README.txt @@ -0,0 +1,41 @@ +## Title: + + +MODULE ID: LOAFING + +### Description: + +This module adds a loafing mechanic. + + + +### TG Proc/File Changes: + +changed /datum/component/edible/proc/TryToEat(mob/living/eater, mob/living/feeder) in edible.dm +changed _food.dm + + + + +### Defines: + + + + +### Master file additions + +- N/A + + +### Included files that are not contained in this module: + +- N/A + + +### Credits: + + + +Code and sprites done by Lmenvs. Concept from Goon. + + diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm index 37aa1639911e..609e0c707954 100644 --- a/monkestation/code/modules/loafing/code/loaf.dm +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -3,9 +3,10 @@ desc = "A barely edible brick of nutrients, designed as a low-cost solution to malnourishment." icon = 'monkestation/code/modules/loafing/icons/obj.dmi' icon_state = "loaf" + food_reagents = list(/datum/reagent/consumable/nutraslop = 10) var/loaf_density = 1 //base loaf density var/can_condense = TRUE //for special loaves, make false - + force_feed_on_aggression = TRUE //vars for high level loafs var/atom/movable/warp_effect/warp var/lifespan = ANOMALY_COUNTDOWN_TIMER //works similar to grav anomaly when hits critical From 02f79a69588c5409d3b394ac19179da60a248f81 Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Fri, 6 Oct 2023 22:27:56 -0700 Subject: [PATCH 09/13] add loafer to maps --- _maps/map_files/Deltastation/DeltaStation2.dmm | 7 ++++++- _maps/map_files/IceBoxStation/IceBoxStation.dmm | 9 ++++++++- _maps/map_files/MetaStation/MetaStation.dmm | 6 +++++- _maps/map_files/tramstation/tramstation.dmm | 1 + monkestation/code/modules/loafing/code/loafer.dm | 1 + 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 90de741895dc..3f964373302c 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -84284,6 +84284,11 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) +"uCq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/loafer, +/turf/open/floor/plating, +/area/station/maintenance/department/security) "uCt" = ( /obj/effect/spawner/random/structure/chair_maintenance{ dir = 1 @@ -151662,7 +151667,7 @@ adM uHP dth fws -vHY +uCq rYA vHY hie diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index b2888158ec4c..a27bc1e2d6e8 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -30226,6 +30226,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/mine/production) +"jLk" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/loafer, +/turf/open/floor/plating, +/area/station/security/prison/safe) "jLl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /obj/effect/turf_decal/siding/yellow{ @@ -171215,7 +171222,7 @@ wRa vVH nRO ulz -ulz +jLk ulz pNm eOz diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 975e7f4f6a7b..4cadb08b5d43 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -39578,6 +39578,10 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"omE" = ( +/obj/effect/spawner/random/loafer, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "omF" = ( /obj/machinery/teleport/station, /obj/machinery/status_display/evac/directional/north, @@ -90270,7 +90274,7 @@ aaa bxr jXu rOz -sHu +omE siY jXu aaa diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 5e817254c65c..bed90ff79e77 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -62262,6 +62262,7 @@ /turf/open/floor/iron/white, /area/station/medical/storage) "sQY" = ( +/obj/effect/spawner/random/loafer, /turf/open/floor/iron/smooth, /area/station/maintenance/department/eva) "sQZ" = ( diff --git a/monkestation/code/modules/loafing/code/loafer.dm b/monkestation/code/modules/loafing/code/loafer.dm index 4b4b64fd8638..f4ce61c40b8d 100644 --- a/monkestation/code/modules/loafing/code/loafer.dm +++ b/monkestation/code/modules/loafing/code/loafer.dm @@ -105,6 +105,7 @@ /obj/effect/spawner/random/loafer name = "loafer spawner" spawn_scatter_radius = 5 + var/spawn_loot_chance = 20 layer = DISPOSAL_PIPE_LAYER /obj/effect/spawner/random/loafer/Initialize(mapload) From a200b2f749de54fa66ea896c0ca3d2a213fe86c7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Sat, 7 Oct 2023 17:01:47 -0700 Subject: [PATCH 10/13] whoops --- monkestation/code/modules/loafing/code/loafer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monkestation/code/modules/loafing/code/loafer.dm b/monkestation/code/modules/loafing/code/loafer.dm index f4ce61c40b8d..b74221e3dc5e 100644 --- a/monkestation/code/modules/loafing/code/loafer.dm +++ b/monkestation/code/modules/loafing/code/loafer.dm @@ -105,7 +105,7 @@ /obj/effect/spawner/random/loafer name = "loafer spawner" spawn_scatter_radius = 5 - var/spawn_loot_chance = 20 + spawn_loot_chance = 20 layer = DISPOSAL_PIPE_LAYER /obj/effect/spawner/random/loafer/Initialize(mapload) From 373bc70f6f9e3be4dd6a145f0ace574107189422 Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Sun, 8 Oct 2023 15:11:18 -0700 Subject: [PATCH 11/13] repeater for vendor --- monkestation/code/modules/mech_comp/vending_machine.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/monkestation/code/modules/mech_comp/vending_machine.dm b/monkestation/code/modules/mech_comp/vending_machine.dm index 82fdecef5f66..35293de5ff7b 100644 --- a/monkestation/code/modules/mech_comp/vending_machine.dm +++ b/monkestation/code/modules/mech_comp/vending_machine.dm @@ -40,6 +40,7 @@ /obj/item/mcobject/messaging/storage = STANDARD_COMPONENT_SUPPLY, /obj/item/mcobject/messaging/type_sensor = STANDARD_COMPONENT_SUPPLY, /obj/item/mcobject/messaging/clock = STANDARD_COMPONENT_SUPPLY, + /obj/item/mcobject/messaging/repeater = LOW_COMPONENT_SUPPLY ) From 84a971f879fdba52a366034e85dff7ce584b29ba Mon Sep 17 00:00:00 2001 From: "DESKTOP-M4GD565\\LME" Date: Sun, 8 Oct 2023 17:17:43 -0700 Subject: [PATCH 12/13] fix throw damage and pricing --- .../code/modules/loafing/code/loaf.dm | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm index 609e0c707954..81187633e39e 100644 --- a/monkestation/code/modules/loafing/code/loaf.dm +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -6,9 +6,13 @@ food_reagents = list(/datum/reagent/consumable/nutraslop = 10) var/loaf_density = 1 //base loaf density var/can_condense = TRUE //for special loaves, make false - force_feed_on_aggression = TRUE + force_feed_on_aggression = FALSE //vars for high level loafs + + var/critical = FALSE var/atom/movable/warp_effect/warp + + var/lifespan = ANOMALY_COUNTDOWN_TIMER //works similar to grav anomaly when hits critical var/death_time var/countdown_colour = COLOR_ASSEMBLY_LBLUE @@ -75,10 +79,16 @@ gravShock(AM) /obj/item/food/prison_loaf/Bump(atom/A) - gravShock(A) + if(critical) + gravShock(A) + else + return ..() /obj/item/food/prison_loaf/Bumped(atom/movable/AM) - gravShock(AM) + if(critical) + gravShock(AM) + else + return ..() /obj/item/food/prison_loaf/proc/gravShock(mob/living/A) if(boing && isliving(A) && !A.stat) @@ -88,6 +98,7 @@ boing = 0 /obj/item/food/prison_loaf/proc/critical() + src.critical = TRUE var/turf/T = get_turf(src) notify_ghosts("A [src] has been condensed to the point of criticality!", source=src, action=NOTIFY_ORBIT, header="Loaf Criticality!!") log_game("\A [src] has been condensed to the point of criticality at [AREACOORD(T)].") @@ -248,9 +259,8 @@ unit_name = "loaf" message = "of Nutraloaf" export_types = list(/obj/item/food/prison_loaf) - include_subtypes = TRUE -/datum/export/food/loaf/get_cost(obj/O, apply_elastic = TRUE) +/datum/export/food/loaf/get_cost(obj/O) var/obj/item/food/prison_loaf/loaf = O cost = max(10, loaf.loaf_density / 5) - + return ..() From 7c6452fa778bdc7cc8b9801fa0cd5e3fc4840ea9 Mon Sep 17 00:00:00 2001 From: lmenvs <85052537+lmenvs@users.noreply.github.com> Date: Tue, 10 Oct 2023 11:44:13 -0700 Subject: [PATCH 13/13] Update loaf.dm --- monkestation/code/modules/loafing/code/loaf.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monkestation/code/modules/loafing/code/loaf.dm b/monkestation/code/modules/loafing/code/loaf.dm index 81187633e39e..fa6526876aaa 100644 --- a/monkestation/code/modules/loafing/code/loaf.dm +++ b/monkestation/code/modules/loafing/code/loaf.dm @@ -6,7 +6,7 @@ food_reagents = list(/datum/reagent/consumable/nutraslop = 10) var/loaf_density = 1 //base loaf density var/can_condense = TRUE //for special loaves, make false - force_feed_on_aggression = FALSE + force_feed_on_aggression = TRUE //vars for high level loafs var/critical = FALSE