worldbox-observer-mod/.tmp-reflect/DumpActorMgr.cs
DazedAnon 366ae45f13 Implement combat isolation and improve combat event handling.
- Add new command for isolating combat pairs to prevent ambient escalation
- Enhance combat event logging and participant tracking
- Optimize combat focus handling based on participant count
- Update harness scenarios to validate new combat interactions
- Increment version to 0.26.7 in mod.json
2026-07-17 14:40:32 -05:00

47 lines
2 KiB
C#

using System.Reflection;
using System.Reflection.Metadata;
using System.Reflection.PortableExecutable;
string path = "/home/dazed/.local/share/Steam/steamapps/common/worldbox/worldbox_Data/Managed/Assembly-CSharp.dll";
using var fs = File.OpenRead(path);
using var pe = new PEReader(fs);
var md = pe.GetMetadataReader();
foreach (var typeName in new[]{"ActorManager","MapBox","World","Finder","BaseSystemManager`1","NanoObjectManager`2"}) {
Console.WriteLine("== "+typeName+" ==");
foreach (var th in md.TypeDefinitions) {
var t = md.GetTypeDefinition(th);
var n = md.GetString(t.Name);
var ns = md.GetString(t.Namespace);
if (n!=typeName && !(typeName.Contains('`') && n.StartsWith(typeName.Split('`')[0]))) continue;
Console.WriteLine($"TYPE {ns}.{n}");
// base type
if (!t.BaseType.IsNil) {
try {
var bt = t.BaseType;
if (bt.Kind == HandleKind.TypeReference) {
var tr = md.GetTypeReference((TypeReferenceHandle)bt);
Console.WriteLine(" base="+md.GetString(tr.Namespace)+"."+md.GetString(tr.Name));
} else if (bt.Kind == HandleKind.TypeSpecification) {
Console.WriteLine(" base=TypeSpec");
} else if (bt.Kind == HandleKind.TypeDefinition) {
var td = md.GetTypeDefinition((TypeDefinitionHandle)bt);
Console.WriteLine(" base="+md.GetString(td.Namespace)+"."+md.GetString(td.Name));
}
} catch (Exception ex) { Console.WriteLine(" baseerr "+ex.Message); }
}
foreach (var mh in t.GetMethods()) {
var m = md.GetMethodDefinition(mh);
var mn = md.GetString(m.Name);
if (mn.StartsWith("set_") || mn is ".ctor" or ".cctor") continue;
Console.WriteLine(" "+mn);
}
}
}
Console.WriteLine("== methods named getByID ==");
foreach (var mh in md.MethodDefinitions) {
var m = md.GetMethodDefinition(mh);
var mn = md.GetString(m.Name);
if (mn is "getByID" or "get" or "getActor") {
// find owning type - expensive: skip, just print token
Console.WriteLine(mn+" token="+mh.GetHashCode());
}
}