{{#invoke:CurrencyDiamondsConverter|currencyToDiamonds|cog=2}} 8
{{#invoke:CurrencyDiamondsConverter|diamondsToCurrency|diamonds=2}} Файл:Sprocket.pngЗвездочка 2

local p = {}

local oneDiamondCost = 16

local spurNominal = 1
local bevelNominal = 8
local sprocketNominal = 16
local cogNominal = 64
local crownNominal = 512
local sunNominal = 4096

function p.currencyToDiamonds(frame)
  local spur = tonumber(frame.args['spur']) or 0
  local bevel = tonumber(frame.args['bevel']) or 0
  local sprocket = tonumber(frame.args['sprocket']) or 0
  local cog = tonumber(frame.args['cog']) or 0
  local crown = tonumber(frame.args['crown']) or 0
  local sun = tonumber(frame.args['sun']) or 0

  local sum = spur * spurNominal + bevel * bevelNominal + sprocket * sprocketNominal + cog * cogNominal + crown * crownNominal + sun * sunNominal

  local diamonds = math.floor(sum / oneDiamondCost + 0.5)

  return diamonds
end

function p.diamondsToCurrency(frame)
  local diamonds = tonumber(frame.args['diamonds']) or 0

  local sum = diamonds * oneDiamondCost

  local sun = math.floor(sum / sunNominal)
  sum = sum - sun * sunNominal

  local crown = math.floor(sum / crownNominal)
  sum = sum - crown * crownNominal

  local cog = math.floor(sum / cogNominal)
  sum = sum - cog * cogNominal

  local sprocket = math.floor(sum / sprocketNominal)
  sum = sum - sprocket * sprocketNominal

  local bevel = math.floor(sum / bevelNominal)
  sum = sum - bevel * bevelNominal

  local spur = math.floor(sum / spurNominal)

  local coinTemplate = '[[Файл:%s.png|link=Валюта|class=pixelated coin16px]][[Валюта|%s]] %i'

  local result = ''

  if sun > 0 then
    result = result .. string.format(coinTemplate, 'Sun', 'Солнышко', sun)
  end

  if crown > 0 then
    result = result .. string.format(coinTemplate, 'Crown', 'Коронка', crown)
  end

  if cog > 0 then
    result = result .. string.format(coinTemplate, 'Cog', 'Шестеренка', cog)
  end

  if sprocket > 0 then
    result = result .. string.format(coinTemplate, 'Sprocket', 'Звездочка', sprocket)
  end

  if bevel > 0 then
    result = result .. string.format(coinTemplate, 'Bevel', 'Фаска', bevel)
  end

  if spur > 0 then
    result = result .. string.format(coinTemplate, 'Spur', 'Шпора', spur)
  end

  return result
end

return p