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))