Module:Skills/Summoning: Difference between revisions

I believe that's the first pass at getTabletTable completed
(Added links to names)
(I believe that's the first pass at getTabletTable completed)
Line 29: Line 29:
     rowText = rowText..'\r\n|data-sort-value="'..Fam.name..'"|'..Icons.Icon({Fam.name, type='mark', notext=true, size='50'})
     rowText = rowText..'\r\n|data-sort-value="'..Fam.name..'"|'..Icons.Icon({Fam.name, type='mark', notext=true, size='50'})
     rowText = rowText..'||[['..Fam.name..'|Mark of the '..Fam.name..']]'
     rowText = rowText..'||[['..Fam.name..'|Mark of the '..Fam.name..']]'
     rowText = rowText..'||'..Fam.summoningLevel
     rowText = rowText..'||style="text-align:right"|'..Fam.summoningLevel
     local discoveredArray = {}
     local discoveredArray = {}
     for j, SkillID in Shared.skpairs(Fam.summoningSkills) do
     for j, SkillID in Shared.skpairs(Fam.summoningSkills) do
Line 35: Line 35:
     end
     end
     rowText = rowText..'||'..table.concat(discoveredArray, '<br/>')
     rowText = rowText..'||'..table.concat(discoveredArray, '<br/>')
    table.insert(rowArray, rowText)
  end
  result = result..'\r\n'..table.concat(rowArray, '\r\n')
  result = result..'\r\n|}'
  return result
end
function p.getTabletTable(frame)
  local result = ''
  result = result..'{| class="wikitable sortable stickyHeader"'
  result = result..'\r\n|- class="headerRow-0"'
  result = result..'\r\n!colspan="2"|Name!!'..Icons.Icon({'Summoning', type='skill', notext=true})..' Level'
  result = result..'!!Tier!!Effect!!Description!!Shard Cost!!Secondary Ingredients'
  local Familiars = p.getFamiliars()
  table.sort(Familiars, function(a, b) return a.summoningLevel < b.summoningLevel end)
  local rowArray = {}
  for i, Fam in Shared.skpairs(Familiars) do
    local rowText = '|-'
    rowText = rowText..'\r\n|data-sort-value="'..Fam.name..'"|'..Icons.Icon({Fam.name, type='item', notext=true, size='50'})
    rowText = rowText..'||[['..Fam.name..']]'
    rowText = rowText..'||style="text-align:right"|'..Fam.summoningLevel
    rowText = rowText..'||style="text-align:right"|'..Fam.summoningTier
    rowText = rowText..'||'..Fam.description..'||'..Fam.summoningDescription
    --Currently assuming the shard cost is the same for all recipe variants
    local ShardCostArray = {}
    for j, cost in Shared.skpairs(Fam.summoningReq[1]) do
      if cost.id >= 0 then
        local item = Items.getItemByID(cost.id)
        if item.type == 'Shard' then
          table.insert(ShardCostArray, Icons.Icon({item.name,  type='item', notext=true, qty=cost.qty}))
        end
      end
    end
    rowText = rowText..'||'..table.concat(ShardCostArray, ', ')
    --Now to get all the other cost options
    local OtherCostArray = {}
    local recipeGPCost = SkillData.Summoning.Settings.recipeGPCost
    for j, altCost in Shared.skpairs(Fam.summoningReq) do
      local nonShardArray = {}
      for k, cost in Shared.skpairs(altCost) do
        if cost.id >= 0 then
          local item = Items.getItemByID(cost.id)
          if item.type ~= 'Shard' then
            local sellPrice = item.sellsFor
            if sellPrice < 20 then sellPrice = 20 end
            table.insert(nonShardArray, Icons.Icon({item.name, type='item', notext=true, qty=math.max(1, math.floor(recipeGPCost / sellPrice))}))
          end
        else
          if cost.id == -4 then
            table.insert(nonShardArray, Icons.GP(recipeGPCost))
          elseif cost.id == -5 then
            table.insert(nonShardArray, Icons.SC(recipeGPCost))
          end
        end
      end
      table.insert(OtherCostArray, table.concat(nonShardArray, ', '))
    end
    rowText = rowText..'||'..table.concat(OtherCostArray, "<br/>'''OR''' ")
     table.insert(rowArray, rowText)
     table.insert(rowArray, rowText)
   end
   end