Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
3c7260c
yeah
cowbot92 Jul 11, 2024
777a68c
yes
cowbot92 Jul 12, 2024
19fddf8
off
cowbot92 Jul 12, 2024
55b8b0a
e
cowbot92 Jul 12, 2024
ee6adbe
e
cowbot92 Jul 12, 2024
567d10b
alt title
cowbot92 Jul 12, 2024
99513c6
ok
cowbot92 Jul 12, 2024
a3723bf
Box
neeshacark Jul 12, 2024
1f0705d
well they need a fucking door dont they cark
neeshacark Jul 12, 2024
821ea70
e
neeshacark Jul 12, 2024
4cf3445
Merge branch 'yogstation13:master' into YogsJobackroomsJob
cowbot92 Jul 12, 2024
a5a3038
fix portal
Moltijoe Jul 12, 2024
526a8af
job b gone
cowbot92 Jul 12, 2024
f92a23a
Merge branch 'YogsJobackroomsJob' of https://github.com/cowbot92/Yogs…
cowbot92 Jul 12, 2024
65b6eca
Merge pull request #2 from neeshacark/fdmm-patch-19148834-neeshacark
cowbot92 Jul 12, 2024
f3ba4dc
map uopdate
cowbot92 Jul 12, 2024
7831633
Update backrooms.dm
Moltijoe Jul 12, 2024
9ae2721
adds random anomaly core spawners
cowbot92 Jul 14, 2024
3078509
adds gold
cowbot92 Jul 14, 2024
a7b980b
ye
cowbot92 Jul 14, 2024
19652ae
ups limit
cowbot92 Jul 14, 2024
fe96cbf
updates prices
cowbot92 Jul 14, 2024
9d17eb4
update
cowbot92 Jul 14, 2024
3c53057
u
cowbot92 Jul 14, 2024
c4ed048
spreite change
cowbot92 Jul 14, 2024
a36dfbf
e
cowbot92 Jul 15, 2024
3d7e2bd
Update code/datums/mapgen/dungeon_generators/maintenance_generator/ma…
cowbot92 Jul 15, 2024
c35882b
psuh it
cowbot92 Jul 15, 2024
d216036
Merge branch 'YogsJobackroomsJob' of https://github.com/cowbot92/Yogs…
cowbot92 Jul 15, 2024
7e9c940
Merge remote-tracking branch 'upstream/master' into YogsJobackroomsJob
cowbot92 Jul 15, 2024
ec05835
more rooms
cowbot92 Jul 15, 2024
9a148f4
add portals to other maps
cowbot92 Jul 15, 2024
038d897
AAAAAAAAAA
neeshacark Jul 16, 2024
34e9f46
e
neeshacark Jul 16, 2024
f94392c
Merge pull request #3 from neeshacark/fdmm-patch-58865673-neeshacark
cowbot92 Jul 16, 2024
f85cdf1
Merge remote-tracking branch 'upstream/master' into YogsJobackroomsJob
cowbot92 Jul 18, 2024
7fac3dd
lasgun b gone
cowbot92 Jul 19, 2024
b56010f
reducto
cowbot92 Jul 19, 2024
ffe466d
Merge remote-tracking branch 'upstream/master' into YogsJobackroomsJob
cowbot92 Jul 23, 2024
27141d5
Merge remote-tracking branch 'upstream/master' into YogsJobackroomsJob
cowbot92 Jul 26, 2024
30cb3ac
Merge remote-tracking branch 'upstream/master' into YogsJobackroomsJob
cowbot92 Aug 8, 2024
2ed5c10
updates mapping
cowbot92 Aug 8, 2024
989d703
remove
cowbot92 Aug 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion _maps/map_files/AsteroidStation/AsteroidStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -26175,6 +26175,10 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"hpK" = (
/obj/effect/spawner/backrooms_portal,
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"hqn" = (
/obj/structure/table/wood,
/obj/effect/spawner/lootdrop/randomdrink,
Expand Down Expand Up @@ -94201,7 +94205,7 @@ aJI
aZs
xga
xIK
hSk
hpK
dCg
gBO
aZs
Expand Down
1 change: 1 addition & 0 deletions _maps/map_files/DonutStation/DonutStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -18388,6 +18388,7 @@
c_tag = "Cargo - Disposals Office";
dir = 8
},
/obj/effect/spawner/backrooms_portal,
/turf/open/floor/plasteel,
/area/quartermaster/sorting)
"hBq" = (
Expand Down
1 change: 1 addition & 0 deletions _maps/map_files/GaxStation/GaxStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -33365,6 +33365,7 @@
"qcV" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small,
/obj/effect/spawner/backrooms_portal,
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"qcW" = (
Expand Down
1 change: 1 addition & 0 deletions _maps/map_files/IceMeta/IceMeta.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -71152,6 +71152,7 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/backrooms_portal,
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"ute" = (
Expand Down
7 changes: 6 additions & 1 deletion _maps/map_files/YogStation/YogStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -57214,6 +57214,11 @@
/obj/machinery/teleport/station,
/turf/open/floor/plating,
/area/teleporter)
"rGx" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/backrooms_portal,
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"rHf" = (
/turf/open/floor/engine/vacuum,
/area/engine/atmos/mix)
Expand Down Expand Up @@ -96611,7 +96616,7 @@ aTD
aPG
bbq
gjl
baS
rGx
hFo
baS
baS
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/dcs/signals/signals_global.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,5 @@
#define COMSIG_STARLIGHT_COLOR_CHANGED "!starlight_color_changed"
/// Global signal sent when darkspawns ascend: (No arguments)
#define COMSIG_DARKSPAWN_ASCENSION "!darkspawn_ascension"
/// Global signal sent when the backrooms finishes initailizing: (No arguments)
#define COMSIG_BACKROOMS_INITIALIZE "!backrooms_initialize"
121 changes: 77 additions & 44 deletions code/controllers/subsystem/backrooms.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@ SUBSYSTEM_DEF(backrooms)
var/datum/map_generator/dungeon_generator/backrooms_generator
var/datum/generator_theme/picked_theme = /datum/generator_theme

//associative list of objects and how much they sell for
var/list/golden_loot = list(
/obj/item/statuebust = 1000,
/obj/item/reagent_containers/food/snacks/urinalcake = 1000,
/obj/item/bigspoon = 4000,
/obj/item/reagent_containers/food/snacks/burger/rat = 1200,
/obj/item/extinguisher = 2500,
/obj/item/toy/plush/lizard/azeel = 5000
)

/datum/controller/subsystem/backrooms/Initialize(timeofday)
#ifdef LOWMEMORYMODE
return SS_INIT_NO_NEED
Expand All @@ -16,8 +26,8 @@ SUBSYSTEM_DEF(backrooms)

pick_theme()
generate_backrooms()
delete_beacons()
//spawn_anomalies()
SEND_GLOBAL_SIGNAL(COMSIG_BACKROOMS_INITIALIZE)
spawn_loot()
return SS_INIT_SUCCESS

/datum/controller/subsystem/backrooms/proc/pick_theme()
Expand Down Expand Up @@ -58,58 +68,81 @@ SUBSYSTEM_DEF(backrooms)
var/turf/wall = current_turf.place_on_top(border, flags = CHANGETURF_DEFER_CHANGE | CHANGETURF_IGNORE_AIR)
wall.resistance_flags |= INDESTRUCTIBLE //make the wall indestructible

addtimer(CALLBACK(src, PROC_REF(generate_exit)), 1 MINUTES)

/datum/controller/subsystem/backrooms/proc/delete_beacons()
var/list/zlevel = SSmapping.levels_by_trait(ZTRAIT_PROCEDURAL_MAINTS)
for(var/obj/item/beacon/bacon as anything in GLOB.teleportbeacons)
if(bacon.z in zlevel) //if the beacon is in the backrooms, delete it
qdel(bacon)
/datum/controller/subsystem/backrooms/proc/spawn_loot()
var/backrooms_level = SSmapping.levels_by_trait(ZTRAIT_PROCEDURAL_MAINTS)
if(!LAZYLEN(backrooms_level))
return
var/number = rand(20, 50)
var/turf/destination
var/item_path
var/value
for(var/i in 1 to number)
destination = find_safe_turf(zlevels = backrooms_level, dense_atoms = FALSE)
item_path = pick(golden_loot)
value = golden_loot[item_path]

var/obj/item/thing = new item_path(destination) //spawn the thing and make it gold
thing.AddComponent(/datum/component/valuable, value)

////////////////////////////////////////////////////////////////////////////////////
//------------------------------Exit related things-------------------------------//
//-------------------------------Valuable items-----------------------------------//
////////////////////////////////////////////////////////////////////////////////////
/datum/controller/subsystem/backrooms/proc/generate_exit()
var/list/backrooms_level = SSmapping.levels_by_trait(ZTRAIT_PROCEDURAL_MAINTS)
if(LAZYLEN(backrooms_level))
var/turf/way_out = find_safe_turf(zlevels = backrooms_level, dense_atoms = FALSE)
new /obj/effect/portal/permanent/one_way/backrooms(way_out)

/obj/effect/portal/permanent/one_way/backrooms/get_link_target_turf()
var/list/valid_lockers = typecacheof(typesof(/obj/structure/closet) - typesof(/obj/structure/closet/body_bag)\
- typesof(/obj/structure/closet/secure_closet) - typesof(/obj/structure/closet/cabinet)\
- typesof(/obj/structure/closet/cardboard) \
- typesof(/obj/structure/closet/supplypod) - typesof(/obj/structure/closet/stasis)\
- typesof(/obj/structure/closet/abductor) - typesof(/obj/structure/closet/bluespace), only_root_path = TRUE) //stolen from bluespace lockers

var/list/lockers_list = list()
for(var/obj/structure/closet/L in GLOB.lockers)
if(!is_station_level(L.z))
continue
if(!is_type_in_typecache(L, valid_lockers))
continue
if(L.opened)
continue
lockers_list += L
var/obj/structure/closet/exit = pick(lockers_list)
if(!exit)
exit = new(get_safe_random_station_turf())
return get_turf(exit)

/obj/effect/portal/permanent/one_way/backrooms/teleport(atom/movable/M, force)
. = ..()
if(.)
var/obj/structure/closet/end = locate() in get_turf(M)
if(end)
M.forceMove(end) //get in the locker, nerd
/datum/export/backrooms
//cost is irrelevant because we overwrite the proc
unit_name = "golden object"
export_types = list(/obj/item) //sell any object so long as it has the component

/datum/export/backrooms/applies_to(obj/O, allowed_categories = NONE, apply_elastic = TRUE)
var/datum/component/valuable/value = O.GetComponent(/datum/component/valuable)
if(!value || !istype(value))
return FALSE
return ..()

/datum/export/backrooms/get_cost(obj/O, allowed_categories = NONE, apply_limit = TRUE)
var/amount = get_amount(O)
var/datum/component/valuable/value = O.GetComponent(/datum/component/valuable)
if(value && istype(value))
return round(value.cost * amount)
return 0


/datum/component/valuable
///how much the item is worth
var/cost

/datum/component/valuable/Initialize(cost)
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
src.cost = cost

/datum/component/valuable/RegisterWithParent()
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
if(isitem(parent))
var/obj/item/goldplate = parent
goldplate.add_atom_colour("#ffd700", FIXED_COLOUR_PRIORITY)

/datum/component/valuable/UnregisterFromParent()
UnregisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))

/datum/component/valuable/proc/on_examine(atom/eaten_light, mob/examiner, list/examine_text)
SIGNAL_HANDLER
examine_text += span_notice("This looks valuable, it could probably be sold for a lot.")
return NONE

////////////////////////////////////////////////////////////////////////////////////
//----------------------------Entrance and exit portal----------------------------//
////////////////////////////////////////////////////////////////////////////////////
/obj/effect/portal/permanent/backrooms
icon_state = "wooden_tv"
icon = 'icons/obj/computer.dmi'
icon_state = "television"

/obj/effect/spawner/backrooms_portal
name = "backrooms two way portal spawner"

/obj/effect/spawner/backrooms_portal/Initialize(mapload)
RegisterSignal(SSdcs, COMSIG_BACKROOMS_INITIALIZE, PROC_REF(spawn_portals))

/obj/effect/spawner/backrooms_portal/proc/spawn_portals()
var/backrooms_level = SSmapping.levels_by_trait(ZTRAIT_PROCEDURAL_MAINTS)
if(LAZYLEN(backrooms_level))
var/turf/way_out = find_safe_turf(zlevels = backrooms_level, dense_atoms = FALSE)
Expand Down
Loading