• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Difference between revisions of "Module:EquipmentData"

From Kancolle Wiki
Jump to navigation Jump to search
com>Ckwng
com>Ckwng
(Refactor)
Line 1: Line 1:
 
local BaseData = require("Module:BaseData")
 
local BaseData = require("Module:BaseData")
 +
local EquipmentCompatibility --lazily loaded when equippable() is called
 
local Formatting = require('Module:Formatting')
 
local Formatting = require('Module:Formatting')
  
Line 7: Line 8:
 
_mobile_hide_class = "mobile-hide",
 
_mobile_hide_class = "mobile-hide",
 
_display_none_css = {display = "none"},
 
_display_none_css = {display = "none"},
_equipment_compatibility = {
 
[1] = {
 
[1] = 0,
 
[2] = 0,
 
[3] = 0,
 
[4] = 0,
 
[5] = 0,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 0,
 
[11] = 0,
 
[12] = 0,
 
[13] = 0,
 
[14] = 0,
 
[15] = 0,
 
[16] = 0,
 
[17] = 0,
 
[18] = 0,
 
[19] = 0,
 
[20] = 0,
 
[21] = 0,
 
[22] = 0,
 
[23] = 0,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 0,
 
[34] = 0,
 
[35] = 0,
 
[36] = 0,
 
[37] = 0,
 
[38] = 0,
 
[39] = 0,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 0,
 
[44] = 0,
 
[93] = 0,
 
},
 
[2] = {
 
[1] = 1,
 
[2] = 0,
 
[3] = 0,
 
[4] = 0,
 
[5] = 1,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 0,
 
[11] = 0,
 
[12] = 1,
 
[13] = 0,
 
[14] = 1,
 
[15] = 1,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 0,
 
[29] = 1,
 
[30] = 1,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 0,
 
[35] = 0,
 
[36] = 1,
 
[37] = 1,
 
[38] = 0,
 
[39] = 1,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[3] = {
 
[1] = 1,
 
[2] = 1,
 
[3] = 0,
 
[4] = 1,
 
[5] = 1,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 0,
 
[12] = 1,
 
[13] = 1,
 
[14] = 1,
 
[15] = 1,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = {value = 2, note = "Abukuma Kai Ni only", code = "Abukuma Kai Ni"},
 
[23] = 1,
 
[24] = {value = 2, note = "Abukuma Kai Ni only", code = "Abukuma Kai Ni"},
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 0,
 
[29] = 1,
 
[30] = 1,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 1,
 
[35] = 0,
 
[36] = 1,
 
[37] = 1,
 
[38] = 0,
 
[39] = 1,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[4] = {
 
[1] = 1,
 
[2] = 1,
 
[3] = 0,
 
[4] = 1,
 
[5] = 1,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 0,
 
[11] = 0,
 
[12] = 1,
 
[13] = 1,
 
[14] = 1,
 
[15] = 1,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 1,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 1,
 
[35] = 0,
 
[36] = 1,
 
[37] = 0,
 
[38] = 0,
 
[39] = 1,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[5] = {
 
[1] = 0,
 
[2] = 1,
 
[3] = 0,
 
[4] = 1,
 
[5] = 1,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 0,
 
[12] = 1,
 
[13] = 1,
 
[14] = 0,
 
[15] = 0,
 
[16] = 1,
 
[17] = 1,
 
[18] = 1,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 1,
 
[28] = 0,
 
[29] = 1,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 1,
 
[35] = 0,
 
[36] = 1,
 
[37] = 0,
 
[38] = 0,
 
[39] = 1,
 
[40] = 1,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[6] = {
 
[1] = 0,
 
[2] = 1,
 
[3] = 0,
 
[4] = 1,
 
[5] = 1,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 1,
 
[12] = 1,
 
[13] = 1,
 
[14] = 0,
 
[15] = 0,
 
[16] = 1,
 
[17] = 1,
 
[18] = 1,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 1,
 
[26] = 0,
 
[27] = 1,
 
[28] = 0,
 
[29] = 1,
 
[30] = 1,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 1,
 
[35] = 1,
 
[36] = 1,
 
[37] = 1,
 
[38] = 0,
 
[39] = 1,
 
[40] = 1,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[7] = {
 
[1] = 0,
 
[2] = 0,
 
[3] = 0,
 
[4] = 1,
 
[5] = 0,
 
[6] = 1,
 
[7] = 1,
 
[8] = 1,
 
[9] = 1,
 
[10] = 0,
 
[11] = 0,
 
[12] = 1,
 
[13] = 1,
 
[14] = 0,
 
[15] = 0,
 
[16] = 1,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 1,
 
[26] = 1,
 
[27] = 1,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 0,
 
[34] = 1,
 
[35] = 1,
 
[36] = 1,
 
[37] = 0,
 
[38] = 0,
 
[39] = 0,
 
[40] = 1,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[8] = {
 
[1] = 0,
 
[2] = 0,
 
[3] = 1,
 
[4] = 1,
 
[5] = {value = 2, note = "Bismarck drei only", code = "Bismarck Drei"},
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 0,
 
[12] = 1,
 
[13] = 1,
 
[14] = 0,
 
[15] = 0,
 
[16] = 1,
 
[17] = 1,
 
[18] = 1,
 
[19] = 1,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 1,
 
[29] = 1,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 1,
 
[35] = 0,
 
[36] = 1,
 
[37] = 0,
 
[38] = 0,
 
[39] = 1,
 
[40] = 1,
 
[41] = 0,
 
[42] = 1,
 
[43] = 1,
 
[44] = 0,
 
[93] = 1,
 
},
 
[9] = {
 
[1] = 0,
 
[2] = 1,
 
[3] = 1,
 
[4] = 1,
 
[5] = 0,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 0,
 
[12] = 1,
 
[13] = 1,
 
[14] = 0,
 
[15] = 0,
 
[16] = 1,
 
[17] = 1,
 
[18] = 1,
 
[19] = 1,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 1,
 
[29] = 1,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 1,
 
[35] = 0,
 
[36] = 1,
 
[37] = 0,
 
[38] = {value = 2, note = "Yamato-class or remodelled Nagato-class only", code = "Yamato-class, remodelled Nagato-class"},
 
[39] = 1,
 
[40] = 1,
 
[41] = 0,
 
[42] = 1,
 
[43] = 1,
 
[44] = 0,
 
[93] = 1,
 
},
 
[10] = {
 
[1] = 0,
 
[2] = 1,
 
[3] = 1,
 
[4] = 1,
 
[5] = 0,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 1,
 
[12] = 1,
 
[13] = 1,
 
[14] = 0,
 
[15] = 0,
 
[16] = 1,
 
[17] = 1,
 
[18] = 1,
 
[19] = 1,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 1,
 
[26] = 0,
 
[27] = 0,
 
[28] = 1,
 
[29] = 1,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 1,
 
[35] = 1,
 
[36] = 1,
 
[37] = 1,
 
[38] = 0,
 
[39] = 1,
 
[40] = 1,
 
[41] = 0,
 
[42] = 1,
 
[43] = 1,
 
[44] = 0,
 
[93] = 1,
 
},
 
[11] = {
 
[1] = 0,
 
[2] = 0,
 
[3] = 0,
 
[4] = 1,
 
[5] = 0,
 
[6] = 1,
 
[7] = 1,
 
[8] = 1,
 
[9] = 1,
 
[10] = 0,
 
[11] = 0,
 
[12] = 1,
 
[13] = 1,
 
[14] = 0,
 
[15] = 0,
 
[16] = 1,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 1,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 0,
 
[34] = 1,
 
[35] = 1,
 
[36] = 1,
 
[37] = 0,
 
[38] = 0,
 
[39] = 0,
 
[40] = 1,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[12] = {
 
[1] = 0,
 
[2] = 0,
 
[3] = 0,
 
[4] = 0,
 
[5] = 0,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 0,
 
[11] = 0,
 
[12] = 0,
 
[13] = 0,
 
[14] = 0,
 
[15] = 0,
 
[16] = 0,
 
[17] = 0,
 
[18] = 0,
 
[19] = 0,
 
[20] = 0,
 
[21] = 0,
 
[22] = 0,
 
[23] = 0,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 0,
 
[34] = 0,
 
[35] = 0,
 
[36] = 0,
 
[37] = 0,
 
[38] = 0,
 
[39] = 0,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 0,
 
[44] = 0,
 
[93] = 0,
 
},
 
[13] = {
 
[1] = 0,
 
[2] = 0,
 
[3] = 0,
 
[4] = 0,
 
[5] = 1,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 0,
 
[11] = 0,
 
[12] = 0,
 
[13] = 0,
 
[14] = 1,
 
[15] = 0,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 0,
 
[21] = 0,
 
[22] = 1,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 1,
 
[33] = 0,
 
[34] = 0,
 
[35] = 0,
 
[36] = 0,
 
[37] = 1,
 
[38] = 0,
 
[39] = 0,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[14] = {
 
[1] = 0,
 
[2] = 0,
 
[3] = 0,
 
[4] = 0,
 
[5] = 1,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 1,
 
[12] = 0,
 
[13] = 0,
 
[14] = 1,
 
[15] = 0,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 0,
 
[21] = 0,
 
[22] = 1,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 1,
 
[33] = 0,
 
[34] = 0,
 
[35] = 0,
 
[36] = 0,
 
[37] = 1,
 
[38] = 0,
 
[39] = 0,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[15] = {
 
[1] = 0,
 
[2] = 0,
 
[3] = 0,
 
[4] = 0,
 
[5] = 0,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 0,
 
[11] = 0,
 
[12] = 0,
 
[13] = 0,
 
[14] = 0,
 
[15] = 0,
 
[16] = 0,
 
[17] = 0,
 
[18] = 0,
 
[19] = 0,
 
[20] = 0,
 
[21] = 0,
 
[22] = 0,
 
[23] = 0,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 0,
 
[34] = 0,
 
[35] = 0,
 
[36] = 0,
 
[37] = 0,
 
[38] = 0,
 
[39] = 0,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 0,
 
[44] = 0,
 
[93] = 0,
 
},
 
[16] = {
 
[1] = 1,
 
[2] = 0,
 
[3] = 0,
 
[4] = 1,
 
[5] = 0,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 1,
 
[12] = 1,
 
[13] = 1,
 
[14] = {value = 2, note = "Akitsushima Kai only", code = "Akitsushima Kai"},
 
[15] = 1,
 
[16] = 1,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = {value = 2, note = "Excluding Akitsushima", code = "AV excluding Akitsushima"},
 
[23] = 1,
 
[24] = {value = 2, note = "Excluding Akitsushima", code = "AV excluding Akitsushima"},
 
[25] = 0,
 
[26] = 0,
 
[27] = 1,
 
[28] = 0,
 
[29] = 1,
 
[30] = 1,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 1,
 
[35] = {value = 2, note = "Akitsushima Kai only", code = "Akitsushima Kai"},
 
[36] = 1,
 
[37] = 1,
 
[38] = 0,
 
[39] = 1,
 
[40] = 1,
 
[41] = {value = 2, note = "Akitsushima only", code = "Akitsushima"},
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[17] = {
 
[1] = 1,
 
[2] = 0,
 
[3] = 0,
 
[4] = 1,
 
[5] = 0,
 
[6] = 1,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 0,
 
[11] = 0,
 
[12] = 1,
 
[13] = 0,
 
[14] = 0,
 
[15] = 0,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 1,
 
[25] = 1,
 
[26] = 1,
 
[27] = 0,
 
[28] = 0,
 
[29] = 0,
 
[30] = 1,
 
[31] = 0,
 
[32] = 0,
 
[33] = 0,
 
[34] = 1,
 
[35] = 0,
 
[36] = 1,
 
[37] = 1,
 
[38] = 0,
 
[39] = 0,
 
[40] = 1,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[18] = {
 
[1] = 0,
 
[2] = 0,
 
[3] = 0,
 
[4] = 1,
 
[5] = 0,
 
[6] = 1,
 
[7] = 1,
 
[8] = 1,
 
[9] = 1,
 
[10] = 0,
 
[11] = 0,
 
[12] = 1,
 
[13] = 1,
 
[14] = 0,
 
[15] = 0,
 
[16] = 1,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 0,
 
[28] = 1,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 0,
 
[34] = 1,
 
[35] = 1,
 
[36] = 1,
 
[37] = 0,
 
[38] = 0,
 
[39] = 0,
 
[40] = 1,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[19] = {
 
[1] = 1,
 
[2] = 0,
 
[3] = 0,
 
[4] = 1,
 
[5] = 0,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 0,
 
[11] = 0,
 
[12] = 1,
 
[13] = 0,
 
[14] = 0,
 
[15] = 0,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 1,
 
[26] = 0,
 
[27] = 1,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 1,
 
[32] = 0,
 
[33] = 1,
 
[34] = 0,
 
[35] = 0,
 
[36] = 1,
 
[37] = 0,
 
[38] = 0,
 
[39] = 0,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[20] = {
 
[1] = 1,
 
[2] = 0,
 
[3] = 0,
 
[4] = 1,
 
[5] = 0,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 0,
 
[12] = 1,
 
[13] = 0,
 
[14] = 0,
 
[15] = 0,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 1,
 
[26] = 0,
 
[27] = 1,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 1,
 
[34] = 1,
 
[35] = 0,
 
[36] = 1,
 
[37] = 1,
 
[38] = 0,
 
[39] = 1,
 
[40] = 1,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[21] = {
 
[1] = 1,
 
[2] = 1,
 
[3] = 0,
 
[4] = 1,
 
[5] = 1,
 
[6] = 0,
 
[7] = 0,
 
[8] = 0,
 
[9] = 0,
 
[10] = 1,
 
[11] = 0,
 
[12] = 1,
 
[13] = 1,
 
[14] = 1,
 
[15] = 1,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 0,
 
[26] = 0,
 
[27] = 1,
 
[28] = 0,
 
[29] = 0,
 
[30] = 0,
 
[31] = 0,
 
[32] = 0,
 
[33] = 0,
 
[34] = 1,
 
[35] = 0,
 
[36] = 1,
 
[37] = 0,
 
[38] = 0,
 
[39] = 1,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 0,
 
[93] = 0,
 
},
 
[22] = {
 
[1] = 1,
 
[2] = 0,
 
[3] = 0,
 
[4] = 0,
 
[5] = 0,
 
[6] = 0,
 
[7] = 0,
 
[8] = {value = 2, note = "Hayasui Kai only", code = "Hayasui Kai"},
 
[9] = 0,
 
[10] = 1,
 
[11] = 1,
 
[12] = 1,
 
[13] = 0,
 
[14] = {value = 2, note = "Hayasui Kai only", code = "Hayasui Kai"},
 
[15] = 0,
 
[16] = 0,
 
[17] = 1,
 
[18] = 0,
 
[19] = 0,
 
[20] = 1,
 
[21] = 1,
 
[22] = 0,
 
[23] = 1,
 
[24] = 0,
 
[25] = 1,
 
[26] = 0,
 
[27] = 0,
 
[28] = 0,
 
[29] = 0,
 
[30] = 1,
 
[31] = 0,
 
[32] = 0,
 
[33] = 0,
 
[34] = 0,
 
[35] = 1,
 
[36] = 1,
 
[37] = 0,
 
[38] = 0,
 
[39] = 0,
 
[40] = 0,
 
[41] = 0,
 
[42] = 0,
 
[43] = 1,
 
[44] = 1,
 
[93] = 0,
 
},
 
}
 
 
})
 
})
  
Line 1,287: Line 252:
  
 
function EquipmentData:equippable(ship_type)
 
function EquipmentData:equippable(ship_type)
 +
self:_load_compatibility()
 
local equipment_type = self:type()
 
local equipment_type = self:type()
 
if not ship_type then
 
if not ship_type then
 
local result = {}
 
local result = {}
for ship_type, compatibility_table in pairs(self._equipment_compatibility) do
+
for ship_type, compatibility_table in pairs(EquipmentCompatibility) do
 
result[ship_type] = compatibility_table[equipment_type]
 
result[ship_type] = compatibility_table[equipment_type]
 
end
 
end
 
return result
 
return result
 
else
 
else
local compatibility_table = self._equipment_compatibility[ship_type]
+
local compatibility_table = EquipmentCompatibility[ship_type]
 
if compatibility_table then
 
if compatibility_table then
 
local compatibility = compatibility_table[equipment_type]
 
local compatibility = compatibility_table[equipment_type]
Line 1,304: Line 270:
 
end
 
end
 
end
 
end
 +
end
 +
end
 +
 +
function EquipmentData:_load_compatibility()
 +
if not EquipmentCompatibility then
 +
EquipmentCompatibility = require('Module:EquipmentCompatibility')
 
end
 
end
 
end
 
end

Revision as of 08:34, 22 September 2015

Documentation for this module may be created at Module:EquipmentData/doc

local BaseData = require("Module:BaseData")
local EquipmentCompatibility --lazily loaded when equippable() is called
local Formatting = require('Module:Formatting')

local EquipmentData = BaseData({
	_strict_translation_class = "strict-translation",
	_common_translation_class = "common-translation",
	_mobile_hide_class = "mobile-hide",
	_display_none_css = {display = "none"},
})

function EquipmentData:name()
	return self._name
end

function EquipmentData:strict_name()
	return self._strict_name
end

function EquipmentData:common_name()
	return self._common_name or self:name()
end

function EquipmentData:asset_name()
	return self._asset_name or self:common_name()
end

function EquipmentData:link()
	if self._page then
		return self._page, self:name()
	end
	return self:name()
end

function EquipmentData:id()
	return self._id
end

EquipmentData.api_id = EquipmentData.id

function EquipmentData:localized_name()
	return self._localized_name
end

function EquipmentData:reading()
	return self._reading
end

function EquipmentData:list_name()
	return self._list_name
end

function EquipmentData:list_japanese_name()
	return self._list_japanese_name
end

function EquipmentData:list_localized_name()
	return self._list_localized_name
end

function EquipmentData:list_reading()
	return self._list_reading
end

function EquipmentData:comparison_name()
	return self._comparison_name
end

function EquipmentData:comparison_japanese_name()
	return self._comparison_japanese_name
end

function EquipmentData:comparison_localized_name()
	return self._comparison_localized_name
end

function EquipmentData:comparison_reading()
	return self._comparison_reading
end

function EquipmentData:library_name()
	return self._library_name
end

function EquipmentData:library_japanese_name()
	return self._library_japanese_name
end

function EquipmentData:library_localized_name()
	return self._library_localized_name
end

function EquipmentData:library_reading()
	return self._library_reading
end

function EquipmentData:card_name()
	return self._card_name
end

function EquipmentData:card_japanese_name()
	return self._card_japanese_name
end

function EquipmentData:card_localized_name()
	return self._card_localized_name
end

function EquipmentData:card_reading()
	return self._card_reading
end

function EquipmentData:japanese_name()
	return self._japanese_name
end

function EquipmentData:type()
	return self._type
end

function EquipmentData:rarity()
	return self._rarity
end

function EquipmentData:stars()
	return self._stars or self:back()
end

function EquipmentData:back()
	return self._back or self:rarity()
end

function EquipmentData:card()
	if self._card then
		return self._card
	end
	api_id = self:api_id()
	if api_id then
		return Formatting:equipment_card(api_id, self:asset_name())
	end
	return self._card
end

function EquipmentData:fairy()
	if self._fairy then
		return self._fairy
	end
	api_id = self:api_id()
	if api_id then
		return Formatting:equipment_fairy(api_id, self:asset_name())
	end
	return self._fairy
end

function EquipmentData:cg()
	if self._cg then
		return self._cg
	end
	api_id = self:api_id()
	if api_id then
		return Formatting:equipment_cg(api_id, self:asset_name())
	end
	return self._cg
end

function EquipmentData:cg_fairy()
	if self._cg_fairy then
		return self._cg_fairy
	end
	api_id = self:api_id()
	if api_id then
		return Formatting:equipment_full(api_id, self:asset_name())
	end
	return self._cg_fairy
end

function EquipmentData:icon()
	return self._icon
end

function EquipmentData:firepower()
	return self._firepower
end

function EquipmentData:bombing()
	return self._bombing
end

function EquipmentData:torpedo()
	return self._torpedo
end

function EquipmentData:aa()
	return self._aa
end

function EquipmentData:armor()
	return self._armor
end

function EquipmentData:asw()
	return self._asw
end

function EquipmentData:shelling_accuracy()
	return self._shelling_accuracy
end

function EquipmentData:torpedo_accuracy()
	return self._torpedo_accuracy
end

function EquipmentData:evasion()
	return self._evasion
end

function EquipmentData:los()
	return self._los
end

function EquipmentData:speed()
	return self._speed
end

function EquipmentData:luck()
	return self._luck
end

function EquipmentData:range()
	return self._range
end

function EquipmentData:scrap()
	return {fuel = self._scrap_fuel, ammo = self._scrap_ammo, steel = self._scrap_steel, bauxite = self._scrap_bauxite}
end

function EquipmentData:buildable()
	  return self._buildable
end

function EquipmentData:improvement()
	return not not self._improvement
end

function EquipmentData:improvement_from()
	return self._improvement_from
end

function EquipmentData:special()
	return self._special
end

function EquipmentData:equippable(ship_type)
	self:_load_compatibility()
	local equipment_type = self:type()
	if not ship_type then
		local result = {}
		for ship_type, compatibility_table in pairs(EquipmentCompatibility) do
			result[ship_type] = compatibility_table[equipment_type]
		end
		return result
	else
		local compatibility_table = EquipmentCompatibility[ship_type]
		if compatibility_table then
			local compatibility = compatibility_table[equipment_type]
			if type(compatibility) ~= "table" then
				return compatibility
			else
				return compatibility.value, compatibility.note
			end
		end
	end
end

function EquipmentData:_load_compatibility()
	if not EquipmentCompatibility then
		EquipmentCompatibility = require('Module:EquipmentCompatibility')
	end
end

function EquipmentData:create(equip)
	equip = equip or {}
	setmetatable(equip, equip)
	equip.__index = self
	if equip._strict_name then
		equip._common_name = equip._name
		equip._name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._common_name))
		if not equip._page then
			equip._page = equip._common_name
		end
	end
	if equip._localized_strict_name and equip._localized_name then
		equip._localized_common_name = equip._localized_name
		equip._localized_name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._localized_strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._localized_common_name))
	end
	if equip._list_strict_name and equip._list_name then
		equip._list_common_name = equip._list_name
		equip._list_name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._list_strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._list_common_name))
	end
	if equip._list_localized_strict_name and equip._list_localized_name then
		equip._list_localized_common_name = equip._list_localized_name
		equip._list_localized_name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._list_localized_strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._list_localized_common_name))
	end
	if equip._comparison_strict_name and equip._comparison_name then
		equip._comparison_common_name = equip._comparison_name
		equip._comparison_name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._comparison_strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._comparison_common_name))
	end
	if equip._comparison_localized_strict_name and equip._comparison_localized_name then
		equip._comparison_localized_common_name = equip._comparison_localized_name
		equip._comparison_localized_name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._comparison_localized_strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._comparison_localized_common_name))
	end
	if equip._library_strict_name and equip._library_name then
		equip._library_common_name = equip._library_name
		equip._library_name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._library_strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._library_common_name))
	end
	if equip._library_localized_strict_name and equip._library_localized_name then
		equip._library_localized_common_name = equip._library_localized_name
		equip._library_localized_name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._library_localized_strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._library_localized_common_name))
	end
	if equip._card_strict_name and equip._card_name then
		equip._card_common_name = equip._card_name
		equip._card_name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._card_strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._card_common_name))
	end
	if equip._card_localized_strict_name and equip._card_localized_name then
		equip._card_localized_common_name = equip._card_localized_name
		equip._card_localized_name = tostring(mw.html.create('span'):addClass(self._mobile_hide_class):addClass(self._strict_translation_class):css(self._display_none_css):wikitext(equip._card_localized_strict_name))
			 .. tostring(mw.html.create('span'):addClass(self._common_translation_class):wikitext(equip._card_localized_common_name))
	end
	return equip
end

EquipmentData.__call = EquipmentData.create

return EquipmentData