-- Read only the active dialog's pending instance, not all runtime types. do local function capture() if _G.__gacBonfireLivePending1 then return end local page=CS.RPG.Client.GlobalVars.s_UIManager:GetPageByName('GridFightBonfireDialog') local lua=page and page.LuaTable;local action=lua and lua._pending_action if not action then local session=CS.RPG.Client.GlobalVars.s_ModuleManager.GridFightModule.CurGameSession local manager=session and session.PrepPendingAction if manager then local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60) local f=manager:GetType():GetField('_ActionQueue',flags);local queue=f and f:GetValue(manager) if queue and queue.Count<=16 then for i=0,queue.Count-1 do local v=queue[i];if v and v:GetType().Name:find('Bonfire',1,true)then action=v;break end end end end if manager and not _G.__gacBonfireManagerMetadata1 then _G.__gacBonfireManagerMetadata1=true local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60) local fs=manager:GetType():GetFields(flags) for i=0,math.min(fs.Length-1,31)do local f=fs[i];local v=f:GetValue(manager);CS.UnityEngine.Debug.Log('[GAC_BONFIRE_PENDING] MANAGER '..f.Name..' '..f.FieldType.FullName..' '..tostring(v))end end if not action then return end end _G.__gacBonfireLivePending1=true local log=function(v)CS.UnityEngine.Debug.Log('[GAC_BONFIRE_PENDING] '..tostring(v))end local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60) local t=action:GetType();log('TYPE '..t.FullName);log('HAS_SELECTED '..tostring(action.HasSelected)) for _,name in ipairs({'get_HasSelected','Sync','TakeReward','SelectOption','HealHp'})do local ms=t:GetMethods(flags) for i=0,math.min(ms.Length-1,127)do local m=ms[i];if m.Name==name then log('METHOD '..tostring(m)..' HANDLE '..tostring(m.MethodHandle.Value))end end end local fs=t:GetFields(flags) for i=0,math.min(fs.Length-1,31)do local f=fs[i];local v=f:GetValue(action);log('FIELD '..f.Name..' '..f.FieldType.FullName..' '..tostring(v)) if f.FieldType.IsEnum then local names=CS.System.Enum.GetNames(f.FieldType);local values=CS.System.Enum.GetValues(f.FieldType) for j=0,math.min(names.Length-1,15)do log('ENUM '..names[j]..' '..CS.System.Convert.ToInt32(values:GetValue(j)))end end end end local ok,e=pcall(capture);if not ok then _G.__gacBonfireLivePending1=true;CS.UnityEngine.Debug.Log('[GAC_BONFIRE_PENDING] ERROR '..tostring(e))end end