35 lines
1.8 KiB
Lua
35 lines
1.8 KiB
Lua
-- Exact failing AdventurePhase only. Inspect metadata and nullness; no phase
|
|
-- setters, scene loads, method invocation, or loading-screen bypass.
|
|
do
|
|
local function capture()
|
|
local s=_G.__gacAdventureFinalReady1 or {offset=0,kind='fields'}
|
|
_G.__gacAdventureFinalReady1=s
|
|
if s.done then return end
|
|
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
|
|
local manager=CS.RPG.Client.GlobalVars.s_GamePhaseManager
|
|
local phase=manager and typeof(CS.RPG.Client.GamePhaseManager):GetField('_CurrentPhase',flags):GetValue(manager)
|
|
if not phase or phase:GetType().FullName~='RPG.Client.AdventurePhase'then return end
|
|
local log=function(v)CS.UnityEngine.Debug.Log('[GAC_ADVENTURE_FINAL_READY] '..tostring(v))end
|
|
if not s.t then s.t=phase:GetType();s.members=s.t:GetFields(flags);log('TYPE '..s.t.FullName)end
|
|
for n=1,16 do
|
|
if s.offset>=s.members.Length then
|
|
if s.kind=='fields'then
|
|
s.t=s.t.BaseType
|
|
if s.t and s.t.FullName~='System.Object'then s.members=s.t:GetFields(flags);s.offset=0;return end
|
|
s.t=phase:GetType();s.members=s.t:GetMethods(flags);s.offset=0;s.kind='methods';return
|
|
end
|
|
s.done=true;log('END');return
|
|
end
|
|
local member=s.members[s.offset];s.offset=s.offset+1
|
|
if member.DeclaringType==s.t then
|
|
if s.kind=='fields'and not member.IsStatic then
|
|
local value=member:GetValue(phase)
|
|
log('FIELD '..member.Name..' '..member.FieldType.FullName..' HANDLE '..tostring(member.FieldHandle.Value)..' NULL '..tostring(value==nil))
|
|
elseif s.kind=='methods'then log('METHOD '..member.Name..' HANDLE '..tostring(member.MethodHandle.Value))end
|
|
end
|
|
end
|
|
end
|
|
local ok,e=pcall(capture)
|
|
if not ok then _G.__gacAdventureFinalReady1={done=true};CS.UnityEngine.Debug.Log('[GAC_ADVENTURE_FINAL_READY] ERROR '..tostring(e))end
|
|
end
|