Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
de40a4c
Holopads generate unique IDs.
MistakeNot4892 Jan 8, 2026
8d4fa0a
Added a var for allowing areas to remove all access from doors.
MistakeNot4892 Jan 8, 2026
cc7965f
Added endless candles for mapping purposes.
MistakeNot4892 Jan 8, 2026
74d7724
Added random poncho spawner.
MistakeNot4892 Jan 8, 2026
f19c95b
Added several random subtypes for mapping.
MistakeNot4892 Jan 8, 2026
9b06886
Added an orange comfy chair preset.
MistakeNot4892 Jan 8, 2026
bc6e50e
Added medical curtain subtype.
MistakeNot4892 Jan 8, 2026
fd56435
Fences now take material color and name.
MistakeNot4892 Jan 8, 2026
d20b360
Added a doggy door.
MistakeNot4892 Jan 8, 2026
856a312
Added a couple of coloured structure subtypes for mapping.
MistakeNot4892 Jan 8, 2026
0975b33
Added several turf subtypes/colour settings for mapping.
MistakeNot4892 Jan 8, 2026
07382be
Fixes template placement verb.
MistakeNot4892 Jan 8, 2026
8336e57
Adds winter boots to boot loadout.
MistakeNot4892 Jan 8, 2026
b630a6a
Allows map unit tests to skip all checks (for variable areas like sub…
MistakeNot4892 Jan 8, 2026
5bfeac0
Minor evacuation controller adjustments.
MistakeNot4892 Jan 8, 2026
40689f1
Adding mapped subtypes for ore stacks.
MistakeNot4892 Jan 8, 2026
83e2905
Prevents mounted spawner from failing CI when mapped.
MistakeNot4892 Jan 8, 2026
20852a3
Minor fix for ore box unloading.
MistakeNot4892 Jan 8, 2026
03c962b
Repathing satchels to ore_satchel and plant_satchel.
MistakeNot4892 Jan 8, 2026
589d7b0
Allows lobby handler to override initial size of lobby joiner.
MistakeNot4892 Jan 8, 2026
efd483a
Firedoors do not trip UT failures for being mapped over open space.
MistakeNot4892 Jan 8, 2026
657cf15
Adds a security filing cabinet.
MistakeNot4892 Jan 8, 2026
7841bd6
Adds an unlocked APC subtype.
MistakeNot4892 Jan 8, 2026
00d3a58
Separating captain's laser and old retro laser types.
MistakeNot4892 Jan 8, 2026
71894b6
Added a used hypospray subtype for mapping.
MistakeNot4892 Jan 8, 2026
ecd92f9
Expanding disposal pipe UT failure info.
MistakeNot4892 Jan 8, 2026
bd843d7
Removing empty outfit path.
MistakeNot4892 Jan 9, 2026
1719fc2
Compile fixes for Polaris change commits.
MistakeNot4892 Jan 15, 2026
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
11 changes: 5 additions & 6 deletions code/controllers/evacuation/evacuation.dm
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,8 @@
A.readyalert()
if(!skip_announce)
global.using_map.emergency_shuttle_called_announcement()
else
if(!skip_announce)
priority_announcement.Announce(replacetext(replacetext(global.using_map.shuttle_called_message, "%dock_name%", "[global.using_map.dock_name]"), "%ETA%", "[round(get_eta()/60)] minute\s"))

else if(!skip_announce && global.using_map.shuttle_called_message)
priority_announcement.Announce(replacetext(replacetext(global.using_map.shuttle_called_message, "%dock_name%", "[global.using_map.dock_name]"), "%ETA%", "[round(get_eta()/60)] minute\s"))
return 1

/datum/evacuation_controller/proc/cancel_evacuation()
Expand All @@ -113,12 +111,13 @@
auto_recall_time = null

if(emergency_evacuation)
evac_recalled.Announce(global.using_map.emergency_shuttle_recall_message)
if(global.using_map.emergency_shuttle_recall_message)
evac_recalled.Announce(global.using_map.emergency_shuttle_recall_message)
for(var/area/A in global.areas)
if(istype(A) && (A.area_flags & AREA_FLAG_HALLWAY))
A.readyreset()
emergency_evacuation = 0
else
else if(global.using_map.emergency_shuttle_recall_message)
priority_announcement.Announce(global.using_map.shuttle_recall_message)

return 1
Expand Down
2 changes: 1 addition & 1 deletion code/datums/supplypacks/science.dm
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
/obj/item/clothing/gloves/thick,
/obj/item/clothing/shoes/color/black,
/obj/item/scanner/gas,
/obj/item/ore,
/obj/item/ore_satchel,
/obj/item/flashlight/lantern,
/obj/item/tool/shovel,
/obj/item/tool/pickaxe,
Expand Down
4 changes: 2 additions & 2 deletions code/datums/trading/traders/ai.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ They sell generic supplies and ask for generic supplies.
/obj/item/box/fancy = TRADER_SUBTYPES_ONLY,
/obj/item/laundry_basket = TRADER_THIS_TYPE,
/obj/item/secure_storage/briefcase = TRADER_THIS_TYPE,
/obj/item/plants = TRADER_THIS_TYPE,
/obj/item/ore = TRADER_THIS_TYPE,
/obj/item/plant_satchel = TRADER_THIS_TYPE,
/obj/item/ore_satchel = TRADER_THIS_TYPE,
/obj/item/toolbox = TRADER_ALL,
/obj/item/wallet = TRADER_THIS_TYPE,
/obj/item/photo_album = TRADER_THIS_TYPE,
Expand Down
1 change: 1 addition & 0 deletions code/game/area/area_access.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/area
var/list/req_access = list()
var/secure = FALSE // unsecure areas will have doors between them use access diff; secure ones use union.
var/override_unlock = FALSE // TRUE will override area and will be always unlocked. This is e.g. for restrooms inside secure areas, surgery observation room etc.

// Given two areas, find the minimal req_access needed such that (return value) + (area access) >= (other area access) and vice versa
/proc/req_access_diff(area/first, area/second)
Expand Down
2 changes: 2 additions & 0 deletions code/game/machinery/doors/_door.dm
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,8 @@

if (!fore && !aft)
return list()
else if (fore.override_unlock || aft.override_unlock)
return list()
else if (fore.secure || aft.secure)
return req_access_union(fore, aft)
else
Expand Down
9 changes: 8 additions & 1 deletion code/game/machinery/hologram.dm
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ var/global/list/holopads = list()
var/allow_ai = TRUE
var/static/list/reachable_overmaps = list(OVERMAP_ID_SPACE)

var/static/list/used_holopad_ids = list()
var/holopad_id

/obj/machinery/hologram/holopad/Initialize()
Expand All @@ -68,7 +69,13 @@ var/global/list/holopads = list()
// Null ID means we want to use our area name.
if(isnull(holopad_id))
var/area/A = get_area(src)
holopad_id = A?.proper_name || "Unknown"
var/holopad_index = 1
var/holopad_base = A?.proper_name || "Unknown"
holopad_id = "[holopad_base] #[holopad_index]"
while(holopad_id in used_holopad_ids)
holopad_index++
holopad_id = "[holopad_base] #[holopad_index]"
used_holopad_ids |= holopad_id

// For overmap sites, always tag the sector name so we have a unique discriminator for long range calls.
var/obj/effect/overmap/visitable/sector = global.overmap_sectors[z]
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/portable_turret.dm
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
iconholder = 1
eprojectile = /obj/item/projectile/beam

if(/obj/item/gun/energy/captain)
if(/obj/item/gun/energy/retro/captain)
iconholder = 1

if(/obj/item/gun/energy/lasercannon)
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/vending/botany.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
/obj/item/chems/glass/bottle/robustharvest = 3,
/obj/item/plantspray/pests = 20,
/obj/item/chems/syringe = 5,
/obj/item/plants = 5,
/obj/item/plant_satchel = 5,
/obj/item/chems/glass/bottle/ammonia = 10
)
idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan.
Expand Down
3 changes: 3 additions & 0 deletions code/game/objects/items/candelabra.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,6 @@
if(i > length(candles_storage.candle_offsets))
break
compile_overlays()

/obj/item/candelabra/infinite/WillContain()
return list(/obj/item/flame/candle/infinite = 3)
15 changes: 15 additions & 0 deletions code/game/objects/items/flame/flame_candle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,21 @@
/obj/item/flame/candle/spent
_fuel = 0

/obj/item/flame/candle/infinite/get_fuel()
return 10

/obj/item/flame/candle/infinite/has_fuel(amount)
return TRUE

/obj/item/flame/candle/infinite/expend_fuel(amount)
return TRUE

/obj/item/flame/candle/infinite/red
paint_color = COLOR_RED

/obj/item/flame/candle/infinite/white
paint_color = COLOR_WHITE

/obj/item/flame/candle/red
paint_color = COLOR_RED

Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/weapons/storage/specialized.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// Mining Satchel
// -----------------------------

/obj/item/ore
/obj/item/ore_satchel
name = "mining satchel"
desc = "This sturdy bag can be used to store and transport ores."
icon = 'icons/obj/items/mining_satchel.dmi'
Expand Down Expand Up @@ -37,7 +37,7 @@
// Plant bag
// -----------------------------

/obj/item/plants
/obj/item/plant_satchel
name = "botanical satchel"
desc = "This bag can be used to store all kinds of plant products and botanical specimen."
icon = 'icons/obj/hydroponics/hydroponics_machines.dmi'
Expand Down
18 changes: 18 additions & 0 deletions code/game/objects/random/subtypes/clothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -238,3 +238,21 @@
/obj/item/clothing/suit/space/void/medical/alt
)
return spawnable_choices

/obj/random/poncho
name = "random poncho"
icon = /obj/item/clothing/suit/poncho/green::icon
icon_state = /obj/item/clothing/suit/poncho/green::icon_state

/obj/random/poncho/spawn_choices()
var/static/list/spawn_choices = list(
/obj/item/clothing/suit/poncho/green,
/obj/item/clothing/suit/poncho/red,
/obj/item/clothing/suit/poncho/purple,
/obj/item/clothing/suit/poncho/blue,
/obj/item/clothing/suit/poncho/security,
/obj/item/clothing/suit/poncho/medical,
/obj/item/clothing/suit/poncho/engineering,
/obj/item/clothing/suit/poncho/cargo
)
return spawn_choices
87 changes: 84 additions & 3 deletions code/game/objects/random/subtypes/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
color = COLOR_PURPLE
spawn_nothing_percentage = 50

/obj/random/contraband/nofail
name = "guaranteed random illegal item"
spawn_nothing_percentage = 0

/obj/random/contraband/spawn_choices()
var/static/list/spawnable_choices = list(
/obj/item/grooming/comb = 4,
Expand Down Expand Up @@ -304,7 +308,7 @@
/obj/item/box/large = 2,
/obj/item/box/glowsticks = 3,
/obj/item/wallet = 1,
/obj/item/ore = 2,
/obj/item/ore_satchel = 2,
/obj/item/belt/utility/full = 2,
/obj/item/belt/medical/emt = 2,
/obj/item/belt/medical = 2,
Expand Down Expand Up @@ -387,12 +391,28 @@
desc = "This is a randomly selected vending machine."
icon = 'icons/obj/machines/vending/coffee.dmi'
icon_state = "world-hellfire"
abstract_type = /obj/random/vendor

/obj/random/vendor/food
name = "random food vending machine"

/obj/random/vendor/spawn_choices()
/obj/random/vendor/food/spawn_choices()
var/static/list/spawnable_choices = list(
/obj/machinery/vending/weeb,
/obj/machinery/vending/sol,
/obj/machinery/vending/snix
/obj/machinery/vending/snix,
/obj/machinery/vending/snack
)
return spawnable_choices


/obj/random/vendor/drink
name = "random drink vending machine"

/obj/random/vendor/drink/spawn_choices()
var/static/list/spawnable_choices = list(
/obj/machinery/vending/coffee,
/obj/machinery/vending/cola
)
return spawnable_choices

Expand Down Expand Up @@ -524,3 +544,64 @@

)
return spawnable_choices

/obj/random/ore_pile
name = "random ore pile"
desc = "A pile of random ores. High chance of a larger pile of common ores, lower chances of small piles of rarer ores."

/obj/random/ore_pile/spawn_choices()
var/static/list/spawnable_choices = list(
/obj/item/stack/material/ore/handful/sand/fifteen = 15,
/obj/item/stack/material/ore/bauxite/ten = 10,
/obj/item/stack/material/ore/coal/ten = 10,
/obj/item/stack/material/ore/tetrahedrite/ten = 10,
/obj/item/stack/material/ore/iron/ten = 10,
/obj/item/stack/material/ore/galena/ten = 10,
/obj/item/stack/material/lump/large/marble/five = 5,
/obj/item/stack/material/ore/gold/five = 5,
/obj/item/stack/material/ore/diamond/three = 3,
/obj/item/stack/material/ore/osmium/three = 3,
/obj/item/stack/material/ore/hydrogen/two = 2,
/obj/item/stack/material/ore/rutile/five = 5,
/obj/item/stack/material/ore/silver/five = 3,
/obj/item/stack/material/ore/uranium/three = 2
)
return spawnable_choices

/obj/random/meat
name = "random meat"
icon = /obj/item/food/butchery/meat/beef::icon
icon_state = /obj/item/food/butchery/meat/beef::icon_state
color = /obj/item/food/butchery/meat/beef::color

/obj/random/meat/spawn_choices()
var/static/list/spawnable_choices = list(
/obj/item/food/butchery/meat/beef,
/obj/item/food/butchery/meat/goat,
/obj/item/food/butchery/meat/chicken,
/obj/item/food/butchery/meat/corgi,
/obj/item/food/butchery/meat/bear,
/obj/item/food/butchery/meat/fish/shark,
/obj/item/food/butchery/meat/fish/carp,
/obj/item/food/butchery/meat/fish/octopus,
/obj/item/food/butchery/meat/fish/mollusc
)
return spawnable_choices

/obj/random/mouseremains
name = "random mouseremains"
desc = "For use with mouse spawners."
icon = /obj/item/assembly/mousetrap::icon
icon_state = /obj/item/assembly/mousetrap::icon_state

/obj/random/mouseremains/spawn_choices()
var/static/list/spawn_choices = list(
/obj/item/assembly/mousetrap,
/obj/item/assembly/mousetrap/armed,
/obj/effect/decal/cleanable/spiderling_remains,
/obj/effect/decal/cleanable/ash,
/obj/item/trash/cigbutt,
/obj/item/trash/cigbutt/cigarbutt,
/obj/item/remains/mouse
)
return spawn_choices
77 changes: 77 additions & 0 deletions code/game/objects/random/subtypes/tech.dm
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,36 @@
)
return spawnable_choices

/obj/random/tech_supply/nofail
name = "guaranteed random tech supply"
spawn_nothing_percentage = 0

/obj/random/tech_supply/component
name = "random tech component"
desc = "This is a random machine component."

/obj/random/tech_supply/component/nofail
name = "guaranteed random tech component"
spawn_nothing_percentage = 0

/obj/random/tech_supply/component/spawn_choices()
var/static/list/spawn_choices = list(
/obj/item/stock_parts/console_screen = 2,
/obj/item/stock_parts/capacitor = 3,
/obj/item/stock_parts/capacitor/adv = 2,
/obj/item/stock_parts/capacitor/super = 1,
/obj/item/stock_parts/manipulator = 3,
/obj/item/stock_parts/manipulator/nano = 2,
/obj/item/stock_parts/manipulator/pico = 1,
/obj/item/stock_parts/matter_bin = 3,
/obj/item/stock_parts/matter_bin/adv = 2,
/obj/item/stock_parts/matter_bin/super = 1,
/obj/item/stock_parts/scanning_module = 3,
/obj/item/stock_parts/scanning_module/adv = 2,
/obj/item/stock_parts/scanning_module/phasic = 1
)
return spawn_choices

/obj/random/tank
name = "random tank"
desc = "This is a tank."
Expand Down Expand Up @@ -120,3 +150,50 @@
/obj/item/oxycandle
)
return spawnable_choices

/obj/random/hardsuit
name = "random hardsuit"
desc = "This is a random hardsuit."
icon = 'icons/clothing/rigs/rig.dmi'
icon_state = ICON_STATE_WORLD

/obj/random/hardsuit/spawn_choices()
var/static/list/spawnable_choices = list(
/obj/item/rig/light/hacker/unlocked = 4,
/obj/item/rig/industrial/unlocked = 5,
/obj/item/rig/eva/unlocked = 5,
/obj/item/rig/light/stealth/unlocked = 4,
/obj/item/rig/hazard/unlocked = 3,
/obj/item/rig/merc/empty/unlocked = 1
)
return spawnable_choices

/obj/random/powercell
name = "random powercell"
desc = "This is a random powercell."
icon = /obj/item/cell::icon
icon_state = /obj/item/cell::icon_state

/obj/random/powercell/spawn_choices()
var/static/list/spawn_choices = list(
/obj/item/cell = 40,
/obj/item/cell/gun = 25,
/obj/item/cell/high = 25,
/obj/item/cell/super = 9,
/obj/item/cell/hyper = 1
)
return spawn_choices

/obj/random/smes_coil
name = "random smes coil"
desc = "This is a random smes coil."
icon = /obj/item/stock_parts/smes_coil::icon
icon_state = /obj/item/stock_parts/smes_coil::icon_state

/obj/random/smes_coil/spawn_choices()
var/static/list/spawn_choices = list(
/obj/item/stock_parts/smes_coil = 4,
/obj/item/stock_parts/smes_coil/super_capacity = 1,
/obj/item/stock_parts/smes_coil/super_io = 1
)
return spawn_choices
Loading
Loading