From 07e10c38e15fee23d7bd872b43aac5c39e4228d1 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Wed, 7 Feb 2018 10:38:07 -0800 Subject: [PATCH] Fixes callbacks and invoke time args failing when pushUsr was used (#35395) * Fixes callbacks and invoke time args failing when pushUsr was used * y u do dis byond --- code/__HELPERS/unsorted.dm | 7 +++++-- code/datums/callback.dm | 12 ++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 598fb8b7a2..be3b897e5c 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1506,10 +1506,13 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) // Makes a call in the context of a different usr // Use sparingly -/world/proc/PushUsr(mob/M, datum/callback/CB) +/world/proc/PushUsr(mob/M, datum/callback/CB, ...) var/temp = usr usr = M - . = CB.Invoke() + if (length(args) > 2) + . = CB.Invoke(arglist(args.Copy(3))) + else + . = CB.Invoke() usr = temp //Returns a list of all servants of Ratvar and observers. diff --git a/code/datums/callback.dm b/code/datums/callback.dm index 6e92d41c6d..c603be85b7 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -78,11 +78,13 @@ if(W) var/mob/M = W.resolve() if(M) + if (length(args)) + return world.PushUsr(arglist(list(M, src) + args)) return world.PushUsr(M, src) - + if (!object) return - + var/list/calling_arguments = arguments if (length(args)) if (length(arguments)) @@ -104,11 +106,13 @@ if(W) var/mob/M = W.resolve() if(M) + if (length(args)) + return world.PushUsr(arglist(list(M, src) + args)) return world.PushUsr(M, src) - + if (!object) return - + var/list/calling_arguments = arguments if (length(args)) if (length(arguments))