public List <Instruction> prepareEventHook(MethodDefinition mdef, string _event, Instruction[][] argLoaders) { MethodDefinition fireEvent = HelperClass.findMember <MethodDefinition>(skModule, "SurvivalKit.Events.EventManager", false, HelperClass.MemberNameComparer <MethodDefinition>("FireEvent"), HelperClass.MethodParameterNamesComparer("name", "pars")); if (fireEvent == null) { throw new Exception("Unable to find SurvivalKit.Events.EventManager.FireEvent(string,object[])!"); } ILProcessor proc = mdef.Body.GetILProcessor(); List <Instruction> hook = new List <Instruction>(); hook.Add(proc.Create(OpCodes.Ldstr, _event)); hook.Add(proc.Create(OpCodes.Ldc_I4, argLoaders.Length)); hook.Add(proc.Create(OpCodes.Newarr, csModule.Import(mscorlibModule.GetType("System.Object")))); int dataIndex = 0; //addToArray(proc, hook, dataIndex++, new Instruction[] { proc.Create(OpCodes.Ldarg_0) }); for (int i = 0; i < argLoaders.Length; i++) { addToArray(proc, hook, dataIndex++, argLoaders[i]); } hook.Add(proc.Create(OpCodes.Call, csModule.Import(fireEvent))); return(hook); }