Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge Upstream 30.01.2025 #1774

Merged
merged 30 commits into from
Jan 30, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
3f96cc0
fixes shadow hand not pulling the mob that cast it if it hits a turf …
1080pCat Jan 27, 2025
fd76dcd
NanoMap Auto-Update (Mon Jan 27 01:37:04 UTC 2025) (#28147)
paradisess13[bot] Jan 27, 2025
c18ef36
Mechas no longer get their attack cooldowns taken up by clicking the …
1080pCat Jan 27, 2025
9bf8b92
fix baps when adding ingredients to kitchen machines (#28138)
warriorstar-orion Jan 27, 2025
6eeea2b
Paranoid RunQueue errors. (#27948)
FunnyMan3595 Jan 27, 2025
6f39985
Make wind not unpredictably break CI due to bad init. (#28149)
FunnyMan3595 Jan 27, 2025
0249a8d
Office Chair Overlapping Tweak + Slightly better layer logic for chai…
Alecksohs Jan 28, 2025
e01a133
Fix camera console feeds not following moving cameras (#27851)
asciodev Jan 28, 2025
7481676
small fix (#28015)
MiraHell Jan 28, 2025
665eb99
fix oversight (#28002)
MiraHell Jan 28, 2025
d28d740
Fix some cases of silicons teleporting items on put_in_hands (#28017)
MiraHell Jan 28, 2025
81775e2
[FIX] Follow up PR on "Better slices" (#28146)
Drsmail Jan 28, 2025
452c80e
Removes tourettes (#28153)
DGamerL Jan 28, 2025
4c72e2c
fixes door remotes (#28140)
Toastical Jan 28, 2025
0c5de8b
fix sprite (#28154)
kyunkyunkyun Jan 28, 2025
a6d347e
Custom, crew-buildable vendors (#28009)
FunnyMan3595 Jan 28, 2025
85d60b6
Fix a vending bug (#28168)
FunnyMan3595 Jan 29, 2025
73c94db
Prevent a source of MC failures. (#28169)
FunnyMan3595 Jan 29, 2025
529e55b
Proc calls now use vv_get_value, which can get things you click on. (…
FunnyMan3595 Jan 29, 2025
2ebcc28
Fix dead AIs being forced to announce new arrivals (#28170)
asciodev Jan 29, 2025
2f80db2
Removes outdated traitor round tips (#28167)
Burzah Jan 29, 2025
e7b76e9
Allow speedbikers to pull mobs. (#28096)
warriorstar-orion Jan 29, 2025
b665567
Fix more chef bonks (#28179)
FunnyMan3595 Jan 30, 2025
f47f0de
Corrects the pressure readouts on non-detailed gas reports (#28174)
Migratingcocofruit Jan 30, 2025
21e91b1
Adds three more chargers to emerald station brig. (#28159)
1080pCat Jan 30, 2025
6fd94ae
Update deltastation.dmm (#28158)
Fordoxia Jan 30, 2025
1a2f97c
fet (#28157)
Vi3trice Jan 30, 2025
9a7aee8
Cauterize surgery checks for lit implements, tweak lighter/flamethrow…
Vi3trice Jan 30, 2025
7f9305f
Re-bonk reagents on kitchen appliances (#28185)
FunnyMan3595 Jan 30, 2025
69c1705
Merge remote-tracking branch 'origin/master' into merge-upstream
m-dzianishchyts Jan 30, 2025
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
24 changes: 18 additions & 6 deletions _maps/map_files/stations/deltastation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -30932,6 +30932,7 @@
c_tag = "Internal Affairs Office";
dir = 4
},
/obj/machinery/firealarm/directional/north,
/turf/simulated/floor/plasteel/grimy,
/area/station/legal/lawoffice)
"caH" = (
Expand Down Expand Up @@ -31572,9 +31573,6 @@
/area/station/command/office/captain/bedroom)
"cct" = (
/obj/structure/filingcabinet/chestdrawer,
/obj/structure/sign/poster/official/work_for_a_future{
pixel_x = -32
},
/turf/simulated/floor/plasteel/grimy,
/area/station/legal/lawoffice)
"ccu" = (
Expand Down Expand Up @@ -42944,6 +42942,10 @@
icon_state = "whitebluecorner"
},
/area/station/medical/reception)
"cNX" = (
/obj/machinery/firealarm/directional/west,
/turf/simulated/floor/wood,
/area/station/legal/courtroom)
"cNY" = (
/obj/machinery/power/apc/directional/south,
/obj/structure/cable{
Expand Down Expand Up @@ -57045,6 +57047,12 @@
icon_state = "whiteblue"
},
/area/station/medical/cryo)
"erJ" = (
/obj/machinery/firealarm/directional/north,
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
/area/station/legal/magistrate)
"erP" = (
/obj/machinery/camera{
c_tag = "Secure Lab - Test Chamber";
Expand Down Expand Up @@ -83293,6 +83301,10 @@
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
/area/station/engineering/tech_storage)
"sTy" = (
/obj/machinery/firealarm/directional/east,
/turf/simulated/floor/plasteel/dark,
/area/station/legal/courtroom/gallery)
"sUn" = (
/obj/machinery/economy/vending/cola,
/turf/simulated/floor/plasteel/dark,
Expand Down Expand Up @@ -138361,7 +138373,7 @@ cax
mRD
ocx
sxI
eYE
cNX
ejT
eYE
rgU
Expand Down Expand Up @@ -139897,7 +139909,7 @@ oMV
iRk
xPW
caA
cax
sTy
mlY
qJc
bsL
Expand Down Expand Up @@ -141443,7 +141455,7 @@ fjW
xwN
hTV
hTV
bXW
erJ
vjg
bXW
hTV
Expand Down
24 changes: 23 additions & 1 deletion _maps/map_files/stations/emeraldstation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -35356,6 +35356,16 @@
icon_state = "freezerfloor"
},
/area/station/medical/cloning)
"haD" = (
/obj/machinery/recharger/wallcharger{
pixel_x = 30;
pixel_y = 1
},
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "darkredcorners"
},
/area/station/security/brig)
"haF" = (
/obj/structure/table/wood,
/obj/item/stack/tape_roll,
Expand Down Expand Up @@ -36291,6 +36301,18 @@
pixel_x = -3;
pixel_y = 5
},
/obj/machinery/recharger/wallcharger{
pixel_x = 30;
pixel_y = 5
},
/obj/machinery/recharger/wallcharger{
pixel_x = 30;
pixel_y = -13
},
/obj/machinery/recharger/wallcharger{
pixel_x = 30;
pixel_y = -4
},
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "darkredcorners"
Expand Down Expand Up @@ -173427,7 +173449,7 @@ upq
jDu
pXO
snW
tZY
haD
hjy
jLZ
ihH
Expand Down
2 changes: 0 additions & 2 deletions _maps/map_files220/generic/Admin_Zone.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -4087,7 +4087,6 @@
/obj/item/dnainjector/remoteview,
/obj/item/dnainjector/stuttmut,
/obj/item/dnainjector/telemut,
/obj/item/dnainjector/tourmut,
/turf/simulated/floor/wood/oak,
/area/admin)
"oj" = (
Expand Down Expand Up @@ -6713,7 +6712,6 @@
/obj/item/dnainjector/antiremoteview,
/obj/item/dnainjector/antistutt,
/obj/item/dnainjector/antitele,
/obj/item/dnainjector/antitour,
/turf/simulated/floor/wood/oak,
/area/admin)
"xf" = (
Expand Down
2 changes: 0 additions & 2 deletions _maps/map_files220/generic/centcomm_test.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -985,7 +985,6 @@
/obj/item/dnainjector/remoteview,
/obj/item/dnainjector/stuttmut,
/obj/item/dnainjector/telemut,
/obj/item/dnainjector/tourmut,
/turf/simulated/floor/wood/oak,
/area/admin)
"oj" = (
Expand Down Expand Up @@ -1518,7 +1517,6 @@
/obj/item/dnainjector/antiremoteview,
/obj/item/dnainjector/antistutt,
/obj/item/dnainjector/antitele,
/obj/item/dnainjector/antitour,
/turf/simulated/floor/wood/oak,
/area/admin)
"xh" = (
Expand Down
4 changes: 2 additions & 2 deletions code/__DEFINES/dcs/movable_signals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@
#define COMSIG_MOVABLE_DRIFT_BLOCK_INPUT "movable_drift_block_input"
#define DRIFT_ALLOW_INPUT (1<<0)

///called when the movable's glide size is updated: (new_glide_size)
#define COMSIG_MOVABLE_UPDATE_GLIDE_SIZE "movable_glide_size"
///called after the movable's glide size is updated: (old_glide_size)
#define COMSIG_MOVABLE_UPDATED_GLIDE_SIZE "movable_glide_size"

///signal sent out by an atom when it is no longer pulling something : (atom/pulling)
#define COMSIG_ATOM_NO_LONGER_PULLING "movable_no_longer_pulling"
3 changes: 3 additions & 0 deletions code/__DEFINES/vv.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@
#define VV_MARKED_DATUM "Marked Datum"
#define VV_BITFIELD "Bitfield"
#define VV_REGEX "Regex"
#define VV_VISIBLE_ATOM "Visible Atom"
#define VV_INSIDE_VISIBLE_ATOM "Inside a Visible Atom"
#define VV_VISIBLE_TURF "Visible Turf"
1 change: 0 additions & 1 deletion code/_globalvars/genetics.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ GLOBAL_VAR_INIT(fakeblock, 0)
GLOBAL_VAR_INIT(coughblock, 0)
GLOBAL_VAR_INIT(glassesblock, 0)
GLOBAL_VAR_INIT(epilepsyblock, 0)
GLOBAL_VAR_INIT(twitchblock, 0)
GLOBAL_VAR_INIT(nervousblock, 0)
GLOBAL_VAR_INIT(wingdingsblock, 0)
GLOBAL_VAR_INIT(monkeyblock, DNA_SE_LENGTH) // Monkey block will always be the DNA_SE_LENGTH
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/lists/objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ GLOBAL_LIST_EMPTY(pandemics)
GLOBAL_LIST_EMPTY(all_areas)
GLOBAL_LIST_EMPTY(all_unique_areas) // List of all unique areas. AKA areas with there_can_be_many = FALSE
GLOBAL_LIST_EMPTY(machines)
GLOBAL_LIST_EMPTY(telescreens) /// List of entertainment telescreens connected to the "news" cameranet
GLOBAL_LIST_EMPTY(rcd_list) //list of Rapid Construction Devices.

GLOBAL_LIST_EMPTY(apcs)
Expand Down
28 changes: 13 additions & 15 deletions code/controllers/master.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
/// Did inits finish with no one logged in
var/initializations_finished_with_no_players_logged_in

/// The type of the last subsystem to be fire()'d.
var/last_type_processed
/// The last subsystem to be fire()'d.
var/datum/controller/subsystem/last_processed

/// Cache for the loading screen - cleared after
var/list/ss_in_init_order = list()
Expand Down Expand Up @@ -172,7 +172,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
msg += "\t [varname] = [varval]\n"
log_world(msg)

var/datum/controller/subsystem/BadBoy = Master.last_type_processed
var/datum/controller/subsystem/BadBoy = Master.last_processed
var/FireHim = FALSE
if(istype(BadBoy))
msg = null
Expand Down Expand Up @@ -431,8 +431,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
continue

if(queue_head)
if(RunQueue() <= 0) //error running queue
stack_trace("MC: RunQueue failed. Current error_level is [round(error_level, 0.25)]")
if(!RunQueue())
stack_trace("MC: RunQueue returned early during [last_processed.name] ([last_processed.last_task()]). Current error_level is [round(error_level, 0.25)].")
if(error_level > 1) //skip the first error,
if(!SoftReset(tickersubsystems, runlevel_sorted_subsystems))
error_level++
Expand Down Expand Up @@ -501,7 +501,6 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
/// RunQueue - Run thru the queue of subsystems to run, running them while balancing out their allocated tick precentage
/// Returns 0 if runtimed, a negitive number for logic errors, and a positive number if the operation completed without errors
/datum/controller/master/proc/RunQueue()
. = 0
var/datum/controller/subsystem/queue_node
var/queue_node_flags
var/queue_node_priority
Expand Down Expand Up @@ -537,9 +536,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
bg_calc = TRUE
else if(bg_calc)
//error state, do sane fallback behavior
if(. == 0)
log_world("MC: Queue logic failure, non-background subsystem queued to run after a background subsystem: [queue_node] queue_prev:[queue_node.queue_prev]")
. = -1
var/message = "MC: Queue logic failure, non-background subsystem queued to run after a background subsystem: [queue_node] queue_prev:[queue_node.queue_prev]"
log_world(message)
stack_trace(message)
current_tick_budget = queue_priority_count //this won't even be right, but is the best we have.
bg_calc = FALSE

Expand All @@ -551,9 +550,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
tick_precentage = tick_remaining * (queue_node_priority / current_tick_budget)
else
//error state
if(. == 0)
log_world("MC: tick_budget sync error. [json_encode(list(current_tick_budget, queue_priority_count, queue_priority_count_bg, bg_calc, queue_node, queue_node_priority))]")
. = -1
var/message = "MC: tick_budget sync error. [json_encode(list(current_tick_budget, queue_priority_count, queue_priority_count_bg, bg_calc, queue_node, queue_node_priority))]"
log_world(message)
stack_trace(message)
tick_precentage = tick_remaining //just because we lost track of priority calculations doesn't mean we can't try to finish off the run, if the error state persists, we don't want to stop ticks from happening

tick_precentage = max(tick_precentage*0.5, tick_precentage-queue_node.tick_overrun)
Expand All @@ -563,7 +562,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
ran = TRUE

queue_node_paused = (queue_node.state == SS_PAUSED || queue_node.state == SS_PAUSING)
last_type_processed = queue_node
last_processed = queue_node

queue_node.state = SS_RUNNING

Expand Down Expand Up @@ -613,8 +612,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new

queue_node = queue_node.queue_next

if(. == 0)
. = 1
return TRUE

//resets the queue, and all subsystems, while filtering out the subsystem lists
// called if any mc's queue procs runtime or exit improperly.
Expand Down
4 changes: 4 additions & 0 deletions code/controllers/subsystem.dm
Original file line number Diff line number Diff line change
Expand Up @@ -353,3 +353,7 @@
out["sleep_count"] = fire_sleep_count
out["custom"] = list() // Override as needed on child
return out

/// Allows a subsystem to report what it was doing in case of a silent crash.
/datum/controller/subsystem/proc/last_task()
return "No task specified."
12 changes: 12 additions & 0 deletions code/controllers/subsystem/SSinput.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ SUBSYSTEM_DEF(input)
/// List of clients whose input to process in loop.
var/list/client/processing = list()

var/last_ckey
var/last_x
var/last_y
var/last_z

/datum/controller/subsystem/input/Initialize()
refresh_client_macro_sets()

Expand All @@ -26,6 +31,10 @@ SUBSYSTEM_DEF(input)
set waitfor = FALSE
var/list/to_cull
for(var/client/C in processing)
last_ckey = C.ckey
last_x = C.mob?.x
last_y = C.mob?.y
last_z = C.mob?.z
if(processing[C] + AUTO_CULL_TIME < world.time)
if(!length(C.input_data.keys_held))
LAZYADD(to_cull, C)
Expand All @@ -42,4 +51,7 @@ SUBSYSTEM_DEF(input)
var/client/user = clients[i]
user.set_macros()

/datum/controller/subsystem/input/last_task()
return "[last_ckey] at [last_x], [last_y], [last_z]"

#undef AUTO_CULL_TIME
8 changes: 4 additions & 4 deletions code/datums/components/drift.dm
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
RegisterSignal(movable_parent, COMSIG_MOVABLE_MOVED, PROC_REF(handle_move))
// We will use glide size to intuit how long to delay our loop's next move for
// This way you can't ride two movements at once while drifting, since that'd be dumb as fuck
RegisterSignal(movable_parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, PROC_REF(handle_glidesize_update))
RegisterSignal(movable_parent, COMSIG_MOVABLE_UPDATED_GLIDE_SIZE, PROC_REF(handle_glidesize_update))
// If you stop pulling something mid drift, I want it to retain that momentum
RegisterSignal(movable_parent, COMSIG_ATOM_NO_LONGER_PULLING, PROC_REF(stopped_pulling))

Expand All @@ -99,7 +99,7 @@
var/atom/movable/movable_parent = parent
movable_parent.inertia_moving = FALSE
ignore_next_glide = FALSE
UnregisterSignal(movable_parent, list(COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, COMSIG_ATOM_NO_LONGER_PULLING))
UnregisterSignal(movable_parent, list(COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_UPDATED_GLIDE_SIZE, COMSIG_ATOM_NO_LONGER_PULLING))

/datum/component/drift/proc/before_move(datum/source)
SIGNAL_HANDLER
Expand Down Expand Up @@ -147,7 +147,7 @@
/// We're going to take the passed in glide size
/// and use it to manually delay our loop for that period
/// to allow the other movement to complete
/datum/component/drift/proc/handle_glidesize_update(datum/source, glide_size)
/datum/component/drift/proc/handle_glidesize_update(datum/source, old_glide_size)
SIGNAL_HANDLER
// If we aren't drifting, or this is us, fuck off
var/atom/movable/movable_parent = parent
Expand All @@ -158,7 +158,7 @@
if(ignore_next_glide)
ignore_next_glide = FALSE
return
var/glide_delay = round(world.icon_size / glide_size, 1) * world.tick_lag
var/glide_delay = round(world.icon_size / movable_parent.glide_size, 1) * world.tick_lag
drifting_loop.pause_for(glide_delay)
delayed = TRUE

Expand Down
1 change: 0 additions & 1 deletion code/datums/components/zombie_regen.dm
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@
zomboid.cure_nearsighted()
zomboid.CureMute()
zomboid.CureDeaf()
zomboid.CureTourettes()
zomboid.CureEpilepsy()
zomboid.CureCoughing()
zomboid.CureNervous()
Expand Down
6 changes: 5 additions & 1 deletion code/game/atoms_movable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -743,8 +743,12 @@

/// This proc is recursive, and calls itself to constantly set the glide size of an atom/movable
/atom/movable/proc/set_glide_size(target = 8)
SEND_SIGNAL(src, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, target)
if(glide_size == target)
return

var/old_value = glide_size
glide_size = target
SEND_SIGNAL(src, COMSIG_MOVABLE_UPDATED_GLIDE_SIZE, old_value)

for(var/mob/buckled_mob as anything in buckled_mobs)
buckled_mob.set_glide_size(target)
Expand Down
Loading
Loading