Index: binary-improvements/assembly-patcher/Main.cs
===================================================================
--- binary-improvements/assembly-patcher/Main.cs	(revision 75)
+++ binary-improvements/assembly-patcher/Main.cs	(revision 76)
@@ -12,5 +12,5 @@
 			ModuleDefinition module = ModuleDefinition.ReadModule ("Assembly-CSharp.dll");
 			telnetPatch (module);
-			connectLogPatch(module);
+			connectLogPatch (module);
 			module.Write ("Assembly-CSharp.dll");
 			Console.WriteLine ("Done");
@@ -26,5 +26,5 @@
 
 			markTypePatched (module, type);
-			addHook (type, "RequestToSpawnPlayer", true, 5, typeof(AllocsRequestToSpawnPlayer).GetMethod ("RequestToSpawnPlayer"));
+			addHook (type, "RequestToSpawnPlayer", true, 5, true, typeof(AllocsRequestToSpawnPlayer).GetMethod ("RequestToSpawnPlayer"));
 		}
 
@@ -49,5 +49,5 @@
 		}
 
-		private static void addHook (TypeDefinition type, string methodName, bool addThisRef, int opCount, MethodBase targetMethod)
+		private static void addHook (TypeDefinition type, string methodName, bool addThisRef, int opCount, bool atEnd, MethodBase targetMethod)
 		{
 			foreach (MethodDefinition method in type.Methods) {
@@ -56,11 +56,23 @@
 					var il = method.Body.GetILProcessor ();
 					var call = il.Create (OpCodes.Call, method.Module.Import (targetMethod));
-					var i = 0;
-					if (addThisRef)
-						il.InsertBefore (method.Body.Instructions [i++], il.Create (OpCodes.Ldarg, 0));
-					for (int op = 0; op < opCount; op++) {
-						il.InsertBefore (method.Body.Instructions [i++], il.Create (OpCodes.Ldarg, op + 1));
+					if (atEnd) {
+						int insBefore = method.Body.Instructions.Count;
+						if (addThisRef)
+							il.Append (il.Create (OpCodes.Ldarg, 0));
+						for (int op = 0; op < opCount; op++) {
+							il.Append (il.Create (OpCodes.Ldarg, op + 1));
+						}
+						il.Append (call);
+						il.Remove (method.Body.Instructions [insBefore - 1]);
+						il.Append (il.Create (OpCodes.Ret));
+					} else {
+						var i = 0;
+						if (addThisRef)
+							il.InsertBefore (method.Body.Instructions [i++], il.Create (OpCodes.Ldarg, 0));
+						for (int op = 0; op < opCount; op++) {
+							il.InsertBefore (method.Body.Instructions [i++], il.Create (OpCodes.Ldarg, op + 1));
+						}
+						il.InsertBefore (method.Body.Instructions [i++], call);
 					}
-					il.InsertBefore (method.Body.Instructions [i++], call);
 				}
 			}
