30 lines
1.7 KiB
Lua
30 lines
1.7 KiB
Lua
-- Explicit CW module metadata only. Keep outside scripts/ until a live Client
|
|||
|
|
-- is available. No assembly scan, config getter invocation or run mutation.
|
||
|
|
do local function capture()
|
||
|
|
local state=_G.__gacCwRewardInventorySchema1 or {index=0}
|
||
|
|
_G.__gacCwRewardInventorySchema1=state
|
||
|
|
if state.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 typeof(CS.RPG.Client.BattleGamePhase):IsInstanceOfType(phase) then return end
|
||
|
|
local function log(value)CS.UnityEngine.Debug.Log('[GAC_CW_REWARD_INVENTORY_SCHEMA] '..tostring(value))end
|
||
|
|
local function relevant(name)
|
||
|
|
return name:find('Orb') or name:find('Consumable') or name:find('Forge') or name:find('Bonus') or name:find('Reward')
|
||
|
|
end
|
||
|
|
if not state.members then
|
||
|
|
local target=typeof(CS.RPG.Client.GridFightModule)
|
||
|
|
state.members=target:GetMembers(flags)
|
||
|
|
if state.members.Length>4096 then error('named module metadata bound exceeded')end
|
||
|
|
log('TYPE '..target.FullName)
|
||
|
|
end
|
||
|
|
-- Bound metadata formatting/logging per heartbeat; never invoke members.
|
||
|
|
for _=1,32 do
|
||
|
|
if state.index>=state.members.Length then state.done=true;state.members=nil;log('END');return end
|
||
|
|
local member=state.members[state.index];state.index=state.index+1
|
||
|
|
if relevant(tostring(member.Name))then log(tostring(member.MemberType)..' '..tostring(member))end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
local ok,err=pcall(capture)
|
||
|
|
if not ok then _G.__gacCwRewardInventorySchema1={done=true};CS.UnityEngine.Debug.Log('[GAC_CW_REWARD_INVENTORY_SCHEMA] ERROR '..tostring(err))end
|
||
|
|
end
|