Anonymous

Module:Pets: Difference between revisions

From Melvor Idle
getPetPageTable: Re-order icon/name columns for consistency with other tables
(Remove dependency on Module:CombatAreas so we can use in Module:Shop)
(getPetPageTable: Re-order icon/name columns for consistency with other tables)
(One intermediate revision by the same user not shown)
Line 15: Line 15:
local areas = GameData.getEntities(key, function(area) return area.pet ~= nil end)
local areas = GameData.getEntities(key, function(area) return area.pet ~= nil end)
for i, area in ipairs(areas) do
for i, area in ipairs(areas) do
result[area.pet.petID] = { id = area.id, name = area.name, type = area.type, weight = area.pet.weight }
result[area.pet.petID] = {
id = area.id,
name = area.name,
type = area.type,
weight = area.pet.weight,
fixedChance = (area.fixedPetClears ~= nil and area.fixedPetClears) or area.pet.weight == 1
}
end
end
end
end
Line 32: Line 38:
function p.getPets(checkFunc)
function p.getPets(checkFunc)
return GameData.getEntities('pets', checkFunc)
return GameData.getEntities('pets', checkFunc)
end
--Returns the expansion icon for the pet if it has one
function p.getExpansionIcon(frame)
local petName = frame.args ~= nil and frame.args[1] or frame
local pet = p.getPet(petName)
if pet == nil then
return "ERROR: No pet named " .. petName .. " exists in the data module[[Category:Pages with script errors]]"
end
return Icons.getExpansionIcon(pet.id)
end
end


Line 51: Line 68:
['Festive Cool Rock'] = { text = '[[Holiday Event 2021]]', useIcon = false },
['Festive Cool Rock'] = { text = '[[Holiday Event 2021]]', useIcon = false },
['Jerry the Giraffe'] = { text = '[[Golbin Raid|Golbin Raid Shop]]', useIcon = false },
['Jerry the Giraffe'] = { text = '[[Golbin Raid|Golbin Raid Shop]]', useIcon = false },
['Preston the Platypus'] = { text = '[[Golbin Raid|Golbin Raid Shop]]', useIcon = false }
['Preston the Platypus'] = { text = '[[Golbin Raid|Golbin Raid Shop]]', useIcon = false },
['Ty'] = { text = 'Mastery', useIcon = true },
['Golden Golbin'] = { text = Icons.Icon({'Golbin', type='monster'}) .. ' kills', useIcon = false},
['Saki'] = { text = 'Mastery', useIcon = true }
}
}
local petSourceText = nil
local petSourceText = nil
Line 104: Line 124:
if source ~= nil and source.weight ~= nil then
if source ~= nil and source.weight ~= nil then
-- Pet is from a dungeon or combat/slayer area
-- Pet is from a dungeon or combat/slayer area
-- Flaky logic for determining if pet is guaranteed or not
if source.fixedChance then
if source.weight <= 10 then
return 'Guaranteed after ' .. Shared.formatnum(source.weight) .. (source.weight == 1 and ' clear' or ' clears')
return 'Guaranteed after ' .. Shared.formatnum(source.weight) .. (source.weight == 1 and ' clear' or ' clears')
else
else
Line 140: Line 159:
table.insert(resultPart, '|-')
table.insert(resultPart, '|-')
table.insert(resultPart, '|style="text-align: center;"|' .. Icons.Icon({pet.name, type='pet', size=60, notext=true}))
table.insert(resultPart, '|style="text-align: center;"|' .. Icons.Icon({pet.name, type='pet', size=60, notext=true}))
table.insert(resultPart, '|' .. Icons.Icon({pet.name, type='pet', noicon=true}))
table.insert(resultPart, '|' .. Icons.getExpansionIcon(pet.id) .. Icons.Icon({pet.name, type='pet', noicon=true}))
table.insert(resultPart, '| ' .. p._getPetEffect(pet))
table.insert(resultPart, '| ' .. p._getPetEffect(pet))
end
end
Line 176: Line 195:
local dropChance = p._getPetChance(pet)
local dropChance = p._getPetChance(pet)


result = '{| class="wikitable infobox" style="float:right; clear:right;"\r\n|-\r\n'
result = '{| class="wikitable infobox"\r\n|-\r\n'
result = result..'! '..name..'\r\n|-\r\n| '
result = result..'! ' .. Icons.getExpansionIcon(pet.id) .. name .. '\r\n|-\r\n| '
result = result..'style="text-align: center;"|' .. Icons.Icon({name, type='pet', size='250', notext=true})
result = result..'style="text-align: center;"|' .. Icons.Icon({name, type='pet', size='250', notext=true})
result = result.."\r\n|-\r\n|'''Pet ID:''' "..pet.id
result = result.."\r\n|-\r\n|'''Pet ID:''' "..pet.id
Line 194: Line 213:


result = '{|class="wikitable sortable lighttable stickyHeader"'
result = '{|class="wikitable sortable lighttable stickyHeader"'
result = result..'\r\n|- class="headerRow-0"\r\n! Name !! Image !! Acquired From !! Effect'
result = result..'\r\n|- class="headerRow-0"\r\n! colspan="2"| Pet !! Acquired From !! Effect'


for i, thisPet in ipairs(GameData.rawData.pets) do
for i, thisPet in ipairs(GameData.rawData.pets) do
result = result..'\r\n|-\r\n|'..Icons.Icon({thisPet.name, type='pet', noicon=true})
result = result..'\r\n|-\r\n|class="table-img" data-sort-value="' .. thisPet.name .. '"| ' .. Icons.Icon({thisPet.name, size='60', type='pet', notext=true})
result = result..'||style="text-align: center;"|'..Icons.Icon({thisPet.name, size='60', type='pet', notext=true})
result = result..'||' .. Icons.getExpansionIcon(thisPet.id) ..Icons.Icon({thisPet.name, type='pet', noicon=true})
result = result..'||'..p._getPetSourceText(thisPet)
result = result..'||'..p._getPetSourceText(thisPet)
result = result..'||'..p._getPetEffect(thisPet)
result = result..'||'..p._getPetEffect(thisPet)