namespace ICRebuild.Core; public static class CurrentProtocolEvidence { // Only fill missing names/slots; do not rewrite explicit mappings or the cache file. private static readonly (int Opcode,string Name)[] Downstream = [ (338,"DOWN_PingRsp"), (671,"DOWN_UpdateHate"), (558,"DOWN_UpdateHater"), (697,"DOWN_EffectResultBasic"), // ActorGauge already exists at a different explicit slot in the cache; use an evidence label. (614,"DOWN_JobGauge"), (788,"DOWN_UpdateClassInfo"), (214,"DOWN_FirstAttack") ]; public static int AddMissing(string version,Dictionary down) { if(version!=PacketParser.AuditedClientVersion) return 0; var added=0; foreach(var (opcode,name) in Downstream) if(!down.ContainsKey(opcode) && !down.ContainsValue(name)) { down[opcode]=name; added++; } return added; } }