Module:EquipmentData
Revision as of 12:18, 16 February 2015 by com>Ckwng (Consolidate scrap accessors, add special effect accessor, add equippable checker)
Documentation for this module may be created at Module:EquipmentData/doc
local BaseData = require("Module:BaseData")
local EquipmentData = BaseData({
_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,
},
[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,
},
[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] = 0,
[23] = 1,
[24] = 0,
[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,
},
[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,
},
[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,
},
[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,
},
[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,
},
[8] = {
[1] = 0,
[2] = 0,
[3] = 1,
[4] = 1,
[5] = {value = 2, note = "Bismarck drei only"},
[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,
},
[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"},
},
[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,
},
[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,
},
[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,
},
[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,
},
[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,
},
[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,
},
[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] = 0,
[15] = 1,
[16] = 1,
[17] = 1,
[18] = 0,
[19] = 0,
[20] = 1,
[21] = 1,
[22] = 1,
[23] = 1,
[24] = 1,
[25] = 0,
[26] = 0,
[27] = 1,
[28] = 0,
[29] = 1,
[30] = 1,
[31] = 0,
[32] = 0,
[33] = 1,
[34] = 1,
[35] = 0,
[36] = 1,
[37] = 1,
[38] = 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,
},
[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,
},
[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,
},
[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,
},
[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,
},
}
})
function EquipmentData:name()
return self._name
end
function EquipmentData:link()
if self._page then
return self._page, self:name()
else
return self:name()
end
end
function EquipmentData:id()
return self._id
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:rarity()
end
function EquipmentData:back()
return self._back or self:stars()
end
function EquipmentData:card()
return self._card
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: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:upgradable()
return not not self._upgradable
end
function EquipmentData:special()
return self._special
end
function EquipmentData:equippable(ship_type)
local compatibility_table = self._equipment_compatibility[ship_type]
if compatibility_table then
local compatibility = compatibility_table[self:type()]
if type(compatibility) ~= "table" then
return compatibility
else
return compatibility.value, compatibility.note
end
end
end
function EquipmentData:create(equip)
equip = equip or {}
setmetatable(equip, equip)
equip.__index = self
return equip
end
EquipmentData.__call = EquipmentData.create
return EquipmentData