protected override void SubtypeWrite(DSBinaryWriter bin) { bin.Write(SubUnk1); bin.Write(SUB_CONST_1); bin.Write(SUB_CONST_2); bin.Write(SUB_CONST_3); sbyte m1 = -1, m2 = -1, m3 = -1, m4 = -1; string[] mapNameParts = MapName .Substring(1) .Split('_') .Select(x => x.ToUpper()) .ToArray(); if (mapNameParts.Length != 4) { InvalidNameException(); } if (mapNameParts[0].Length != 2 || mapNameParts[1].Length != 2 || mapNameParts[2].Length != 2 || mapNameParts[3].Length != 2 ) { InvalidNameException(); } try { if (mapNameParts[0] == "XX") { m1 = -1; } else { m1 = (sbyte)(int.Parse(mapNameParts[0])); if (m1 < 0) { InvalidNameException(); } } if (mapNameParts[1] == "XX") { m2 = -1; } else { m2 = (sbyte)(int.Parse(mapNameParts[1])); if (m2 < 0) { InvalidNameException(); } } if (mapNameParts[2] == "XX") { m3 = -1; } else { m3 = (sbyte)(int.Parse(mapNameParts[2])); if (m3 < 0) { InvalidNameException(); } } if (mapNameParts[3] == "XX") { m4 = -1; } else { m4 = (sbyte)(int.Parse(mapNameParts[3])); if (m4 < 0) { InvalidNameException(); } } } catch { InvalidNameException(); } bin.Write(m1); bin.Write(m2); bin.Write(m3); bin.Write(m4); bin.Write(SUB_CONST_4); bin.Write(SUB_CONST_5); }