Files
Bubberstation/code/modules/cargo/exports/large_objects.dm
SkyratBot e6a6e74d40 [MIRROR] Fixes coffin's export values to what they actually should be [MDB IGNORE] (#14483)
* Fixes coffin's export values to what they actually should be (#67931)

* Adds coffins to crates' exclude_types.

Adds coffins to crates' exclude_types.

* Updates comment

Updates a years old comment with the current economy prices.

* Fixes coffin's export values to what they actually should be

Co-authored-by: Pepsilawn <reisenrui@gmail.com>
2022-06-24 21:02:15 +01:00

156 lines
5.8 KiB
Plaintext

/datum/export/large/crate
cost = CARGO_CRATE_VALUE
k_elasticity = 0
unit_name = "crate"
export_types = list(/obj/structure/closet/crate)
exclude_types = list(
/obj/structure/closet/crate/coffin,
/obj/structure/closet/crate/large,
/obj/structure/closet/crate/mail,
/obj/structure/closet/crate/wooden,
)
/datum/export/large/crate/total_printout(datum/export_report/ex, notes = TRUE) // That's why a goddamn metal crate costs that much.
. = ..()
if(. && notes)
. += " Thanks for participating in Nanotrasen Crates Recycling Program."
/datum/export/large/crate/wooden
cost = CARGO_CRATE_VALUE/5
unit_name = "large wooden crate"
export_types = list(/obj/structure/closet/crate/large)
exclude_types = list()
/datum/export/large/crate/wooden/ore
unit_name = "ore box"
export_types = list(/obj/structure/ore_box)
/datum/export/large/crate/wood
cost = CARGO_CRATE_VALUE * 0.48
unit_name = "wooden crate"
export_types = list(/obj/structure/closet/crate/wooden)
exclude_types = list()
/datum/export/large/crate/coffin
cost = CARGO_CRATE_VALUE/2 //50 wooden crates cost 800 credits, and you can make 10 coffins in seconds with those planks. Each coffin selling for 100 means you can make a net gain of 200 credits for wasting your time making coffins.
unit_name = "coffin"
export_types = list(/obj/structure/closet/crate/coffin)
/datum/export/large/reagent_dispenser
cost = CARGO_CRATE_VALUE * 0.5 // +0-400 depending on amount of reagents left
var/contents_cost = CARGO_CRATE_VALUE * 0.8
/datum/export/large/reagent_dispenser/get_cost(obj/O)
var/obj/structure/reagent_dispensers/D = O
var/ratio = D.reagents.total_volume / D.reagents.maximum_volume
return ..() + round(contents_cost * ratio)
/datum/export/large/reagent_dispenser/water
unit_name = "watertank"
export_types = list(/obj/structure/reagent_dispensers/watertank)
contents_cost = CARGO_CRATE_VALUE * 0.4
/datum/export/large/reagent_dispenser/fuel
unit_name = "fueltank"
export_types = list(/obj/structure/reagent_dispensers/fueltank)
/datum/export/large/reagent_dispenser/beer
unit_name = "beer keg"
contents_cost = CARGO_CRATE_VALUE * 3.5
export_types = list(/obj/structure/reagent_dispensers/beerkeg)
/datum/export/large/pipedispenser
cost = CARGO_CRATE_VALUE * 2.5
unit_name = "pipe dispenser"
export_types = list(/obj/machinery/pipedispenser)
/datum/export/large/emitter
cost = CARGO_CRATE_VALUE * 2.75
unit_name = "emitter"
export_types = list(/obj/machinery/power/emitter)
/datum/export/large/field_generator
cost = CARGO_CRATE_VALUE * 2.75
unit_name = "field generator"
export_types = list(/obj/machinery/field/generator)
/datum/export/large/tesla_coil
cost = CARGO_CRATE_VALUE * 2.25
unit_name = "tesla coil"
export_types = list(/obj/machinery/power/energy_accumulator/tesla_coil)
/datum/export/large/supermatter
cost = CARGO_CRATE_VALUE * 16
unit_name = "supermatter shard"
export_types = list(/obj/machinery/power/supermatter_crystal/shard)
/datum/export/large/grounding_rod
cost = CARGO_CRATE_VALUE * 1.2
unit_name = "grounding rod"
export_types = list(/obj/machinery/power/energy_accumulator/grounding_rod)
/datum/export/large/iv
cost = CARGO_CRATE_VALUE * 0.25
unit_name = "iv drip"
export_types = list(/obj/machinery/iv_drip)
/datum/export/large/barrier
cost = CARGO_CRATE_VALUE * 0.25
unit_name = "security barrier"
export_types = list(/obj/item/grenade/barrier, /obj/structure/barricade/security)
/**
* Gas canister exports.
* I'm going to put a quick aside here as this has been a pain to balance for several years now, and I'd like to at least break how to keep gas exports tame.
* So: Gasses are sold in canisters below, which have a variable amount of maximum pressure before they start to break. The largest of which is 9.2e13 kPa.
* This means we can determine a theoretical maximum value for gas sale prices using the ideal gas laws, as we know we have a minimum gas temperature of 2.7 kelvin.
*
* Additional note on base value. Gasses are soft capped to limit how much they're worth at large quantities, and time and time again players will find new ways to break your gasses.
* so please, *PLEASE* try not to go too much further past 10.
* * AUTHORS NOTE: This means the theoretical, insane madman number of moles of a single gas in a can sits at a horrifying 4,098,150,709.4 moles.
* * Use this as you will, and when someone makes a quinquadrillion credits using gas exports, use these metrics as a way to balance the bejesus out of them.
* * For more information, see code\modules\atmospherics\machinery\portable\canister.dm.
*/
/datum/export/large/gas_canister
cost = CARGO_CRATE_VALUE * 0.05 //Base cost of canister. You get more for nice gases inside.
unit_name = "Gas Canister"
export_types = list(/obj/machinery/portable_atmospherics/canister)
k_elasticity = 0.00033
/datum/export/large/gas_canister/get_cost(obj/O)
var/obj/machinery/portable_atmospherics/canister/C = O
var/worth = cost
var/datum/gas_mixture/canister_mix = C.return_air()
var/canister_gas = canister_mix.gases
var/list/gases_to_check = list(
/datum/gas/bz,
/datum/gas/nitrium,
/datum/gas/hypernoblium,
/datum/gas/miasma,
/datum/gas/tritium,
/datum/gas/pluoxium,
/datum/gas/freon,
/datum/gas/hydrogen,
/datum/gas/healium,
/datum/gas/proto_nitrate,
/datum/gas/zauker,
/datum/gas/helium,
/datum/gas/antinoblium,
/datum/gas/halon,
)
for(var/gasID in gases_to_check)
canister_mix.assert_gas(gasID)
if(canister_gas[gasID][MOLES] > 0)
worth += get_gas_value(gasID, canister_gas[gasID][MOLES])
canister_mix.garbage_collect()
return worth
/datum/export/large/gas_canister/proc/get_gas_value(datum/gas/gasType, moles)
var/baseValue = initial(gasType.base_value)
return round((baseValue/k_elasticity) * (1 - NUM_E**(-1 * k_elasticity * moles)))