diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index 8ca9432e142..7b7fd7a2eb3 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -50913,7 +50913,7 @@ /turf/open/misc/sandy_dirt, /area/station/maintenance/starboard/aft) "rLN" = ( -/obj/structure/safe, +/obj/structure/safe/vault, /obj/item/lazarus_injector, /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/siding/thinplating_new{ diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 91931dc296e..56237c8fea2 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -36846,7 +36846,7 @@ /turf/open/floor/iron/large, /area/station/security/processing) "jeZ" = ( -/obj/structure/safe, +/obj/structure/safe/vault, /obj/item/clothing/neck/stethoscope, /obj/item/book{ desc = "An undeniably handy book."; diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index c83c58211c6..6130743dbeb 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -25357,7 +25357,7 @@ /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat_interior) "hPf" = ( -/obj/structure/safe, +/obj/structure/safe/vault, /obj/item/clothing/head/costume/bearpelt, /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, diff --git a/_maps/map_files/KiloStation2/KiloStation2.dmm b/_maps/map_files/KiloStation2/KiloStation2.dmm index 34c1a35256f..5b1ec1757ec 100644 --- a/_maps/map_files/KiloStation2/KiloStation2.dmm +++ b/_maps/map_files/KiloStation2/KiloStation2.dmm @@ -8423,6 +8423,7 @@ name = "Security Customs Checkpoint" }, /obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs) "cQb" = ( @@ -8439,6 +8440,7 @@ name = "arrivals navigation beacon" }, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "cQt" = ( @@ -11539,7 +11541,6 @@ /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) "dNx" = ( -/obj/structure/cable, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -15158,6 +15159,7 @@ "eZL" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "fac" = ( @@ -23813,6 +23815,7 @@ /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/blue/half/contrasted, /obj/effect/turf_decal/tile/neutral, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "hIq" = ( @@ -25456,7 +25459,7 @@ "ifu" = ( /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/cobweb, -/obj/structure/safe{ +/obj/structure/safe/vault{ pixel_x = 3 }, /obj/item/book{ @@ -35744,6 +35747,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "luA" = ( @@ -36401,6 +36405,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "lFC" = ( +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "lFN" = ( @@ -37201,6 +37206,17 @@ /obj/effect/landmark/start/blueshield, /turf/open/floor/carpet/royalblack, /area/station/command/heads_quarters/captain) +"lUb" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Departure Lounge" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "departures-entrance" + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "lUq" = ( /turf/closed/wall/r_wall/rust, /area/station/service/chapel/storage) @@ -72469,7 +72485,6 @@ /turf/open/floor/grass, /area/station/security/prison/garden) "xhJ" = ( -/obj/structure/cable, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -116235,7 +116250,7 @@ wAZ cQR eMo fBh -pIl +lUb mbE iSw nXu diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 7b97da5315c..2192d36a613 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -41711,7 +41711,7 @@ /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) "oXK" = ( -/obj/structure/safe, +/obj/structure/safe/vault, /obj/item/storage/briefcase/secure/riches, /obj/item/storage/backpack/duffelbag/syndie/hitman, /obj/item/card/id/advanced/silver/reaper, diff --git a/_maps/map_files/NSSJourney/NSSJourney.dmm b/_maps/map_files/NSSJourney/NSSJourney.dmm index fffdc892162..e5b6c7470cb 100644 --- a/_maps/map_files/NSSJourney/NSSJourney.dmm +++ b/_maps/map_files/NSSJourney/NSSJourney.dmm @@ -43982,7 +43982,7 @@ /turf/open/floor/iron, /area/station/service/hydroponics/garden/abandoned) "lxv" = ( -/obj/structure/safe, +/obj/structure/safe/vault, /obj/item/clothing/head/costume/bearpelt, /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, diff --git a/_maps/map_files/NSVBlueshift/Blueshift.dmm b/_maps/map_files/NSVBlueshift/Blueshift.dmm index ba2d27ca18d..f853df30699 100644 --- a/_maps/map_files/NSVBlueshift/Blueshift.dmm +++ b/_maps/map_files/NSVBlueshift/Blueshift.dmm @@ -14715,10 +14715,14 @@ /obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver/longrange{ pixel_y = 28 }, -/obj/machinery/door/window/left/directional/east{ - name = "Mass Driver Door"; - req_access = list("ordnance") +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/disposalpipe/trunk{ + dir = 4 }, +/obj/machinery/disposal/bin, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "cLt" = ( @@ -20538,11 +20542,12 @@ /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/bar) "dTa" = ( -/obj/structure/safe, -/obj/item/storage/briefcase/secure, +/obj/structure/safe/vault, +/obj/item/storage/briefcase/secure/riches, /obj/item/storage/backpack/duffelbag/syndie/hitman, /obj/item/card/id/advanced/silver/reaper, /obj/item/lazarus_injector, +/obj/item/gun/energy/disabler, /obj/item/gun/ballistic/revolver/russian, /obj/item/ammo_box/a357, /obj/item/clothing/neck/stethoscope, @@ -20552,6 +20557,7 @@ name = "\improper A Simpleton's Guide to Safe-cracking with Stethoscopes" }, /obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "dTd" = ( @@ -21285,6 +21291,13 @@ }, /turf/open/floor/wood, /area/station/service/library) +"eag" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/disposaloutlet, +/turf/open/floor/catwalk_floor, +/area/station/science/ordnance/testlab) "eak" = ( /obj/machinery/airalarm/directional/east, /obj/structure/extinguisher_cabinet/directional/south, @@ -37216,6 +37229,7 @@ /obj/effect/turf_decal/stripes/end{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/station/science/ordnance/testlab) "hdS" = ( @@ -47680,11 +47694,11 @@ /turf/open/floor/iron, /area/station/hallway/primary/starboard) "jgT" = ( -/obj/effect/turf_decal/arrows/red{ - pixel_y = 15 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/engine/hull, -/area/space/nearstation) +/turf/open/floor/catwalk_floor, +/area/station/science/ordnance/testlab) "jgV" = ( /obj/effect/decal/cleanable/dirt{ icon_state = "dirt-flat-1" @@ -87761,7 +87775,7 @@ /turf/open/floor/wood, /area/station/medical/psychology) "qLn" = ( -/obj/effect/turf_decal/stripes/end, +/obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/station/science/ordnance/testlab) "qLp" = ( @@ -97559,6 +97573,7 @@ /obj/effect/turf_decal/stripes{ dir = 8 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/station/science/ordnance/testlab) "sFt" = ( @@ -232983,10 +232998,10 @@ lLn cLr eQK lLn +eQK +eQK +eQK lLn -lLn -iZl -jgT bTG iZl wfG @@ -233237,13 +233252,13 @@ ulx ulx ulx lLn -nGo +jgT hdL sFo qLn +eag +nGo iuP -iZl -iZl bTG iZl dwJ @@ -233497,10 +233512,10 @@ lLn lLn lLn lLn +eQK +eQK +eQK lLn -lLn -iZl -jgT bTG iZl wfG diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index fdbdb6939f2..78e9bbc0fa0 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -77450,6 +77450,8 @@ "tVp" = ( /obj/machinery/light_switch/directional/north, /obj/machinery/status_display/ai/directional/east, +/obj/structure/table/reinforced/titaniumglass, +/obj/item/piggy_bank/vault, /turf/open/floor/circuit, /area/station/ai_monitored/command/nuke_storage) "tVq" = ( @@ -80650,6 +80652,10 @@ /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, /obj/machinery/status_display/ai/directional/west, +/obj/structure/table/reinforced/titaniumglass, +/obj/item/maneki_neko{ + pixel_y = 4 + }, /turf/open/floor/circuit, /area/station/ai_monitored/command/nuke_storage) "uNp" = ( diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm index 25f40d7115f..6e23381a6af 100644 --- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm +++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm @@ -26755,12 +26755,20 @@ /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port) "hIp" = ( -/obj/structure/safe, +/obj/structure/safe/vault, +/obj/item/storage/briefcase/secure/riches, /obj/item/storage/backpack/duffelbag/syndie/hitman, /obj/item/card/id/advanced/silver/reaper, /obj/item/lazarus_injector, -/obj/item/gun/ballistic/automatic/pistol/deagle/gold, -/obj/item/stack/spacecash/c5000, +/obj/item/gun/energy/disabler, +/obj/item/gun/ballistic/revolver/russian, +/obj/item/ammo_box/a357, +/obj/item/clothing/neck/stethoscope, +/obj/item/book{ + desc = "An undeniably handy book."; + icon_state = "bookknock"; + name = "\improper A Simpleton's Guide to Safe-cracking with Stethoscopes" + }, /obj/effect/turf_decal/bot, /turf/open/floor/engine, /area/station/ai_monitored/command/nuke_storage) diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index f824546e797..1e485c5865a 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -44640,7 +44640,7 @@ /turf/open/floor/iron, /area/station/construction/mining/aux_base) "oQO" = ( -/obj/structure/safe, +/obj/structure/safe/vault, /obj/item/clothing/head/costume/bearpelt, /obj/item/gun/ballistic/revolver/russian, /obj/item/ammo_box/a357, diff --git a/code/game/objects/items/piggy_bank.dm b/code/game/objects/items/piggy_bank.dm index 012ff91b021..8d50e8a39e8 100644 --- a/code/game/objects/items/piggy_bank.dm +++ b/code/game/objects/items/piggy_bank.dm @@ -4,7 +4,7 @@ */ /obj/item/piggy_bank name = "piggy bank" - desc = "A pig-shaped money container made of porkelain, oink. Do not throw." //pun very intended. + desc = "A pig-shaped money container made of porkelain, oink. Do not throw." //pun very intended. icon = 'icons/obj/fluff/general.dmi' icon_state = "piggy_bank" max_integrity = 8 @@ -20,6 +20,8 @@ var/datum/callback/persistence_cb ///How much dosh can this piggy bank hold. var/maximum_value = PAYCHECK_COMMAND * 20 + ///A limit to much dosh can you put inside this piggy bank each round. If 0, there's no limit. Only applies to persistent piggies. + var/maximum_savings_per_shift = 0 ///How much dosh this piggy bank spawns with. var/initial_value = 0 @@ -49,6 +51,9 @@ if(initial_value && initial_value + calculate_dosh_amount() <= maximum_value) new /obj/item/holochip(src, initial_value) + if(maximum_savings_per_shift) + maximum_value = calculate_dosh_amount() + maximum_savings_per_shift + /obj/item/piggy_bank/proc/save_cash() SSpersistence.save_piggy_bank(src) @@ -127,3 +132,17 @@ /obj/item/piggy_bank/museum/Initialize(mapload) . = ..() AddComponent(/datum/component/areabound) //do not steal. + +/obj/item/piggy_bank/vault + name = "vault piggy bank" + desc = "A pig-shaped money container made of porkelain, containing the station's emergency funds carried between shifts, oink. Do not throw." + persistence_id = "vault_piggy" + greyscale_colors = COLOR_LIGHT_ORANGE + maximum_value = PAYCHECK_COMMAND * 33 + initial_value = PAYCHECK_CREW //it takes about 66 shifts for it to hit its max value on its own. + maximum_savings_per_shift = PAYCHECK_COMMAND * 16 //and 2 if you actively use it. + +/obj/item/piggy_bank/vault/Initialize(mapload) + . = ..() + //one piggy bank should exist, preferibly inside the vault's safe. + REGISTER_REQUIRED_MAP_ITEM(1, 1) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index e0217ad9f58..bcc9d138695 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -249,5 +249,13 @@ FLOOR SAFES . = ..() AddElement(/datum/element/undertile) +///Special safe for the station's vault. Not explicitly required, but the piggy bank inside it is. +/obj/structure/safe/vault + +/obj/structure/safe/vault/Initialize(mapload) + . = ..() + var/obj/item/piggy_bank/vault/piggy = new(src) + space += piggy.w_class + #undef SOUND_CHANCE #undef BROKEN_THRESHOLD diff --git a/code/modules/unit_tests/required_map_items.dm b/code/modules/unit_tests/required_map_items.dm index 5cbef645391..73499c83b6d 100644 --- a/code/modules/unit_tests/required_map_items.dm +++ b/code/modules/unit_tests/required_map_items.dm @@ -21,6 +21,7 @@ expected_types += /mob/living/carbon/human/species/monkey/punpun expected_types += /obj/machinery/computer/communications expected_types += /obj/machinery/drone_dispenser + expected_types += /obj/item/piggy_bank/vault /datum/unit_test/required_map_items/Run() setup_expected_types()