-- Plugin for the Hearthstone database provided by hearthstonejson.com. if not hs_dat then hs_dat = {} local jstr, res = HTTPS.request('http://hearthstonejson.com/json/AllSets.json') if res ~= 200 then print('Error connecting to hearthstonejson.com.') print('hearthstone.lua will not be enabled.') end local jdat = JSON.decode(jstr) for k,v in pairs(jdat) do for key,val in pairs(v) do table.insert(hs_dat, val) end end end local doc = [[ /hearthstone Returns Hearthstone card info. ]] local triggers = { '^/h[earth]*s[tone]*[@'..bot.username..']*' } local format_card = function(card) local ctype = card.type if card.race then ctype = card.race end if card.rarity then ctype = card.rarity .. ' ' .. ctype end if card.playerClass then ctype = ctype .. ' (' .. card.playerClass .. ')' elseif card.faction then ctype = ctype .. ' (' .. card.faction .. ')' end local stats if card.cost then stats = card.cost .. 'c' if card.attack then stats = stats .. ' | ' .. card.attack .. 'a' end if card.health then stats = stats .. ' | ' .. card.health .. 'h' end if card.durability then stats = stats .. ' | ' .. card.durability .. 'd' end elseif card.health then stats = card.health .. 'h' end local info = '' if card.text then info = card.text:gsub('',''):gsub('%$','') if card.flavor then info = info .. '\n' .. card.flavor end elseif card.flavor then info = card.flavor else info = nil end local s = card.name .. '\n' .. ctype if stats then s = s .. '\n' .. stats end if info then s = s .. '\n' .. info end return s end local action = function(msg) local input = msg.text_lower:input() if not input then sendReply(msg, doc) return end local output = '' for k,v in pairs(hs_dat) do if string.lower(v.name):match(input) then output = output .. format_card(v) .. '\n\n' end end output = output:trim() if output:len() == 0 then sendReply(msg, config.errors.results) return end sendReply(msg, output) end return { action = action, triggers = triggers, doc = doc }