Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit 4df26fe

Browse files
committed
TGS Test Merge (#22353)
2 parents 2257d2e + 989d703 commit 4df26fe

File tree

11 files changed

+322
-54
lines changed

11 files changed

+322
-54
lines changed

_maps/map_files/AsteroidStation/AsteroidStation.dmm

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26176,6 +26176,10 @@
2617626176
},
2617726177
/turf/open/floor/plasteel,
2617826178
/area/hallway/primary/fore)
26179+
"hpK" = (
26180+
/obj/effect/spawner/backrooms_portal,
26181+
/turf/open/floor/plasteel,
26182+
/area/quartermaster/warehouse)
2617926183
"hqn" = (
2618026184
/obj/structure/table/wood,
2618126185
/obj/effect/spawner/lootdrop/randomdrink,
@@ -94205,7 +94209,7 @@ aJI
9420594209
aZs
9420694210
xga
9420794211
xIK
94208-
hSk
94212+
hpK
9420994213
dCg
9421094214
gBO
9421194215
aZs

_maps/map_files/DonutStation/DonutStation.dmm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18391,6 +18391,7 @@
1839118391
c_tag = "Cargo - Disposals Office";
1839218392
dir = 8
1839318393
},
18394+
/obj/effect/spawner/backrooms_portal,
1839418395
/turf/open/floor/plasteel,
1839518396
/area/quartermaster/sorting)
1839618397
"hBq" = (

_maps/map_files/GaxStation/GaxStation.dmm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33376,6 +33376,7 @@
3337633376
"qcV" = (
3337733377
/obj/effect/decal/cleanable/dirt,
3337833378
/obj/machinery/light/small,
33379+
/obj/effect/spawner/backrooms_portal,
3337933380
/turf/open/floor/plasteel,
3338033381
/area/quartermaster/warehouse)
3338133382
"qcW" = (

_maps/map_files/IceMeta/IceMeta.dmm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71174,6 +71174,7 @@
7117471174
dir = 4
7117571175
},
7117671176
/obj/effect/decal/cleanable/dirt,
71177+
/obj/effect/spawner/backrooms_portal,
7117771178
/turf/open/floor/plasteel,
7117871179
/area/quartermaster/warehouse)
7117971180
"ute" = (

_maps/map_files/YogStation/YogStation.dmm

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57217,6 +57217,11 @@
5721757217
/obj/machinery/teleport/station,
5721857218
/turf/open/floor/plating,
5721957219
/area/teleporter)
57220+
"rGx" = (
57221+
/obj/effect/decal/cleanable/dirt,
57222+
/obj/effect/spawner/backrooms_portal,
57223+
/turf/open/floor/plasteel,
57224+
/area/quartermaster/warehouse)
5722057225
"rHf" = (
5722157226
/turf/open/floor/engine/vacuum,
5722257227
/area/engine/atmos/mix)
@@ -96620,7 +96625,7 @@ aTD
9662096625
aPG
9662196626
bbq
9662296627
gjl
96623-
baS
96628+
rGx
9662496629
hFo
9662596630
baS
9662696631
baS

code/__DEFINES/dcs/signals/signals_global.dm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,5 @@
8484
#define COMSIG_STARLIGHT_COLOR_CHANGED "!starlight_color_changed"
8585
/// Global signal sent when darkspawns ascend: (No arguments)
8686
#define COMSIG_DARKSPAWN_ASCENSION "!darkspawn_ascension"
87+
/// Global signal sent when the backrooms finishes initailizing: (No arguments)
88+
#define COMSIG_BACKROOMS_INITIALIZE "!backrooms_initialize"

code/controllers/subsystem/backrooms.dm

Lines changed: 77 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@ SUBSYSTEM_DEF(backrooms)
66
var/datum/map_generator/dungeon_generator/backrooms_generator
77
var/datum/generator_theme/picked_theme = /datum/generator_theme
88

9+
//associative list of objects and how much they sell for
10+
var/list/golden_loot = list(
11+
/obj/item/statuebust = 1000,
12+
/obj/item/reagent_containers/food/snacks/urinalcake = 1000,
13+
/obj/item/bigspoon = 4000,
14+
/obj/item/reagent_containers/food/snacks/burger/rat = 1200,
15+
/obj/item/extinguisher = 2500,
16+
/obj/item/toy/plush/lizard/azeel = 5000
17+
)
18+
919
/datum/controller/subsystem/backrooms/Initialize(timeofday)
1020
#ifdef LOWMEMORYMODE
1121
return SS_INIT_NO_NEED
@@ -16,8 +26,8 @@ SUBSYSTEM_DEF(backrooms)
1626

1727
pick_theme()
1828
generate_backrooms()
19-
delete_beacons()
20-
//spawn_anomalies()
29+
SEND_GLOBAL_SIGNAL(COMSIG_BACKROOMS_INITIALIZE)
30+
spawn_loot()
2131
return SS_INIT_SUCCESS
2232

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

61-
addtimer(CALLBACK(src, PROC_REF(generate_exit)), 1 MINUTES)
62-
63-
/datum/controller/subsystem/backrooms/proc/delete_beacons()
64-
var/list/zlevel = SSmapping.levels_by_trait(ZTRAIT_PROCEDURAL_MAINTS)
65-
for(var/obj/item/beacon/bacon as anything in GLOB.teleportbeacons)
66-
if(bacon.z in zlevel) //if the beacon is in the backrooms, delete it
67-
qdel(bacon)
71+
/datum/controller/subsystem/backrooms/proc/spawn_loot()
72+
var/backrooms_level = SSmapping.levels_by_trait(ZTRAIT_PROCEDURAL_MAINTS)
73+
if(!LAZYLEN(backrooms_level))
74+
return
75+
var/number = rand(20, 50)
76+
var/turf/destination
77+
var/item_path
78+
var/value
79+
for(var/i in 1 to number)
80+
destination = find_safe_turf(zlevels = backrooms_level, dense_atoms = FALSE)
81+
item_path = pick(golden_loot)
82+
value = golden_loot[item_path]
83+
84+
var/obj/item/thing = new item_path(destination) //spawn the thing and make it gold
85+
thing.AddComponent(/datum/component/valuable, value)
6886

6987
////////////////////////////////////////////////////////////////////////////////////
70-
//------------------------------Exit related things-------------------------------//
88+
//-------------------------------Valuable items-----------------------------------//
7189
////////////////////////////////////////////////////////////////////////////////////
72-
/datum/controller/subsystem/backrooms/proc/generate_exit()
73-
var/list/backrooms_level = SSmapping.levels_by_trait(ZTRAIT_PROCEDURAL_MAINTS)
74-
if(LAZYLEN(backrooms_level))
75-
var/turf/way_out = find_safe_turf(zlevels = backrooms_level, dense_atoms = FALSE)
76-
new /obj/effect/portal/permanent/one_way/backrooms(way_out)
77-
78-
/obj/effect/portal/permanent/one_way/backrooms/get_link_target_turf()
79-
var/list/valid_lockers = typecacheof(typesof(/obj/structure/closet) - typesof(/obj/structure/closet/body_bag)\
80-
- typesof(/obj/structure/closet/secure_closet) - typesof(/obj/structure/closet/cabinet)\
81-
- typesof(/obj/structure/closet/cardboard) \
82-
- typesof(/obj/structure/closet/supplypod) - typesof(/obj/structure/closet/stasis)\
83-
- typesof(/obj/structure/closet/abductor) - typesof(/obj/structure/closet/bluespace), only_root_path = TRUE) //stolen from bluespace lockers
84-
85-
var/list/lockers_list = list()
86-
for(var/obj/structure/closet/L in GLOB.lockers)
87-
if(!is_station_level(L.z))
88-
continue
89-
if(!is_type_in_typecache(L, valid_lockers))
90-
continue
91-
if(L.opened)
92-
continue
93-
lockers_list += L
94-
var/obj/structure/closet/exit = pick(lockers_list)
95-
if(!exit)
96-
exit = new(get_safe_random_station_turf())
97-
return get_turf(exit)
98-
99-
/obj/effect/portal/permanent/one_way/backrooms/teleport(atom/movable/M, force)
100-
. = ..()
101-
if(.)
102-
var/obj/structure/closet/end = locate() in get_turf(M)
103-
if(end)
104-
M.forceMove(end) //get in the locker, nerd
90+
/datum/export/backrooms
91+
//cost is irrelevant because we overwrite the proc
92+
unit_name = "golden object"
93+
export_types = list(/obj/item) //sell any object so long as it has the component
94+
95+
/datum/export/backrooms/applies_to(obj/O, allowed_categories = NONE, apply_elastic = TRUE)
96+
var/datum/component/valuable/value = O.GetComponent(/datum/component/valuable)
97+
if(!value || !istype(value))
98+
return FALSE
99+
return ..()
100+
101+
/datum/export/backrooms/get_cost(obj/O, allowed_categories = NONE, apply_limit = TRUE)
102+
var/amount = get_amount(O)
103+
var/datum/component/valuable/value = O.GetComponent(/datum/component/valuable)
104+
if(value && istype(value))
105+
return round(value.cost * amount)
106+
return 0
107+
108+
109+
/datum/component/valuable
110+
///how much the item is worth
111+
var/cost
112+
113+
/datum/component/valuable/Initialize(cost)
114+
if(!isitem(parent))
115+
return COMPONENT_INCOMPATIBLE
116+
src.cost = cost
117+
118+
/datum/component/valuable/RegisterWithParent()
119+
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
120+
if(isitem(parent))
121+
var/obj/item/goldplate = parent
122+
goldplate.add_atom_colour("#ffd700", FIXED_COLOUR_PRIORITY)
123+
124+
/datum/component/valuable/UnregisterFromParent()
125+
UnregisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
126+
127+
/datum/component/valuable/proc/on_examine(atom/eaten_light, mob/examiner, list/examine_text)
128+
SIGNAL_HANDLER
129+
examine_text += span_notice("This looks valuable, it could probably be sold for a lot.")
130+
return NONE
105131

132+
////////////////////////////////////////////////////////////////////////////////////
133+
//----------------------------Entrance and exit portal----------------------------//
134+
////////////////////////////////////////////////////////////////////////////////////
106135
/obj/effect/portal/permanent/backrooms
107-
icon_state = "wooden_tv"
136+
icon = 'icons/obj/computer.dmi'
137+
icon_state = "television"
108138

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

112142
/obj/effect/spawner/backrooms_portal/Initialize(mapload)
143+
RegisterSignal(SSdcs, COMSIG_BACKROOMS_INITIALIZE, PROC_REF(spawn_portals))
144+
145+
/obj/effect/spawner/backrooms_portal/proc/spawn_portals()
113146
var/backrooms_level = SSmapping.levels_by_trait(ZTRAIT_PROCEDURAL_MAINTS)
114147
if(LAZYLEN(backrooms_level))
115148
var/turf/way_out = find_safe_turf(zlevels = backrooms_level, dense_atoms = FALSE)

0 commit comments

Comments
 (0)