protected static readonly long[] REALMPOINTS_FOR_LEVEL = { 0, // 1L1 1, // 1L1 25, // 1L2 125, // 1L3 350, // 1L4 750, // 1L5 1375, // 1L6 2275, // 1L7 3500, // 1L8 5100, // 1L9 7125, // 2L0 9625, // 2L1 12650, // 2L2 16250, // 2L3 20475, // 2L4 25375, // 2L5 31000, // 2L6 37400, // 2L7 44625, // 2L8 52725, // 2L9 61750, // 3L0 71750, // 3L1 82775, // 3L2 94875, // 3L3 108100, // 3L4 122500, // 3L5 138125, // 3L6 155025, // 3L7 173250, // 3L8 192850, // 3L9 213875, // 4L0 236375, // 4L1 260400, // 4L2 286000, // 4L3 313225, // 4L4 342125, // 4L5 372750, // 4L6 405150, // 4L7 439375, // 4L8 475475, // 4L9 513500, // 5L0 553500, // 5L1 595525, // 5L2 639625, // 5L3 685850, // 5L4 734250, // 5L5 784875, // 5L6 837775, // 5L7 893000, // 5L8 950600, // 5L9 1010625, // 6L0 1073125, // 6L1 1138150, // 6L2 1205750, // 6L3 1275975, // 6L4 1348875, // 6L5 1424500, // 6L6 1502900, // 6L7 1584125, // 6L8 1668225, // 6L9 1755250, // 7L0 1845250, // 7L1 1938275, // 7L2 2034375, // 7L3 2133600, // 7L4 2236000, // 7L5 2341625, // 7L6 2450525, // 7L7 2562750, // 7L8 2678350, // 7L9 2797375, // 8L0 2919875, // 8L1 3045900, // 8L2 3175500, // 8L3 3308725, // 8L4 3445625, // 8L5 3586250, // 8L6 3730650, // 8L7 3878875, // 8L8 4030975, // 8L9 4187000, // 9L0 4347000, // 9L1 4511025, // 9L2 4679125, // 9L3 4851350, // 9L4 5027750, // 9L5 5208375, // 9L6 5393275, // 9L7 5582500, // 9L8 5776100, // 9L9 5974125, // 10L0 6176625, // 10L1 6383650, // 10L2 6595250, // 10L3 6811475, // 10L4 7032375, // 10L5 7258000, // 10L6 7488400, // 10L7 7723625, // 10L8 7963725, // 10L9 8208750, // 11L0 9111713, // 11L1 10114001, // 11L2 11226541, // 11L3 12461460, // 11L4 13832221, // 11L5 15353765, // 11L6 17042680, // 11L7 18917374, // 11L8 20998286, // 11L9 23308097 // 12L0 }; protected virtual int CalculateRealmLevelFromRPs(long realmPoints) { if (realmPoints == 0) return 0; int i = REALMPOINTS_FOR_LEVEL.Length - 1; for (; i > 0; i--) { if (REALMPOINTS_FOR_LEVEL[i] <= realmPoints) break; } if (i > 111) return 111; return i; } public string GetRealmTitle(long realmPoints, int realm) { if (realm >= REALM_RANK_NAMES.Length) return "unknown realm"; string[] rankNames = REALM_RANK_NAMES[realm]; int rank = CalculateRealmLevelFromRPs(realmPoints) / 10; if (rank >= rankNames.Length) rank = rankNames.Length - 1; return rankNames[rank]; } public string GetRealmRankTitle(long realmPoints) { int rank = CalculateRealmLevelFromRPs(realmPoints); int firstPart = rank / 10; int secondPart = rank - (firstPart * 10); return firstPart.ToString() + "L" + secondPart.ToString(); }