-- Bounded read of the active node's already available penalty row. do local function capture() if _G.__gacCwCurrentPenalty1 then return end local session=CS.RPG.Client.GlobalVars.s_ModuleManager.GridFightModule.CurGameSession if not session then return end local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60) local fs=session:GetType():GetFields(flags) for i=0,math.min(fs.Length-1,63)do if fs[i].FieldType.FullName=='RPG.Client.GridFightStage'then local stage=fs[i]:GetValue(session) local node=stage and stage.CurNode if not node then return end local property=node:GetType():GetProperty('_PenaltyRuleConfigRow',flags) if not property then return end local row=property:GetValue(node,nil) if row then CS.UnityEngine.Debug.Log('[GAC_CW_CURRENT_PENALTY] '..CS.Newtonsoft.Json.JsonConvert.SerializeObject(row));_G.__gacCwCurrentPenalty1=true end return end end end;local ok,e=pcall(capture);if not ok then _G.__gacCwCurrentPenalty1=true;CS.UnityEngine.Debug.Log('[GAC_CW_CURRENT_PENALTY] ERROR '..tostring(e))end end