landsandboat/scripts/data/skill_ranks.lua

122 lines
8.3 KiB
Lua

-----------------------------------
-- Table defining the skill level max value based on actor level and the skill rank.
-- Skill caps per rank: https://wiki-ffo-jp.translate.goog/html/2570.html?_x_tr_sl=ja&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=sc
-----------------------------------
xi = xi or {}
xi.data = xi.data or {}
xi.data.skillLevel = xi.data.skillLevel or {}
-----------------------------------
xi.data.skillLevel.dataTable =
{
-- [Level] = { A+, A, B+, B, B-, C+, C, C-, D, E, F, G },
[ 0] = { 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
[ 1] = { 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 3 },
[ 2] = { 9, 9, 7, 7, 7, 7, 7, 7, 6, 6, 6, 5 },
[ 3] = { 12, 12, 10, 10, 10, 10, 10, 10, 9, 9, 8, 7 },
[ 4] = { 15, 15, 13, 13, 13, 13, 13, 13, 12, 11, 10, 9 },
[ 5] = { 18, 18, 16, 16, 16, 16, 16, 16, 14, 14, 13, 11 },
[ 6] = { 21, 21, 19, 19, 19, 19, 19, 19, 17, 16, 15, 13 },
[ 7] = { 24, 24, 22, 22, 22, 21, 21, 21, 20, 19, 17, 15 },
[ 8] = { 27, 27, 25, 25, 25, 24, 24, 24, 22, 21, 20, 17 },
[ 9] = { 30, 30, 28, 28, 28, 27, 27, 27, 25, 24, 22, 19 },
[10] = { 33, 33, 31, 31, 31, 30, 30, 30, 28, 26, 24, 21 },
[11] = { 36, 36, 34, 34, 34, 33, 33, 33, 31, 29, 27, 23 },
[12] = { 39, 39, 36, 36, 36, 35, 35, 35, 33, 31, 29, 25 },
[13] = { 42, 42, 39, 39, 39, 38, 38, 38, 36, 34, 31, 27 },
[14] = { 45, 45, 42, 42, 42, 41, 41, 41, 39, 36, 33, 29 },
[15] = { 48, 48, 45, 45, 45, 44, 44, 44, 41, 39, 36, 31 },
[16] = { 51, 51, 48, 48, 48, 47, 47, 47, 44, 41, 38, 33 },
[17] = { 54, 54, 51, 51, 51, 49, 49, 49, 47, 44, 40, 35 },
[18] = { 57, 57, 54, 54, 54, 52, 52, 52, 49, 46, 43, 37 },
[19] = { 60, 60, 57, 57, 57, 55, 55, 55, 52, 49, 45, 39 },
[20] = { 63, 63, 60, 60, 60, 58, 58, 58, 55, 51, 47, 41 },
[21] = { 66, 66, 63, 63, 63, 61, 61, 61, 58, 54, 50, 43 },
[22] = { 69, 69, 65, 65, 65, 63, 63, 63, 60, 56, 52, 45 },
[23] = { 72, 72, 68, 68, 68, 66, 66, 66, 63, 59, 54, 47 },
[24] = { 75, 75, 71, 71, 71, 69, 69, 69, 66, 61, 56, 49 },
[25] = { 78, 78, 74, 74, 74, 72, 72, 72, 68, 64, 59, 51 },
[26] = { 81, 81, 77, 77, 77, 75, 75, 75, 71, 66, 61, 53 },
[27] = { 84, 84, 80, 80, 80, 77, 77, 77, 74, 69, 63, 55 },
[28] = { 87, 87, 83, 83, 83, 80, 80, 80, 76, 71, 66, 57 },
[29] = { 90, 90, 86, 86, 86, 83, 83, 83, 79, 74, 68, 59 },
[30] = { 93, 93, 89, 89, 89, 86, 86, 86, 82, 76, 70, 61 },
[31] = { 96, 96, 92, 92, 92, 89, 89, 89, 85, 79, 73, 63 },
[32] = { 99, 99, 94, 94, 94, 91, 91, 91, 87, 81, 75, 65 },
[33] = { 102, 102, 97, 97, 97, 94, 94, 94, 90, 84, 77, 67 },
[34] = { 105, 105, 100, 100, 100, 97, 97, 97, 93, 86, 79, 69 },
[35] = { 108, 108, 103, 103, 103, 100, 100, 100, 95, 89, 82, 71 },
[36] = { 111, 111, 106, 106, 106, 103, 103, 103, 98, 91, 84, 73 },
[37] = { 114, 114, 109, 109, 109, 105, 105, 105, 101, 94, 86, 75 },
[38] = { 117, 117, 112, 112, 112, 108, 108, 108, 103, 96, 89, 77 },
[39] = { 120, 120, 115, 115, 115, 111, 111, 111, 106, 99, 91, 79 },
[40] = { 123, 123, 118, 118, 118, 114, 114, 114, 109, 101, 93, 81 },
[41] = { 126, 126, 121, 121, 121, 117, 117, 117, 112, 104, 96, 83 },
[42] = { 129, 129, 123, 123, 123, 119, 119, 119, 114, 106, 98, 85 },
[43] = { 132, 132, 126, 126, 126, 122, 122, 122, 117, 109, 100, 87 },
[44] = { 135, 135, 129, 129, 129, 125, 125, 125, 120, 111, 102, 89 },
[45] = { 138, 138, 132, 132, 132, 128, 128, 128, 122, 114, 105, 91 },
[46] = { 141, 141, 135, 135, 135, 130, 130, 130, 125, 116, 107, 93 },
[47] = { 144, 144, 138, 138, 138, 133, 133, 133, 128, 119, 109, 95 },
[48] = { 147, 147, 141, 141, 141, 136, 136, 136, 130, 121, 112, 97 },
[49] = { 150, 150, 144, 144, 144, 139, 139, 139, 133, 124, 114, 99 },
[50] = { 153, 153, 147, 147, 147, 142, 142, 142, 136, 126, 116, 101 },
[51] = { 158, 158, 151, 151, 151, 146, 146, 146, 140, 130, 120, 105 },
[52] = { 163, 163, 156, 156, 156, 151, 151, 151, 145, 135, 124, 109 },
[53] = { 168, 168, 161, 161, 161, 156, 156, 156, 150, 139, 128, 113 },
[54] = { 173, 173, 166, 166, 166, 161, 161, 161, 154, 144, 133, 117 },
[55] = { 178, 178, 171, 171, 171, 166, 166, 166, 159, 148, 137, 121 },
[56] = { 183, 183, 176, 176, 176, 170, 170, 170, 164, 153, 141, 125 },
[57] = { 188, 188, 181, 181, 181, 175, 175, 175, 168, 157, 146, 129 },
[58] = { 193, 193, 186, 186, 186, 180, 180, 180, 173, 162, 150, 133 },
[59] = { 198, 198, 191, 191, 191, 185, 185, 185, 178, 166, 154, 137 },
[60] = { 203, 203, 196, 196, 196, 190, 190, 190, 183, 171, 159, 141 },
[61] = { 207, 207, 199, 199, 198, 192, 192, 192, 184, 172, 161, 143 },
[62] = { 212, 211, 203, 202, 201, 195, 194, 194, 186, 174, 163, 145 },
[63] = { 217, 215, 207, 205, 204, 197, 196, 196, 188, 176, 165, 147 },
[64] = { 222, 219, 210, 208, 206, 200, 199, 198, 190, 178, 167, 149 },
[65] = { 227, 223, 214, 212, 209, 202, 201, 200, 192, 180, 169, 151 },
[66] = { 232, 227, 218, 215, 212, 205, 203, 202, 194, 182, 171, 153 },
[67] = { 236, 231, 221, 218, 214, 207, 205, 204, 195, 184, 173, 155 },
[68] = { 241, 235, 225, 221, 217, 210, 208, 206, 197, 186, 175, 157 },
[69] = { 246, 239, 229, 225, 220, 212, 210, 208, 199, 188, 177, 159 },
[70] = { 251, 244, 233, 228, 223, 215, 212, 210, 201, 190, 179, 161 },
[71] = { 256, 249, 237, 232, 226, 218, 214, 212, 202, 192, 181, 163 },
[72] = { 261, 254, 242, 236, 229, 221, 217, 214, 204, 194, 183, 165 },
[73] = { 266, 259, 246, 241, 233, 224, 219, 216, 206, 196, 185, 167 },
[74] = { 271, 264, 251, 245, 236, 227, 222, 218, 208, 198, 187, 169 },
[75] = { 276, 269, 256, 250, 240, 230, 225, 220, 210, 200, 189, 171 },
[76] = { 281, 274, 261, 255, 245, 235, 230, 225, 214, 203, 191, 173 },
[77] = { 286, 279, 266, 260, 250, 240, 235, 230, 218, 206, 193, 175 },
[78] = { 291, 284, 271, 265, 255, 245, 240, 235, 222, 209, 195, 177 },
[79] = { 296, 289, 276, 270, 260, 250, 245, 240, 226, 212, 197, 179 },
[80] = { 301, 294, 281, 275, 265, 255, 250, 245, 230, 215, 199, 181 },
[81] = { 307, 300, 287, 281, 271, 261, 256, 251, 235, 219, 202, 183 },
[82] = { 313, 306, 293, 287, 277, 267, 262, 257, 240, 223, 205, 185 },
[83] = { 319, 312, 299, 293, 283, 273, 268, 263, 245, 227, 208, 187 },
[84] = { 325, 318, 305, 299, 289, 279, 274, 269, 250, 231, 211, 189 },
[85] = { 331, 324, 311, 305, 295, 285, 280, 275, 255, 235, 214, 191 },
[86] = { 337, 330, 317, 311, 301, 291, 286, 281, 260, 239, 217, 193 },
[87] = { 343, 336, 323, 317, 307, 297, 292, 287, 265, 243, 220, 195 },
[88] = { 349, 342, 329, 323, 313, 303, 298, 293, 270, 247, 223, 197 },
[89] = { 355, 348, 335, 329, 319, 309, 304, 299, 275, 251, 226, 199 },
[90] = { 361, 354, 341, 335, 325, 315, 310, 305, 280, 255, 229, 201 },
[91] = { 368, 361, 348, 342, 332, 322, 317, 312, 286, 260, 233, 204 },
[92] = { 375, 368, 355, 349, 339, 329, 324, 319, 292, 265, 237, 207 },
[93] = { 382, 375, 362, 356, 346, 336, 331, 326, 298, 270, 241, 210 },
[94] = { 389, 382, 369, 363, 353, 343, 338, 333, 304, 275, 245, 213 },
[95] = { 396, 389, 376, 370, 360, 350, 345, 340, 310, 280, 249, 216 },
[96] = { 403, 396, 383, 377, 367, 357, 352, 347, 316, 285, 253, 219 },
[97] = { 410, 403, 390, 384, 374, 364, 359, 354, 322, 290, 257, 222 },
[98] = { 417, 410, 397, 391, 381, 371, 366, 361, 328, 295, 261, 225 },
[99] = { 424, 417, 404, 398, 388, 378, 373, 368, 334, 300, 265, 228 },
}
xi.data.skillLevel.getSkillCap = function(actorLevel, skillRank)
-- Sanitize fed values
local levelToCheck = utils.defaultIfNil(actorLevel, 0) -- Assume level 0
local rankToCheck = utils.defaultIfNil(skillRank, xi.skillRank.G) -- Assume rank G
-- Going to assume levels over 99 give 1 skill level, just like master levels.
return xi.data.skillLevel.dataTable[utils.clamp(levelToCheck, 0, 99)][utils.clamp(rankToCheck, 1, 12)] + utils.clamp(levelToCheck - 99, 0, 156)
end