Wowpedia

We have moved to Warcraft Wiki. Click here for information and the new URL.

READ MORE

Wowpedia
Advertisement

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

local getArgs = require('Module:Arguments').getArgs
local p = {}

local prices = {--{'type', 'vendor', gold, champion's seal, darkmoon prize ticket, honor}
  ['head']      = {'armor', 'guild',625,0,0,0},
  ['neck']      = {'armor', 'open', 700,0,0,0},
  ['shoulders'] = {'armor', 'open', 500,25,50,1000},
  ['back']      = {'armor', 'guild',625,0,0,0},
  ['chest']     = {'armor', 'open', 500,25,50,0},
  ['legs']      = {'armor', 'guild',625,0,0,0},
  ['trinket']   = {'armor', 'open', 700,35,70,1250},
  ['one-hand']  = {'weapon','open', 650,25,50,1000},
  ['two-hand']  = {'weapon','open', 750,40,75,1500},
  ['ranged']    = {'weapon','open', 750,40,75,1500},
  ['off hand']  = {'armor', 'open', 500,25,50,0}
}

local upgrades = { --{gold-90, champion's seal-90, darkmoon prize ticket-90, honor-90, gold-100, cs-100, dpt-100, honor-100}
  ['weapon'] = {1200,65,120,2400,5000,0,0,0},
  ['armor']  = {1000,55,100,2000,2000,0,0,0}
}

local reqs = {
   ['head'] = 'honored guild reputation',
   ['back'] = 'honored guild reputation',
   ['legs'] = 'a guild that has earned [[Working Better as a Team]]'
}

local function open(data,pvp)
  frame = mw.getCurrentFrame()
  s = string.format('<b>%s</b> is sold by the following [[heirloom]] vendors:\n* [[Krom Stoutarm]] (Ironforge) or [[Estelle Gendry]] (Undercity): %s', 
    mw.title.getCurrentTitle().text,frame:expandTemplate{title='cost', args={data[3]}})
  if not pvp and data[4] > 0 then
    s = s..'\n* [[Dame Evniki Kapsalis]] (Argent Tournament Grounds): '.. frame:expandTemplate{title='cost',args={cs=data[4]}}
  end
  if not pvp and data[5] > 0 then
    s = s..'\n* [[Daenrand Dawncrest]] (Darkmoon Faire): '.. frame:expandTemplate{title='cost',args={dpt=data[5]}}
  end
  if pvp and data[6] > 0 then
    s = s..'\n* [[Liliana Emberfrost]] (Stormwind) or [[Galra]] (Orgrimmar): '..frame:expandTemplate{title='cost',args={hp=data[6]}}
  end
  return s
end

local function guild(cost,slot)
  frame = mw.getCurrentFrame()
  return string.format('<b>%s</b> is sold by [[guild vendor]]s for %s and requires %s:\n%s',
    mw.title.getCurrentTitle().text, frame:expandTemplate{title='cost',args={cost}}, reqs[slot],
    frame:expandTemplate{title=':Guild vendor'})
end

local function upgrade(type)
  frame = mw.getCurrentFrame()
  data = upgrades[type]
  suffix = (type == 'armor') and 'Armor Casing' or 'Scabbard'

  s = '<p>The tokens to upgrade this item to be effective from levels 1 to 90 and 1 to 100 are sold by the following vendors:</p>\n'
  .. '* [[Ancient Heirloom ' .. suffix .. ']] (1-90)\n'
  .. '** [[Krom Stoutarm]] (Ironforge) or [[Estelle Gendry]] (Undercity): '
  .. frame:expandTemplate{title='cost',args={data[1]}} .. '\n'
  .. '** [[Dame Evniki Kapsalis]] (Argent Tournament Grounds): '
  .. frame:expandTemplate{title='cost',args={cs=data[2]}} .. '\n'
  .. '** [[Daenrand Dawncrest]] (Darkmoon Faire): '
  .. frame:expandTemplate{title='cost',args={dpt=data[3]}} .. '\n'
  .. '** [[Liliana Emberfrost]] (Stormwind) or [[Galra]] (Orgrimmar): '
  .. frame:expandTemplate{title='cost',args={hp=data[4]}} .. '\n'
  .. '* [[Timeworn Heirloom ' .. suffix ..']] (1-100)\n'
  .. '** [[Krom Stoutarm]] (Ironforge) or [[Estelle Gendry]] (Undercity): '
  .. frame:expandTemplate{title='cost',args={data[5]}}
  return s
end

function p.main(frame)
  args = getArgs(frame, {wrappers = 'Template:6.1 Heirloom source'})
  t = {}
  slot = string.lower(args.slot or '')
  data=prices[slot]

  if data == nil then
    return '<span class="error">Invalid slot. Must be one of: head, neck, shoulders, back, chest, legs, trinket, one-hand, two-hand, ranged, off hand</span>'
  end

  if data[2]=='open' then
    t[#t+1] = open(data,args.pvp)
  else
    t[#t+1] = guild(data[3],slot)
  end

  t[#t+1] = upgrade(data[1])
  return table.concat(t,'\n')
end

return p
Advertisement