[MIRROR] Refinery Feedback P1 (#11298)

Co-authored-by: Will <7099514+Willburd@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-08-04 07:53:12 -07:00
committed by GitHub
parent fd0ec87646
commit 9f0e900ca7
11 changed files with 153 additions and 58 deletions

View File

@@ -42,7 +42,10 @@
#define CE_DARKSIGHT "darksight" // Gives perfect vision in dark #define CE_DARKSIGHT "darksight" // Gives perfect vision in dark
#define REAGENTS_PER_SHEET 20 #define REAGENTS_PER_SHEET 20
#define REAGENTS_PER_ROD 10
#define REAGENTS_PER_ORE 20 #define REAGENTS_PER_ORE 20
#define REAGENTS_PER_LOG 40
#define REAGENTS_PER_HULL 40
// Attached to CE_ANTIBIOTIC // Attached to CE_ANTIBIOTIC
#define ANTIBIO_NORM 1 #define ANTIBIO_NORM 1

View File

@@ -1460,36 +1460,64 @@ GLOBAL_LIST_INIT(shieldgen_blockedturfs, list(
GLOBAL_LIST_INIT(sheet_reagents, list( //have a number of reagents divisible by REAGENTS_PER_SHEET (default 20) unless you like decimals. GLOBAL_LIST_INIT(sheet_reagents, list( //have a number of reagents divisible by REAGENTS_PER_SHEET (default 20) unless you like decimals.
/obj/item/stack/material/plastic = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_OXYGEN,REAGENT_ID_CHLORINE,REAGENT_ID_SULFUR), /obj/item/stack/material/plastic = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_OXYGEN,REAGENT_ID_CHLORINE,REAGENT_ID_SULFUR),
/obj/item/stack/material/copper = list(REAGENT_ID_COPPER), /obj/item/stack/material/copper = list(REAGENT_ID_COPPER),
/obj/item/stack/material/wood = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
/obj/item/stack/material/stick = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
/obj/item/stack/material/log = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
/obj/item/stack/material/algae = list(REAGENT_ID_CARBON,REAGENT_ID_NITROGEN,REAGENT_ID_NITROGEN,REAGENT_ID_PHOSPHORUS,REAGENT_ID_PHOSPHORUS),
/obj/item/stack/material/graphite = list(REAGENT_ID_CARBON), /obj/item/stack/material/graphite = list(REAGENT_ID_CARBON),
/obj/item/stack/material/aluminium = list(REAGENT_ID_ALUMINIUM), // The material is aluminium, but the reagent is aluminum... /obj/item/stack/material/aluminium = list(REAGENT_ID_ALUMINIUM),
/obj/item/stack/material/glass/reinforced = list(REAGENT_ID_SILICON,REAGENT_ID_SILICON,REAGENT_ID_SILICON,REAGENT_ID_IRON,REAGENT_ID_CARBON),
/obj/item/stack/material/leather = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_PROTEIN,REAGENT_ID_PROTEIN,REAGENT_ID_TRIGLYCERIDE),
/obj/item/stack/material/cloth = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_PROTEIN,REAGENT_ID_SODIUM),
/obj/item/stack/material/fiber = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_PROTEIN,REAGENT_ID_SODIUM),
/obj/item/stack/material/fur = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_SULFUR,REAGENT_ID_SODIUM),
/obj/item/stack/material/deuterium = list(REAGENT_ID_HYDROGEN),
/obj/item/stack/material/glass/phoronrglass = list(REAGENT_ID_SILICON,REAGENT_ID_SILICON,REAGENT_ID_SILICON,REAGENT_ID_PHORON,REAGENT_ID_PHORON),
/obj/item/stack/material/diamond = list(REAGENT_ID_CARBON), /obj/item/stack/material/diamond = list(REAGENT_ID_CARBON),
/obj/item/stack/material/durasteel = list(REAGENT_ID_IRON,REAGENT_ID_IRON,REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_PLATINUM), /obj/item/stack/material/durasteel = list(REAGENT_ID_IRON,REAGENT_ID_IRON,REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_PLATINUM),
/obj/item/stack/material/wax = list(REAGENT_ID_ETHANOL,REAGENT_ID_TRIGLYCERIDE), /obj/item/stack/material/wax = list(REAGENT_ID_ETHANOL,REAGENT_ID_TRIGLYCERIDE),
/obj/item/stack/material/iron = list(REAGENT_ID_IRON), /obj/item/stack/material/iron = list(REAGENT_ID_IRON),
/obj/item/stack/material/uranium = list(REAGENT_ID_URANIUM),
/obj/item/stack/material/phoron = list(REAGENT_ID_PHORON), /obj/item/stack/material/phoron = list(REAGENT_ID_PHORON),
/obj/item/stack/material/gold = list(REAGENT_ID_GOLD), /obj/item/stack/material/gold = list(REAGENT_ID_GOLD),
/obj/item/stack/material/silver = list(REAGENT_ID_SILVER), /obj/item/stack/material/silver = list(REAGENT_ID_SILVER),
/obj/item/stack/material/platinum = list(REAGENT_ID_PLATINUM), /obj/item/stack/material/platinum = list(REAGENT_ID_PLATINUM),
/obj/item/stack/material/mhydrogen = list(REAGENT_ID_HYDROGEN), /obj/item/stack/material/osmium = list(REAGENT_ID_PLATINUM), // This should be fixed someday
/obj/item/stack/material/steel = list(REAGENT_ID_IRON, REAGENT_ID_CARBON), /obj/item/stack/material/steel = list(REAGENT_ID_IRON, REAGENT_ID_CARBON),
/obj/item/stack/material/plasteel = list(REAGENT_ID_IRON, REAGENT_ID_IRON, REAGENT_ID_CARBON, REAGENT_ID_CARBON, REAGENT_ID_PLATINUM), //8 iron, 8 carbon, 4 platinum, /obj/item/stack/material/plasteel = list(REAGENT_ID_IRON, REAGENT_ID_IRON, REAGENT_ID_CARBON, REAGENT_ID_CARBON, REAGENT_ID_PLATINUM), //8 iron, 8 carbon, 4 platinum,
/obj/item/stack/material/snow = list(REAGENT_ID_WATER),
/obj/item/stack/material/sandstone = list(REAGENT_ID_SILICON, REAGENT_ID_OXYGEN), /obj/item/stack/material/sandstone = list(REAGENT_ID_SILICON, REAGENT_ID_OXYGEN),
/obj/item/stack/material/marble = list(REAGENT_ID_CALCIUM),
/obj/item/stack/material/titanium = list(REAGENT_ID_ALUMINIUM),
// Nuclear
/obj/item/stack/material/mhydrogen = list(REAGENT_ID_HYDROGEN),
/obj/item/stack/material/deuterium = list(REAGENT_ID_HYDROGEN),
/obj/item/stack/material/tritium = list(REAGENT_ID_HYDROGEN),
/obj/item/stack/material/uranium = list(REAGENT_ID_URANIUM),
/obj/item/stack/material/supermatter = list(REAGENT_ID_SUPERMATTER),
// Misc
/obj/item/stack/material/snow = list(REAGENT_ID_WATER,REAGENT_ID_ICE),
/obj/item/stack/tile/grass = list(REAGENT_ID_CARBON,REAGENT_ID_NITROGEN,REAGENT_ID_NITROGEN,REAGENT_ID_PHOSPHORUS,REAGENT_ID_PHOSPHORUS),
/obj/item/stack/material/leather = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_PROTEIN,REAGENT_ID_PROTEIN,REAGENT_ID_TRIGLYCERIDE),
/obj/item/stack/material/cloth = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_PROTEIN,REAGENT_ID_SODIUM),
/obj/item/stack/material/fiber = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_PROTEIN,REAGENT_ID_SODIUM),
/obj/item/stack/material/fur = list(REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_SULFUR,REAGENT_ID_SODIUM),
/obj/item/stack/material/algae = list(REAGENT_ID_CARBON,REAGENT_ID_NITROGEN,REAGENT_ID_NITROGEN,REAGENT_ID_PHOSPHORUS,REAGENT_ID_PHOSPHORUS),
/obj/item/stack/material/algae/ten = list(REAGENT_ID_CARBON,REAGENT_ID_NITROGEN,REAGENT_ID_NITROGEN,REAGENT_ID_PHOSPHORUS,REAGENT_ID_PHOSPHORUS), // Just spawns with 10, is the same as normal one
/obj/item/stack/material/concrete = list(REAGENT_ID_SILICATE, REAGENT_ID_CALCIUM),
/obj/item/stack/material/cardboard = list(REAGENT_ID_WOODPULP),
// Woods
/obj/item/stack/material/wood = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
/obj/item/stack/material/wood/sif = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
/obj/item/stack/material/wood/hard = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
// Hull
/obj/item/stack/material/steel/hull = list(REAGENT_ID_IRON, REAGENT_ID_CARBON),
/obj/item/stack/material/plasteel/hull = list(REAGENT_ID_IRON, REAGENT_ID_IRON, REAGENT_ID_CARBON, REAGENT_ID_CARBON, REAGENT_ID_PLATINUM),
/obj/item/stack/material/plastitanium/hull = list(REAGENT_ID_TITANIUM, REAGENT_ID_SILICON, REAGENT_ID_IRON, REAGENT_ID_CARBON, REAGENT_ID_PLATINUM),
/obj/item/stack/material/durasteel/hull = list(REAGENT_ID_IRON,REAGENT_ID_IRON,REAGENT_ID_CARBON,REAGENT_ID_CARBON,REAGENT_ID_PLATINUM),
// Glass
/obj/item/stack/material/glass = list(REAGENT_ID_SILICON), /obj/item/stack/material/glass = list(REAGENT_ID_SILICON),
/obj/item/stack/material/glass/reinforced = list(REAGENT_ID_SILICON,REAGENT_ID_SILICON,REAGENT_ID_SILICON,REAGENT_ID_IRON,REAGENT_ID_CARBON),
/obj/item/stack/material/glass/phoronglass = list(REAGENT_ID_PLATINUM, REAGENT_ID_SILICON, REAGENT_ID_SILICON, REAGENT_ID_SILICON), //5 platinum, 15 silicon, /obj/item/stack/material/glass/phoronglass = list(REAGENT_ID_PLATINUM, REAGENT_ID_SILICON, REAGENT_ID_SILICON, REAGENT_ID_SILICON), //5 platinum, 15 silicon,
/obj/item/stack/material/supermatter = list(REAGENT_ID_SUPERMATTER) /obj/item/stack/material/glass/phoronrglass = list(REAGENT_ID_SILICON,REAGENT_ID_SILICON,REAGENT_ID_SILICON,REAGENT_ID_PHORON,REAGENT_ID_PHORON),
/obj/item/stack/material/glass/titanium = list(REAGENT_ID_TITANIUM, REAGENT_ID_SILICON),
/obj/item/stack/material/glass/plastitanium = list(REAGENT_ID_TITANIUM, REAGENT_ID_SILICON, REAGENT_ID_IRON, REAGENT_ID_CARBON, REAGENT_ID_PLATINUM),
// Rods
/obj/item/stack/rods = list(REAGENT_ID_IRON, REAGENT_ID_CARBON), // 2 per sheet of steel
/obj/item/stack/material/plasteel/rebar = list(REAGENT_ID_IRON, REAGENT_ID_IRON, REAGENT_ID_CARBON, REAGENT_ID_CARBON, REAGENT_ID_PLATINUM), // Only makes 1 per sheet of plasteel!
// Logs
/obj/item/stack/material/stick = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
/obj/item/stack/material/stick/fivestack = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM), // Just spawns with 5, same as normal one
/obj/item/stack/material/log = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
/obj/item/stack/material/log/hard = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
/obj/item/stack/material/log/sif = list(REAGENT_ID_CARBON,REAGENT_ID_WOODPULP,REAGENT_ID_NITROGEN,REAGENT_ID_POTASSIUM,REAGENT_ID_SODIUM),
)) ))
GLOBAL_LIST_INIT(ore_reagents, list( //have a number of reageents divisible by REAGENTS_PER_ORE (default 20) unless you like decimals. GLOBAL_LIST_INIT(ore_reagents, list( //have a number of reageents divisible by REAGENTS_PER_ORE (default 20) unless you like decimals.
@@ -1545,6 +1573,23 @@ GLOBAL_LIST_INIT(reagent_sheets,list( // Recompressing reagents back into sheets
REAGENT_ID_SPIDEREGG = REFINERY_SINTERING_SPIDERS, REAGENT_ID_SPIDEREGG = REFINERY_SINTERING_SPIDERS,
)) ))
GLOBAL_LIST_INIT(deepore_fracking_reagents,list( // Fracking results for fluid pump
ORE_HEMATITE = list(REAGENT_ID_SILICATE,REAGENT_ID_IRON,REAGENT_ID_CARBON),
ORE_URANIUM = list(REAGENT_ID_RADIUM,REAGENT_ID_RADIUM,REAGENT_ID_CALCIUM,REAGENT_ID_PHOSPHORUS), // Doesn't produce uranium due to low use in reagents, and emp reaction
ORE_COPPER = list(REAGENT_ID_GOLD,REAGENT_ID_COPPER,REAGENT_ID_LEAD), // Commonly
ORE_GOLD = list(REAGENT_ID_GOLD,REAGENT_ID_COPPER,REAGENT_ID_LEAD), // Found
ORE_TIN = list(REAGENT_ID_GOLD,REAGENT_ID_COPPER,REAGENT_ID_LEAD), // Together
ORE_SILVER = list(REAGENT_ID_SILVER,REAGENT_ID_LEAD,REAGENT_ID_COPPER), // lead loves this one too
ORE_DIAMOND = list(REAGENT_ID_TITANIUMDIOX,REAGENT_ID_PHOSPHORUS,REAGENT_ID_SULFUR,REAGENT_ID_CARBON), // Ignius process
ORE_PHORON = list(REAGENT_ID_PHORON,REAGENT_ID_RADIUM,REAGENT_ID_PHOSPHORUS,REAGENT_ID_SULFUR), // Ignius heavymetals?
ORE_PLATINUM = list(REAGENT_ID_PLATINUM,REAGENT_ID_COPPER), // Don't have much to group it with
ORE_MHYDROGEN = list(REAGENT_ID_SILICATE,REAGENT_ID_HYDROGEN),
ORE_SAND = list(REAGENT_ID_SILICATE,REAGENT_ID_SILICON,REAGENT_ID_LITHIUM,REAGENT_ID_PHOSPHORUS,REAGENT_ID_CALCIUM,REAGENT_ID_SODIUMCHLORIDE,REAGENT_ID_CARBON), // Catch all sedimentry
ORE_CARBON = list(REAGENT_ID_SILICATE,REAGENT_ID_CARBON,REAGENT_ID_SODIUMCHLORIDE), // Salty coal
ORE_BAUXITE = list(REAGENT_ID_TITANIUMDIOX,REAGENT_ID_ALUMINIUM,REAGENT_ID_SODIUMCHLORIDE), // ore's general components and neighbours
ORE_RUTILE = list(REAGENT_ID_TITANIUMDIOX,REAGENT_ID_SILICATE,REAGENT_ID_SILICON,REAGENT_ID_SODIUMCHLORIDE) // ore's general components and neighbours
))
//List of the ammo types that can be used in game. //List of the ammo types that can be used in game.
GLOBAL_LIST_INIT(global_ammo_types, list( GLOBAL_LIST_INIT(global_ammo_types, list(
/obj/item/ammo_casing/a357 = ".357", /obj/item/ammo_casing/a357 = ".357",

View File

@@ -20,7 +20,9 @@
var/obj/item/stack/stack = O var/obj/item/stack/stack = O
if(istype(stack)) if(istype(stack))
var/list/sheet_components = GLOB.sheet_reagents[stack.type] var/list/sheet_components = GLOB.sheet_reagents[stack.type]
var/amount_to_take = max(0,min(stack.get_amount(),round(remaining_volume/REAGENTS_PER_SHEET))) // Some stacks can be made into other stacks with a multiplier. This handles that.
var/remove_amount = stack.reagents_per_sheet()
var/amount_to_take = max(0,min(stack.get_amount(),round(remaining_volume/remove_amount)))
if(amount_to_take) if(amount_to_take)
stack.use(amount_to_take) stack.use(amount_to_take)
if(QDELETED(stack)) if(QDELETED(stack))
@@ -28,9 +30,9 @@
if(islist(sheet_components)) if(islist(sheet_components))
amount_to_take = (amount_to_take/(sheet_components.len)) amount_to_take = (amount_to_take/(sheet_components.len))
for(var/i in sheet_components) for(var/i in sheet_components)
R.add_reagent(i, (amount_to_take*REAGENTS_PER_SHEET)) R.add_reagent(i, (amount_to_take*remove_amount))
else else
R.add_reagent(sheet_components, (amount_to_take*REAGENTS_PER_SHEET)) R.add_reagent(sheet_components, (amount_to_take*remove_amount))
continue continue
else if(GLOB.ore_reagents[O.type]) else if(GLOB.ore_reagents[O.type])

View File

@@ -24,7 +24,7 @@
return return
if(!isnull(O.reagents)) if(!isnull(O.reagents))
if(!(O.flags & OPENCONTAINER)) // The idea is that the scanner has to touch the reagents somehow. This is done to prevent cheesing unidentified autoinjectors. if(!(O.flags & OPENCONTAINER) && !istype(O,/obj/machinery/reagent_refinery)) // The idea is that the scanner has to touch the reagents somehow. This is done to prevent cheesing unidentified autoinjectors. Reagent refinery has ports for convenient testing!
to_chat(user, span_warning("\The [O] is sealed, and cannot be scanned by \the [src] until unsealed.")) to_chat(user, span_warning("\The [O] is sealed, and cannot be scanned by \the [src] until unsealed."))
return return

View File

@@ -461,6 +461,9 @@
if(pulledby && isturf(loc)) if(pulledby && isturf(loc))
combine_in_loc() combine_in_loc()
/obj/item/stack/proc/reagents_per_sheet()
return REAGENTS_PER_SHEET // units total of reagents when grinded
/* /*
* Recipe datum * Recipe datum
*/ */

View File

@@ -23,24 +23,6 @@
oxygen = 0 oxygen = 0
nitrogen = 0 nitrogen = 0
// Fracking results for fluid pump
var/static/list/ore_types = list(
ORE_HEMATITE = list(REAGENT_ID_SILICATE,REAGENT_ID_IRON,REAGENT_ID_CARBON),
ORE_URANIUM = list(REAGENT_ID_RADIUM,REAGENT_ID_RADIUM,REAGENT_ID_CALCIUM,REAGENT_ID_PHOSPHORUS), // Doesn't produce uranium due to low use in reagents, and emp reaction
ORE_COPPER = list(REAGENT_ID_GOLD,REAGENT_ID_COPPER,REAGENT_ID_LEAD), // Commonly
ORE_GOLD = list(REAGENT_ID_GOLD,REAGENT_ID_COPPER,REAGENT_ID_LEAD), // Found
ORE_TIN = list(REAGENT_ID_GOLD,REAGENT_ID_COPPER,REAGENT_ID_LEAD), // Together
ORE_SILVER = list(REAGENT_ID_SILVER,REAGENT_ID_LEAD,REAGENT_ID_COPPER), // lead loves this one too
ORE_DIAMOND = list(REAGENT_ID_TITANIUMDIOX,REAGENT_ID_PHOSPHORUS,REAGENT_ID_SULFUR,REAGENT_ID_CARBON), // Ignius process
ORE_PHORON = list(REAGENT_ID_PHORON,REAGENT_ID_RADIUM,REAGENT_ID_PHOSPHORUS,REAGENT_ID_SULFUR), // Ignius heavymetals?
ORE_PLATINUM = list(REAGENT_ID_PLATINUM,REAGENT_ID_COPPER), // Don't have much to group it with
ORE_MHYDROGEN = list(REAGENT_ID_SILICATE,REAGENT_ID_HYDROGEN),
ORE_SAND = list(REAGENT_ID_SILICATE,REAGENT_ID_SILICON,REAGENT_ID_LITHIUM,REAGENT_ID_PHOSPHORUS,REAGENT_ID_CALCIUM,REAGENT_ID_SODIUMCHLORIDE,REAGENT_ID_CARBON), // Catch all sedimentry
ORE_CARBON = list(REAGENT_ID_SILICATE,REAGENT_ID_CARBON,REAGENT_ID_SODIUMCHLORIDE), // Salty coal
ORE_BAUXITE = list(REAGENT_ID_TITANIUMDIOX,REAGENT_ID_ALUMINIUM,REAGENT_ID_SODIUMCHLORIDE), // ore's general components and neighbours
ORE_RUTILE = list(REAGENT_ID_TITANIUMDIOX,REAGENT_ID_SILICATE,REAGENT_ID_SILICON,REAGENT_ID_SODIUMCHLORIDE) // ore's general components and neighbours
)
/turf/simulated/floor/gas_crack/pump_reagents(var/datum/reagents/R, var/volume) /turf/simulated/floor/gas_crack/pump_reagents(var/datum/reagents/R, var/volume)
// pick random turfs in range, then use their deep ores to get some extra reagents // pick random turfs in range, then use their deep ores to get some extra reagents
var/i = 0 var/i = 0
@@ -48,15 +30,16 @@
var/turf/simulated/mineral/M = pick(orange(5,src)) var/turf/simulated/mineral/M = pick(orange(5,src))
if(!istype(M)) if(!istype(M))
return return
for(var/metal in ore_types) for(var/metal in GLOB.deepore_fracking_reagents)
if(!M.resources[metal]) if(!M.resources[metal])
return continue
var/list/ore_list = ore_types[metal] var/list/ore_list = GLOB.deepore_fracking_reagents[metal]
if(!ore_list || !ore_list.len) if(!ore_list || !ore_list.len)
return continue
if(prob(60)) if(prob(60))
var/reagent_id = pick(ore_list) var/reagent_id = pick(ore_list)
R.add_reagent(reagent_id, round(volume, 0.1)) if(reagent_id)
R.add_reagent(reagent_id, round(volume, 0.1))
/turf/simulated/floor/gas_crack/oxygen /turf/simulated/floor/gas_crack/oxygen

View File

@@ -2,18 +2,33 @@
name = MAT_STEELHULL name = MAT_STEELHULL
default_type = MAT_STEELHULL default_type = MAT_STEELHULL
/obj/item/stack/material/steel/hull/reagents_per_sheet()
return REAGENTS_PER_HULL
/obj/item/stack/material/plasteel/hull /obj/item/stack/material/plasteel/hull
name = MAT_PLASTEELHULL name = MAT_PLASTEELHULL
default_type = MAT_PLASTEELHULL default_type = MAT_PLASTEELHULL
/obj/item/stack/material/plasteel/hull/reagents_per_sheet()
return REAGENTS_PER_HULL
/obj/item/stack/material/durasteel/hull /obj/item/stack/material/durasteel/hull
name = MAT_DURASTEELHULL name = MAT_DURASTEELHULL
default_type = MAT_DURASTEELHULL default_type = MAT_DURASTEELHULL
/obj/item/stack/material/durasteel/hull/reagents_per_sheet()
return REAGENTS_PER_HULL
/obj/item/stack/material/titanium/hull /obj/item/stack/material/titanium/hull
name = MAT_TITANIUMHULL name = MAT_TITANIUMHULL
default_type = MAT_TITANIUMHULL default_type = MAT_TITANIUMHULL
/obj/item/stack/material/titanium/hull/reagents_per_sheet()
return REAGENTS_PER_HULL
/obj/item/stack/material/morphium/hull /obj/item/stack/material/morphium/hull
name = MAT_MORPHIUMHULL name = MAT_MORPHIUMHULL
default_type = MAT_MORPHIUMHULL default_type = MAT_MORPHIUMHULL
/obj/item/stack/material/morphium/hull/reagents_per_sheet()
return REAGENTS_PER_HULL

View File

@@ -70,6 +70,9 @@
..() ..()
/obj/item/stack/rods/reagents_per_sheet()
return REAGENTS_PER_ROD
/* /*
/obj/item/stack/rods/attack_self(mob/user) /obj/item/stack/rods/attack_self(mob/user)
src.add_fingerprint(user) src.add_fingerprint(user)

View File

@@ -32,6 +32,9 @@
drop_sound = 'sound/items/drop/wooden.ogg' drop_sound = 'sound/items/drop/wooden.ogg'
pickup_sound = 'sound/items/pickup/wooden.ogg' pickup_sound = 'sound/items/pickup/wooden.ogg'
/obj/item/stack/material/log/reagents_per_sheet()
return REAGENTS_PER_LOG
/obj/item/stack/material/log/sif /obj/item/stack/material/log/sif
name = MAT_SIFLOG name = MAT_SIFLOG
default_type = MAT_SIFLOG default_type = MAT_SIFLOG
@@ -78,6 +81,9 @@
pass_color = TRUE pass_color = TRUE
apply_colour = TRUE apply_colour = TRUE
/obj/item/stack/material/stick/reagents_per_sheet()
return REAGENTS_PER_ROD
/obj/item/stack/material/stick/fivestack /obj/item/stack/material/stick/fivestack
amount = 5 amount = 5
color = "#824B28" color = "#824B28"

View File

@@ -4,8 +4,9 @@
description_info = "A machine that can pump fluid from certain turfs.<br>\ description_info = "A machine that can pump fluid from certain turfs.<br>\
Water can be pumped from any body of water. Certain locations or environmental\ Water can be pumped from any body of water. Certain locations or environmental\
conditions can cause different byproducts to be produced.<br>\ conditions can cause different byproducts to be produced.<br>\
Magma or Lava can be pumped to produce mineralized fluid." Magma or Lava can be pumped to produce mineralized fluid.<br>\
Deep bore mining drills can create boreholes that can be fracked for fluids."
anchored = TRUE anchored = TRUE
density = TRUE density = TRUE
@@ -192,8 +193,8 @@
if(air.temperature <= T0C) // Uses the current air temp, instead of the turf starting temp if(air.temperature <= T0C) // Uses the current air temp, instead of the turf starting temp
R.add_reagent(REAGENT_ID_ICE, round(volume / 2, 0.1)) R.add_reagent(REAGENT_ID_ICE, round(volume / 2, 0.1))
for(var/turf/simulated/mineral/M in orange(5,src)) // Uses the turf as center instead of an unset usr for(var/turf/simulated/mineral/M in orange(5,src))
if(M.mineral && prob(40)) // v if(M.mineral && prob(40) && M.mineral.reagent) // v
R.add_reagent(M.mineral.reagent, round(volume / 5, 0.1)) // Was the turf's reagents variable not the R argument, and changed ore_reagent to M.mineral.reagent because of above change. Also nerfed amount to 1/5 instead of 1/2 R.add_reagent(M.mineral.reagent, round(volume / 5, 0.1)) // Was the turf's reagents variable not the R argument, and changed ore_reagent to M.mineral.reagent because of above change. Also nerfed amount to 1/5 instead of 1/2
/turf/simulated/floor/water/pool/pump_reagents(var/datum/reagents/R, var/volume) /turf/simulated/floor/water/pool/pump_reagents(var/datum/reagents/R, var/volume)
@@ -207,3 +208,26 @@
/turf/simulated/floor/water/contaminated/pump_reagents(var/datum/reagents/R, var/volume) /turf/simulated/floor/water/contaminated/pump_reagents(var/datum/reagents/R, var/volume)
. = ..() . = ..()
R.add_reagent(REAGENT_ID_VATSTABILIZER, round(volume / 2, 0.1)) R.add_reagent(REAGENT_ID_VATSTABILIZER, round(volume / 2, 0.1))
/turf/simulated/mineral/pump_reagents(var/datum/reagents/R, var/volume)
. = ..()
if(density)
return
if(!sand_dug)
return
var/turf/simulated/mineral/M = pick(orange(5,src))
if(!istype(M))
return
// Use nearby ores as well
if(M.mineral && M.mineral.reagent && prob(40))
R.add_reagent(M.mineral.reagent, rand(0,volume / 8))
// Pump deep reagents from deepdrill boreholes
for(var/metal in GLOB.deepore_fracking_reagents)
if(!M.resources[metal])
continue
var/list/ore_list = GLOB.deepore_fracking_reagents[metal]
if(!ore_list || !ore_list.len)
continue
var/reagent_id = pick(ore_list)
if(reagent_id && prob(60))
R.add_reagent(reagent_id, rand(0,volume / 6))

View File

@@ -8,7 +8,7 @@
idle_power_usage = 5 idle_power_usage = 5
active_power_usage = 300 active_power_usage = 300
circuit = /obj/item/circuitboard/industrial_reagent_grinder circuit = /obj/item/circuitboard/industrial_reagent_grinder
VAR_PRIVATE/limit = 50 var/static/limit = 50
VAR_PRIVATE/list/holdingitems = list() VAR_PRIVATE/list/holdingitems = list()
/obj/machinery/reagent_refinery/grinder/Initialize(mapload) /obj/machinery/reagent_refinery/grinder/Initialize(mapload)
@@ -34,7 +34,7 @@
// Insert grindables if not handled by parent proc // Insert grindables if not handled by parent proc
if(holdingitems && holdingitems.len >= limit) if(holdingitems && holdingitems.len >= limit)
to_chat(user, "The machine cannot hold anymore items.") to_chat(user, "The machine cannot hold anymore items.")
return TRUE return FALSE
// Botany/Chemistry gameplay // Botany/Chemistry gameplay
if(istype(O,/obj/item/storage/bag)) if(istype(O,/obj/item/storage/bag))
@@ -71,6 +71,8 @@
return FALSE return FALSE
// Needs to be sheet, ore, or grindable reagent containing things // Needs to be sheet, ore, or grindable reagent containing things
if(istype(O,/obj/item/tool)) // Stops messages about the wrench being unsuitable to grind
return FALSE
if(!GLOB.sheet_reagents[O.type] && !GLOB.ore_reagents[O.type] && (!O.reagents || !O.reagents.total_volume)) if(!GLOB.sheet_reagents[O.type] && !GLOB.ore_reagents[O.type] && (!O.reagents || !O.reagents.total_volume))
to_chat(user, "\The [O] is not suitable for blending.") to_chat(user, "\The [O] is not suitable for blending.")
return FALSE return FALSE
@@ -88,6 +90,18 @@
if(stat & (NOPOWER|BROKEN)) if(stat & (NOPOWER|BROKEN))
return return
// Get objects from incoming conveyors
if(holdingitems.len < limit)
for(var/D in GLOB.cardinal)
var/turf/T = get_step(src,D)
if(!T)
continue
var/obj/machinery/conveyor/C = locate() in T
if(C && !C.stat && C.operating && C.dir == GLOB.reverse_dir[D]) // If an operating conveyor points into us... Check if it's moving anything
var/obj/item/I = pick(T.contents - list(C))
if(istype(I) && conveyor_load(I))
break
if(holdingitems.len > 0 && grind_items_to_reagents(holdingitems,reagents)) if(holdingitems.len > 0 && grind_items_to_reagents(holdingitems,reagents))
//Lazy coder sound design moment. THE SEQUEL //Lazy coder sound design moment. THE SEQUEL
playsound(src, 'sound/items/poster_being_created.ogg', 50, 1) playsound(src, 'sound/items/poster_being_created.ogg', 50, 1)
@@ -109,21 +123,18 @@
var/image/dot = image(icon, icon_state = "grinder_dot_[holdingitems.len ? "on" : "off" ]") var/image/dot = image(icon, icon_state = "grinder_dot_[holdingitems.len ? "on" : "off" ]")
add_overlay(dot) add_overlay(dot)
/obj/machinery/reagent_refinery/grinder/Bumped(atom/movable/AM as mob|obj) /obj/machinery/reagent_refinery/grinder/proc/conveyor_load(atom/movable/AM as mob|obj)
. = ..()
if(!anchored)
return
if(!AM || QDELETED(AM)) if(!AM || QDELETED(AM))
return return FALSE
if(holdingitems.len >= limit) if(holdingitems.len >= limit)
return return FALSE
if(ismob(AM)) // No mob bumping YET if(ismob(AM)) // No mob bumping YET
return return FALSE
if(!GLOB.sheet_reagents[AM.type] && !GLOB.ore_reagents[AM.type] && (!AM.reagents || !AM.reagents.total_volume)) if(!GLOB.sheet_reagents[AM.type] && !GLOB.ore_reagents[AM.type] && (!AM.reagents || !AM.reagents.total_volume))
return return FALSE
AM.forceMove(src) AM.forceMove(src)
holdingitems += AM holdingitems += AM
return TRUE
/obj/machinery/reagent_refinery/grinder/examine(mob/user, infix, suffix) /obj/machinery/reagent_refinery/grinder/examine(mob/user, infix, suffix)
. = ..() . = ..()