From dbe8aefea983ba7afd43cdec0ee26695e579eaba Mon Sep 17 00:00:00 2001 From: Kocma-san <112967882+Kocma-san@users.noreply.github.com> Date: Fri, 4 Jul 2025 23:36:30 +0700 Subject: [PATCH] Free photocopier is now really free (#91894) --- _maps/map_files/generic/CentCom.dmm | 162 +++++++++++++------------- code/modules/paperwork/photocopier.dm | 22 ++-- 2 files changed, 94 insertions(+), 90 deletions(-) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index af1ff676467..cc9bd8fb3e3 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -5,6 +5,10 @@ "ad" = ( /turf/open/space, /area/space) +"ae" = ( +/obj/machinery/photocopier/gratis/prebuilt, +/turf/open/floor/iron/grimy, +/area/centcom/central_command_areas/briefing) "ak" = ( /obj/item/kirbyplants/organic/plant21, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ @@ -428,6 +432,33 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/control) +"bY" = ( +/obj/machinery/button/door/indestructible{ + id = "CCsec3"; + name = "CC Shutter 3 Control"; + pixel_y = 24 + }, +/obj/machinery/button/door/indestructible{ + id = "CCcustoms2"; + name = "CC Shutter 2 Control"; + pixel_x = 9; + pixel_y = 32 + }, +/obj/machinery/button/door/indestructible{ + id = "CCsec1"; + name = "CC Shutter 1 Control"; + pixel_y = 40 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/button/door/indestructible{ + id = "CCsec4"; + name = "CC Shutter 4 Control"; + pixel_x = -9; + pixel_y = 32 + }, +/obj/machinery/photocopier/gratis/prebuilt, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/control) "bZ" = ( /obj/effect/turf_decal/tile/green, /obj/effect/light_emitter/thunderdome, @@ -1163,6 +1194,16 @@ /obj/effect/light_emitter/thunderdome, /turf/open/floor/iron, /area/centcom/tdome/arena) +"fg" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/barman_recipes, +/obj/item/reagent_containers/cup/glass/shaker, +/obj/item/rag, +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark, +/area/centcom/tdome/observation) "fh" = ( /obj/item/kirbyplants/organic/plant22, /obj/effect/turf_decal/tile/green/half/contrasted, @@ -1200,6 +1241,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/centcom/central_command_areas/evacuation) +"fu" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/item/weldingtool/experimental, +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron, +/area/centcom/central_command_areas/admin) "fw" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, @@ -1253,6 +1302,16 @@ }, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/evacuation/ship) +"fJ" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/smooth_large, +/area/centcom/central_command_areas/evacuation/ship) "fM" = ( /obj/structure/filingcabinet/medical, /obj/machinery/firealarm/directional/west, @@ -1572,33 +1631,6 @@ /obj/machinery/griddle, /turf/open/floor/iron/dark, /area/centcom/tdome/observation) -"hw" = ( -/obj/machinery/photocopier/prebuilt, -/obj/machinery/button/door/indestructible{ - id = "CCsec3"; - name = "CC Shutter 3 Control"; - pixel_y = 24 - }, -/obj/machinery/button/door/indestructible{ - id = "CCcustoms2"; - name = "CC Shutter 2 Control"; - pixel_x = 9; - pixel_y = 32 - }, -/obj/machinery/button/door/indestructible{ - id = "CCsec1"; - name = "CC Shutter 1 Control"; - pixel_y = 40 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/button/door/indestructible{ - id = "CCsec4"; - name = "CC Shutter 4 Control"; - pixel_x = -9; - pixel_y = 32 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/control) "hz" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -3699,6 +3731,13 @@ /obj/effect/mapping_helpers/airlock/access/all/admin/captain, /turf/open/floor/iron, /area/centcom/central_command_areas/prison) +"qM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/photocopier/gratis/prebuilt, +/turf/open/floor/iron, +/area/centcom/central_command_areas/supply) "qO" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -4570,6 +4609,14 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/evacuation) +"uK" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/iron/smooth_large, +/area/centcom/central_command_areas/evacuation/ship) "uM" = ( /obj/machinery/chem_master/condimaster{ name = "HoochMaster 2000" @@ -4939,16 +4986,6 @@ /obj/structure/flora/bush/pointy/style_random, /turf/open/floor/grass, /area/centcom/tdome/administration) -"wk" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/oil, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/smooth_large, -/area/centcom/central_command_areas/evacuation/ship) "wl" = ( /obj/machinery/modular_computer/preset/id/centcom{ dir = 1 @@ -5559,14 +5596,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/tdome/observation) -"za" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/iron/smooth_large, -/area/centcom/central_command_areas/evacuation/ship) "zb" = ( /obj/machinery/computer/records/medical{ dir = 4 @@ -6100,14 +6129,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin) -"Bm" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/item/weldingtool/experimental, -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron, -/area/centcom/central_command_areas/admin) "Bo" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -6874,10 +6895,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/centcom/tdome/administration) -"EU" = ( -/obj/machinery/photocopier/prebuilt, -/turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/briefing) "EV" = ( /obj/structure/table/wood, /obj/machinery/microwave{ @@ -7063,13 +7080,6 @@ /obj/effect/light_emitter/thunderdome, /turf/closed/indestructible/fakeglass, /area/centcom/tdome/observation) -"Gd" = ( -/obj/machinery/photocopier/prebuilt, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/centcom/central_command_areas/supply) "Gf" = ( /obj/machinery/firealarm/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump{ @@ -9581,16 +9591,6 @@ /obj/item/stack/sheet/mineral/plasma/five, /turf/open/floor/iron/smooth_edge, /area/centcom/central_command_areas/evacuation/ship) -"Tf" = ( -/obj/structure/table/wood, -/obj/item/book/manual/wiki/barman_recipes, -/obj/item/reagent_containers/cup/glass/shaker, -/obj/item/rag, -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/centcom/tdome/observation) "Tg" = ( /obj/item/storage/briefcase{ pixel_x = -3; @@ -36394,7 +36394,7 @@ aa KH Lt KK -wk +fJ Qt Lk cP @@ -41276,7 +41276,7 @@ aa aa Lt fQ -za +uK MX DL ep @@ -47399,7 +47399,7 @@ On Zf Zf On -Bm +fu Hz Hz Hz @@ -47925,7 +47925,7 @@ wz qR Rd eF -EU +ae TE az eF @@ -52533,7 +52533,7 @@ kj kj nm iF -Gd +qM iR oJ lo @@ -53829,7 +53829,7 @@ Za tK gL io -hw +bY uc kl xV @@ -57200,7 +57200,7 @@ JV dG ym TV -Tf +fg QC dj Mf diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index cd6ead98d68..1801a23b155 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -79,12 +79,16 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) var/mob/living/ass /// A reference to the toner cartridge that's inserted into the copier. Null if there is no cartridge. var/obj/item/toner/toner_cartridge + /// Type path of toner this photocopier should starts with. Null if he should start without it. + var/obj/item/toner/starting_toner /// How many copies will be printed with one click of the "copy" button. var/num_copies = 1 /// Used with photos. Determines if the copied photo will be in greyscale or color. var/color_mode = PHOTO_COLOR /// Indicates whether the printer is currently busy copying or not. var/busy = FALSE + /// How much does it cost to use this photocopier. + var/usage_cost = PHOTOCOPIER_FEE /// Variable that holds a reference to any object supported for photocopying inside the photocopier var/obj/object_copy /// Variable for the UI telling us how many copies are in the queue. @@ -111,12 +115,9 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) ) /obj/machinery/photocopier/prebuilt + starting_toner = /obj/item/toner starting_paper = 30 -/obj/machinery/photocopier/prebuilt/Initialize(mapload) - toner_cartridge = new(src) - return ..() - /obj/machinery/photocopier/get_save_vars() . = ..() . += NAMEOF(src, paper_stack) @@ -128,10 +129,12 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) AddElement(/datum/element/elevation, pixel_shift = 8) //enough to look like your bums are on the machine. if(starting_paper) paper_stack[created_paper] = starting_paper + if(starting_toner) + toner_cartridge = new starting_toner(src) /// Simply adds the necessary components for this to function. /obj/machinery/photocopier/proc/setup_components() - AddComponent(/datum/component/payment, PHOTOCOPIER_FEE, SSeconomy.get_dep_account(ACCOUNT_CIV), PAYMENT_CLINICAL) + AddComponent(/datum/component/payment, usage_cost, SSeconomy.get_dep_account(ACCOUNT_CIV), PAYMENT_CLINICAL) /obj/machinery/photocopier/RefreshParts() . = ..() @@ -420,7 +423,7 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) if(get_paper_count(created_paper) < paper_use * copies_amount) copies_amount = FLOOR(get_paper_count(created_paper) / paper_use, 1) error_message = span_warning("An error message flashes across \the [src]'s screen: \"Not enough paper to perform [copies_amount >= 1 ? "full " : ""]operation.\"") - if(!(obj_flags & EMAGGED) && (copies_amount > 0) && (attempt_charge(src, user, (copies_amount - 1) * PHOTOCOPIER_FEE) & COMPONENT_OBJ_CANCEL_CHARGE)) + if(!(obj_flags & EMAGGED) && (copies_amount > 0) && (attempt_charge(src, user, (copies_amount - 1) * usage_cost) & COMPONENT_OBJ_CANCEL_CHARGE)) copies_amount = 0 error_message = span_warning("An error message flashes across \the [src]'s screen: \"Failed to charge bank account. Aborting.\"") @@ -853,10 +856,11 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) /// Subtype of photocopier that is free to use. /obj/machinery/photocopier/gratis desc = "Does the same important paperwork, but it's free to use! The best type of free." + usage_cost = 0 // it's free! no charge! very cool and gratis-pilled. -/obj/machinery/photocopier/gratis/setup_components() - // it's free! no charge! very cool and gratis-pilled. - AddComponent(/datum/component/payment, 0, SSeconomy.get_dep_account(ACCOUNT_CIV), PAYMENT_CLINICAL) +/obj/machinery/photocopier/gratis/prebuilt + starting_toner = /obj/item/toner + starting_paper = 30 /* * Toner cartridge