Editing Module:Equipment bonuses infotable 0 You do not have permission to edit this page, for the following reasons: The action you have requested is limited to users in one of the groups: Autoconfirmed users, FANDOM Staff, FANDOM Helpers, Wiki Managers, Content Team Members. {|class="messagebox info" |width="50px"| |Please log in to edit the wiki. Joining is free and it only takes a minute.We hope that you sign up and become a member of our community! |} You must confirm your e-mail address before editing pages. Please set and validate your e-mail address through your user preferences. more + You can view and copy the source of this page: -- <pre> local p = {} local yesno = require("Module:Yesno") local weaknessClickpick = mw.loadData("Module:Weakness clickpic/data") local Exchange = require("Module:Exchange") local Coins = require("Module:Coins") local AddCommas = require("Module:Addcommas") local skillClickpick = require("Module:Skill clickpic") -- Accepted rowTypes function makeRowType(c, iconOnly) local v = weaknessClickpick[c] local s = v.text or v.link if iconOnly then return string.format("[[File:%s|26x26px|link=%s]]",v.image,v.link) else return string.format("[[File:%s|26x26px|link=%s]] [[%s|%s]]",v.image,v.link,v.link,s) end end local rowTypes = { melee = makeRowType('melee', false), ['melee icon'] = makeRowType('melee', true), ranged = makeRowType('ranged', false), ['ranged icon'] = makeRowType('ranged', true), magic =makeRowType('magic', false), ['magic icon'] =makeRowType('magic', true), all = makeRowType('none', false), ['all icon'] = makeRowType('none', true), none = "-" } -- Accepted headerTypes local headerTypes = { melee = "[[File:Attack.png|x34px|link=Melee]]<br />Item", ranged = "[[File:Ranged.png|x34px|link=Ranged]]<br />Item", magic = "[[File:Magic.png|x34px|link=Magic]]<br />Item", all = "[[File:CombatSwords.png|All]]<br />Item", hybrid = "[[File:CombatSwords.png|Hybrid]]<div style='display:inline-block; width:50px; text-align:center; margin-top:-10px; margin-bottom:10px; position:relative; top:12px'>'''Hybrid''' '''Item'''</div>", mixed = "Item", none = "Item" } -- Accepted weapon styles local styles = { stab = "'''Stab'''", stabbing = "'''Stab'''", crush = "'''Crush'''", crushing = "'''Crush'''", slash = "'''Slash'''", slashing = "'''Slash'''", arrow = "'''Arrow'''", arrows = "'''Arrow'''", bolt = "'''Bolt'''", bolts = "'''Bolt'''", thrown = "'''Thrown'''", spell = "'''Spell-<br />casting'''", spells = "'''Spell-<br />casting'''", ['spell-casting'] = "'''Spell-<br />casting'''", none = "'''None'''" } local function isnotempty(s) return not (s == nil or s == "") end local function addSortCell(row, n, type) for i=1,n do row:tag("th"):addClass(type):done() end return row end function p.main(frame) local frameargs = frame:getParent().args --local frameargs = frame local htmltable = mw.html.create("table") -- The output of this module local tblrow = "" local tblcell = "" local totalPrice = 0 -- Sum of the individual prices local totalspanrange = 6 -- This is the minimum spanrange of the label incase the totals parameter is used local imageRowsSpan = 0 -- Default row span -- Create the tabel header --[[Parameters used (variable type) [note] class / type (string) [@mandatory] noinv (yes/no) [@optional, default is no, if yes the rowspan of the class header is 1 otherwise its 2] skill (string) [@optional, accepted values are those for Module:Skill clickpic] skill2 (string) [@optional, accepted values are those for Module:Skill clickpic] noweapon (yes/no) [@optional, default is no, if yes hides the weapons stats] price (ge/number/string) [@optional, ge is the the string "ge", ge and number are preferred so it adds to the totalprice] price2 (ge/number/string) [@optional] image (string) [@optional, image is given by the form "image name.png"] image2 (string) [@optional] rows (number) [@optional, only affects image and image2] tot (number) [@optional, only affects image and image2] sortable (yes/no) [@optional] ]] htmltable :addClass("wikitable infotableBonuses") :css("text-align", "center") -- Make first header row tblrow = htmltable:tag("tr") -- Set the header class tblcell = tblrow:tag("th") :attr("rowspan", "2") :wikitext(headerTypes[string.lower(frameargs.class or frameargs.type or "")] or ("''Type Unknown<br /><small>[" .. tostring(mw.uri.fullUrl( mw.title.getCurrentTitle().prefixedText, "action=edit")) .. " edit]</small>''")) if not yesno(frameargs.noinv) then tblcell :attr("colspan", "2") end -- Add extra type colomn if the header class is mixed if string.lower(frameargs.class or frameargs.type or "") == "mixed" then tblrow :tag("th") :attr("rowspan", "2") :wikitext("Type") :done() totalspanrange = totalspanrange + 1 end -- Add extra skill column if isnotempty(frameargs.skill) then tblrow :tag("th") :attr("rowspan", "2") :css("vertical-align", "bottom") :wikitext(skillClickpick._main(frameargs.skill or "")) :tag("br") :done() :tag("span") :css("font-size", "90%") :wikitext("Level") :done() :done() totalspanrange = totalspanrange + 1 end -- Add extra skill2 column if isnotempty(frameargs.skill2) then tblrow :tag("th") :attr("rowspan", "2") :css("vertical-align", "bottom") :wikitext(skillClickpick._main(frameargs.skill2 or "")) :tag("br") :done() :tag("span") :css("font-size", "90%") :wikitext("Level") :done() :done() totalspanrange = totalspanrange + 1 end -- Show/hide weapon stats if not yesno(frameargs.noweapon) then tblrow :tag("th") :attr("colspan", "3") :wikitext("Main-hand") :done() :tag("th") :attr("colspan", "3") :wikitext("Off-hand") :done() totalspanrange = totalspanrange + 6 end -- Add atribute columns tblrow :tag("th") :attr("colspan", "3") :attr("title", "Determines their character's endurance determined by their armour rating, life point boost, and prayer bonus") :wikitext("Attribute") :done() -- Add style bonuses columns tblrow :tag("th") :attr("colspan", "3") :wikitext("Style bonus") :done() -- Add price and/or price2 column if yesno(frameargs.price) ~= yesno(frameargs.price2) then -- XOR tblrow :tag("th") :attr("rowspan", "2") :wikitext("Price") :done() totalspanrange = totalspanrange + 1 elseif yesno(frameargs.price) and yesno(frameargs.price2) then tblrow :tag("th") :attr("rowspan", "2") :wikitext("Price<br />Main-hand") :done() :tag("th") :attr("rowspan", "2") :wikitext("Price<br />Off-hand") :done() totalspanrange = totalspanrange + 2 end -- Get default rowspan for images if they are used if isnotempty(frameargs.image) or isnotempty(frameargs.image2) then for i,j in ipairs(frameargs) do imageRowsSpan = imageRowsSpan + 1 end end -- Add image column if isnotempty(frameargs.image) then tblrow :tag("th") :attr("rowspan", tostring(2 + tonumber(frameargs.rows or imageRowsSpan) + tonumber(frameargs.tot or 0))) :css("width", "125px") :css("text-align", "center") :css("vertical-align", "center") :wikitext("[[File:" .. frameargs.image .. "]]") :done() end -- Add image2 comlumn if isnotempty(frameargs.image2) then tblrow :tag("th") :attr("rowspan", tostring(2 + tonumber(frameargs.rows or imageRowsSpan) + tonumber(frameargs.tot or 0))) :css("width", "125px") :css("text-align", "center") :css("vertical-align", "center") :wikitext("[[File:" .. frameargs.image2 .. "]]") :done() end -- Make second header row tblrow = htmltable:tag("tr") -- Show/hide weapon stats if not yesno(frameargs.noweapon) then tblrow :tag("th") :attr("title", "Mainhand attacking style") :wikitext("Style") :done() :tag("th") :attr("title", "Mainhand weapon damage") :wikitext("Dmg") :done() :tag("th") :attr("title", "Mainhand weapon accuracy") :wikitext("Acc") :done() :tag("th") :attr("title", "Offhand attacking style") :wikitext("Style") :done() :tag("th") :attr("title", "Offhand weapon damage") :wikitext("Dmg") :done() :tag("th") :attr("title", "Offhand weapon accuracy") :wikitext("Acc") :done() end -- Ass atribute and style bonuses columns tblrow :tag("th") :wikitext(skillClickpick._main("Defence")) :done() :tag("th") :wikitext(skillClickpick._main("Constitution")) :done() :tag("th") :wikitext(skillClickpick._main("Prayer")) :done() :tag("th") :wikitext("[[File:Attack-icon.png|20px|link=Melee]]") :done() :tag("th") :wikitext("[[File:Ranged-icon.png|20px|link=Ranged]]") :done() :tag("th") :wikitext("[[File:Magic-icon.png|20px|link=Magic]]") :done() :done() -- sortable row if yesno(frameargs.sortable) then htmltable:addClass("sortable") tblrow = htmltable:tag("tr") if yesno(frameargs.noinv) then addSortCell(tblrow, 1, "text") else tblrow :tag("th") :addClass("unsortable") :done() addSortCell(tblrow, 1, "text") end if string.lower(frameargs.class or frameargs.type or "") == "mixed" then addSortCell(tblrow, 1, "text") end if isnotempty(frameargs.skill) then addSortCell(tblrow, 1, "number") end if isnotempty(frameargs.skill2) then addSortCell(tblrow, 1, "number") end if not yesno(frameargs.noweapon) then addSortCell(tblrow, 6, "number") end addSortCell(tblrow, 6, "number") if yesno(frameargs.price) then addSortCell(tblrow, 1, "number") end if yesno(frameargs.price2) then addSortCell(tblrow, 1, "number") end end -- Header ends here -- Table rows are created here --[[Parameters used (variable type) [note] [all paramerers are @optional] totals (yes/no) [Default is no] label (string) [Only has an effect if totals is used] ge (string) image (string) [Only works if the ge parameter is not used] name (string) [Only works if the ge parameter is not used] type (string) [Default is "-"] level/skill (number/string) [Default is "-"] level2/skill2 (number/string) [Default is "-"] mstyle (string) [Default is "-"] mdmg (number) [Default is "-"] macc (number) [Default is "-"] ostyle (string) [Default is "-"] odmg (number) [Default is "-"] oacc (number) [Default is "-"] armour (number) [Default is "0"] life (number) [Default is "0"] prayer (number) [Default is "0"] strength (number) [Default is "-"] ranged (number) [Default is "-"] magic (number) [Default is "-"] price (ge/number/string) [ge only works if the ge parameter is used. ge and number are preferred if the totals prameter is used] price2 (ge/number/string) priceimage (string) [can be used incase the ge parameter is not used but you want the price to add to the totalprice] dontaddtototal (yes/no) [default is no] nocoinstotals (yes/no) [default is no] ref (string) ]] for i,j in ipairs(frameargs) do -- Iterate in order over all frameargs with a integer key -- Parse the framearg j into a table of rowargs, j = {{Equipment bonuses inforow}} local argstable = {} for argduo in j:gmatch("!(.-)!") do local argname = argduo:match("&(.-)&") local argvalue = argduo:match( "µ(.-)µ") if argvalue == "" then argvalue = nil end argstable[argname] = argvalue end -- Add extra row if the totals + label parameters are used if yesno(argstable.totals) and isnotempty(argstable.label) then tblrow = htmltable:tag("tr") :addClass("attribute-total sortbottom") tblcell = tblrow:tag("th") :attr("rowspan", "2") :wikitext("Totals") if not yesno(frameargs.noinv) then tblcell :attr("colspan","2") end tblrow :tag("th") :attr("colspan", totalspanrange) :wikitext(argstable.label) :done() end -- Create a new inforow tblrow = htmltable:tag("tr") -- Add special css to the row incase the totals parameter is used if yesno(argstable.totals) then tblrow :addClass("attribute-total sortbottom") end -- Add the totals text cell if yesno(argstable.totals) and not isnotempty(argstable.label) then tblcell = tblrow:tag("th") :wikitext("Totals") if not yesno(frameargs.noinv) then tblcell :attr("colspan","2") end end -- Add the item image and name cells if isnotempty(argstable.ge) then tblrow :tag("td") :wikitext("[[File:" .. argstable.ge .. ".png]]") :done() :tag("td") :css("text-align", "left") :wikitext("[[" .. argstable.ge .. "]]" .. ((argstable.ref and (" " .. argstable.ref)) or "")) :done() elseif isnotempty(argstable.image) then tblrow :tag("td") :wikitext("[[File:" .. argstable.image .. "]]") :done() if isnotempty(argstable.name) then tblrow :tag("td") :css("text-align", "left") :wikitext(argstable.name .. ((argstable.ref and (" " .. argstable.ref)) or "")) :done() end elseif isnotempty(argstable.name) then tblrow :tag("td") :css("text-align", "left") :wikitext(argstable.name .. ((argstable.ref and (" " .. argstable.ref)) or "")) :done() end -- Add the type cell incase the header class is mixed if string.lower(frameargs.class or frameargs.type or "") == "mixed" then tblrow :tag("td") :wikitext(rowTypes[string.lower(argstable.type or "")] or argstable.type or "-") :done() end -- Add the skill cell if isnotempty(frameargs.skill) then tblrow :tag("td") :wikitext(argstable.level or argstable.skill or "-") :attr("data-sort-value", argstable.level or argstable.skill or 0) :done() end -- Add the skill2 cell if isnotempty(frameargs.skill2) then tblrow :tag("td") :wikitext(argstable.level2 or argstable.skill2 or "-") :attr("data-sort-value", argstable.level2 or argstable.skill2 or 0) :done() end -- Show/hide weapon stats if not yesno(frameargs.noweapon) then tblrow :tag("td") :addClass("attribute-value") :wikitext(styles[string.lower(argstable.mstyle or "")] or argstable.mstyle or "-") :done() :tag("td") :addClass("attribute-value") :wikitext(argstable.mdmg or "-") :attr("data-sort-value", argstable.mdmg or 0) :done() :tag("td") :addClass("attribute-value") :wikitext(argstable.macc or "-") :attr("data-sort-value", argstable.macc or 0) :done() :tag("td") :wikitext(styles[string.lower(argstable.ostyle or "")] or argstable.ostyle or "-") :done() :tag("td") :wikitext(argstable.odmg or "-") :attr("data-sort-value", argstable.odmg or 0) :done() :tag("td") :wikitext(argstable.oacc or "-") :attr("data-sort-value", argstable.oacc or 0) :done() end -- Add atribute and style bonuses cells tblrow :tag("td") :addClass("attribute-value") :wikitext(argstable.armour or "0") :done() :tag("td") :addClass("attribute-value") :wikitext(argstable.life or "0") :done() :tag("td") :addClass("attribute-value") :wikitext(argstable.prayer or "0") :done() :tag("td") :wikitext(argstable.strength or "-") :attr("data-sort-value", argstable.strength or 0) :done() :tag("td") :wikitext(argstable.ranged or "-") :attr("data-sort-value", argstable.ranged or 0) :done() :tag("td") :wikitext(argstable.magic or "-") :attr("data-sort-value", argstable.magic or 0) :done() -- Add price cell if yesno(frameargs.price) then -- Total price if (yesno(argstable.totals) and argstable.price == nil) or string.lower(argstable.price or "") == "total" then if isnotempty(argstable.priceimage) then tblrow :tag("td") :css("text-align", "right") :wikitext((argstable.priceimage and ("[[File:" .. argstable.priceimage .. "]] ")) or "") :tag("span") :addClass("coins coins-pos") :wikitext(AddCommas._add(totalPrice)) :done() :done() else tblrow :tag("td") :css("text-align", "right") :wikitext(Coins._amount(totalPrice, false)) :done() end -- Empty the cell incase price2 = ge and price is not given elseif string.lower(argstable.price2 or "") == "ge" and argstable.price == nil then tblrow :tag("td") :wikitext("-") :done() -- GE price, this is the default value if no price parameter was given elseif string.lower(argstable.price or "") == "ge" or argstable.price == nil then -- Check if the item exist on the GE if Exchange._exists(argstable.ge) then local GEprice = Exchange._price(argstable.ge) if not yesno(argstable.dontaddtototal) then totalPrice = totalPrice + GEprice end tblrow :tag("td") :css("text-align", "right") :wikitext(Coins._amount(GEprice, false)) :done() else -- Empty the cell if the item doesn't exist on the GE and it defaulted to GEprice, else give an error if string.lower(argstable.price or "") == "ge" then tblrow :tag("td") :tag("span") :css("color", "red") :wikitext("Item does not exist on the [[Grand Exchange|") :tag("span") :css("color", "darkred") :wikitext("Grand Exchange") :done() :wikitext("]]") :done() :done() else tblrow :tag("td") :wikitext("-") :done() end end -- If the price parameter is just a number elseif tonumber(argstable.price) ~= nil then if not yesno(argstable.dontaddtototal) then totalPrice = totalPrice + tonumber(argstable.price) end if argstable.priceimage == nil then tblrow :tag("td") :css("text-align", "right") :wikitext(Coins._amount(tonumber(argstable.price))) :done() else tblrow :tag("td") :css("text-align", "right") :wikitext((argstable.priceimage and ("[[File:" .. argstable.priceimage .. "]] ")) or "") :tag("span") :addClass("coins coins-pos") :wikitext(AddCommas._add(tonumber(argstable.price))) :done() :done() end -- If the price parameter is a non recognized value else tblrow :tag("td") :css("text-align", "right") :wikitext(argstable.price) :done() end end -- Add price2 cell if yesno(frameargs.price2) then -- Empty the cell incase price = ge and price2 is not given or if the totals parameter is used if (yesno(argstable.totals) and argstable.price2 == nil) or (argstable.price2 == nil and string.lower(argstable.price or "") == "ge") then tblrow :tag("td") :wikitext("-") :done() -- GE price, this is the default value if no price2 parameter was given elseif string.lower(argstable.price2 or "") == "ge" or argstable.price2 == nil then -- Check if the item exists on the GE if string.lower(argstable.price2 or "") == "ge" and argstable.price == nil and Exchange._exists(string.lower(argstable.ge or ""))then local GEprice2 = Exchange._price(string.lower(argstable.ge or "")) tblrow :tag("td") :css("text-align", "right") :wikitext(Coins._amount(GEprice2, false)) :done() -- Check if the off-hand of the item exists on the GE elseif Exchange._exists("Off-hand " .. string.lower(argstable.ge or "")) then local GEprice2 = Exchange._price("Off-hand " .. string.lower(argstable.ge or "")) tblrow :tag("td") :css("text-align", "right") :wikitext(Coins._amount(GEprice2, false)) :done() else -- Empty the cell if the item doesn't exist on the GE and it defaulted to GEprice, else give an error if string.lower(argstable.price2 or "") == "ge" then tblrow :tag("td") :tag("span") :css("color", "red") :wikitext("Item does not exist on the [[Grand Exchange|") :tag("span") :css("color", "darkred") :wikitext("Grand Exchange") :done() :wikitext("]]") :done() :done() else tblrow :tag("td") :wikitext("-") :done() end end -- If the proce2 parameter is a number elseif tonumber(argstable.price2) ~= nil then if argstable.priceimage == nil then tblrow :tag("td") :wikitext(Coins._amount(argstable.price2)) :done() else tblrow :tag("td") :css("text-align", "right") :wikitext((argstable.priceimage and ("[[File:" .. argstable.priceimage .. "]] ")) or "") :tag("span") :addClass("coins coins-pos") :wikitext(AddCommas._add(argstable.price2)) :done() end -- If the price parameter is a non recognized value else tblrow :tag("td") :css("text-align", "right") :wikitext(argstable.price2) :done() end end -- Inforow ends here end -- Table is complete here return htmltable end return p Return to Module:Equipment bonuses infotable. Edit summary Show changes