34 lines
1.8 KiB
Lua
34 lines
1.8 KiB
Lua
-- Read only the established Orb consumer, eight members per heartbeat. Keep
|
|
-- outside scripts/ until deliberately staged by the runtime investigator.
|
|
do local function capture()
|
|
local state=_G.__gacCwOrbRuntimeMetadata1 or {index=0,beats=0}
|
|
_G.__gacCwOrbRuntimeMetadata1=state
|
|
if state.done then return end
|
|
state.beats=state.beats+1
|
|
local function log(s)CS.UnityEngine.Debug.Log('[GAC_CW_ORB_RUNTIME_META] '..tostring(s))end
|
|
if state.beats>36 then state.done=true;state.members=nil;log('END beat budget');return end
|
|
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
|
|
local manager=CS.RPG.Client.GlobalVars.s_GamePhaseManager
|
|
local f=manager and manager:GetType():GetField('_CurrentPhase',flags)
|
|
local phase=f and f:GetValue(manager)
|
|
if not phase or typeof(CS.RPG.Client.BattleGamePhase):IsInstanceOfType(phase)then return end
|
|
if not state.members then
|
|
state.type=typeof(CS.RPG.Client.GridFightModule).Assembly:GetType('RPG.Client.GridFightOrbServerData')
|
|
if not state.type then state.done=true;log('MISSING established Orb consumer');return end
|
|
state.members=state.type:GetMembers(flags)
|
|
if state.members.Length>192 then error('Orb member bound')end
|
|
log('TYPE '..state.type.FullName..' members='..state.members.Length)
|
|
end
|
|
for _=1,8 do
|
|
if state.index>=state.members.Length then state.done=true;state.members=nil;state.type=nil;log('END');return end
|
|
local m=state.members[state.index];state.index=state.index+1
|
|
if m.DeclaringType==state.type then
|
|
if m.MemberType==CS.System.Reflection.MemberTypes.Method then log('METHOD '..tostring(m)..' HANDLE '..tostring(m.MethodHandle.Value))
|
|
else log(tostring(m.MemberType)..' '..tostring(m))end
|
|
end
|
|
end
|
|
end
|
|
local ok,e=pcall(capture)
|
|
if not ok then _G.__gacCwOrbRuntimeMetadata1={done=true};CS.UnityEngine.Debug.Log('[GAC_CW_ORB_RUNTIME_META] ERROR '..tostring(e))end
|
|
end
|