mNo edit summary |
No edit summary |
||
(33 intermediate revisions by 3 users not shown) | |||
Line 31: | Line 31: | ||
return "<span class='"..table.concat(class," ").."'>"..mw.getCurrentFrame():preprocess("{{filepath:"..file.."}}"):gsub("?cb=(.*)$","/window-crop/width/"..tsize.."/x-offset/"..(pos%rowlen)*tsize.."/y-offset/"..math.floor(pos/rowlen)*tsize.."/window-width/"..tsize.."/window-height/"..tsize.."?fill=cb-%1").."</span>[".."[Category:AutoPurge]]" |
return "<span class='"..table.concat(class," ").."'>"..mw.getCurrentFrame():preprocess("{{filepath:"..file.."}}"):gsub("?cb=(.*)$","/window-crop/width/"..tsize.."/x-offset/"..(pos%rowlen)*tsize.."/y-offset/"..math.floor(pos/rowlen)*tsize.."/window-width/"..tsize.."/window-height/"..tsize.."?fill=cb-%1").."</span>[".."[Category:AutoPurge]]" |
||
+ | end |
||
+ | |||
+ | local function getSpriteOffset(pos, tsize, rowlen) |
||
+ | tsize = tsize or 32 |
||
+ | rowlen = rowlen or 64 |
||
+ | |||
+ | return "-"..(pos%rowlen)*tsize.."px -"..math.floor(pos/rowlen)*tsize.."px" |
||
end |
end |
||
Line 67: | Line 74: | ||
function item.Sprite(frame) |
function item.Sprite(frame) |
||
return getItemSpriteByName(frame.args[1]) |
return getItemSpriteByName(frame.args[1]) |
||
+ | end |
||
+ | |||
+ | function item.SpriteOffset(frame) |
||
+ | local tsize = frame.args[2] or 32 |
||
+ | local data = getItemData(md5.md5(frame.args[1])) |
||
+ | local pos = data[1] |
||
+ | return getSpriteOffset(pos,tsize,false) |
||
end |
end |
||
Line 75: | Line 89: | ||
function item.ItemLink(frame) |
function item.ItemLink(frame) |
||
local name = frame.args[1] or "" |
local name = frame.args[1] or "" |
||
+ | dname = name |
||
+ | if(name == "Card Block Seed") then |
||
+ | name = "Card Block - Spade Seed" |
||
+ | end |
||
+ | if(name == "Tangram Block Seed") then |
||
+ | name = "Tangram Block A Seed" |
||
+ | |||
+ | end |
||
local d = getItemData(md5.md5(name)) |
local d = getItemData(md5.md5(name)) |
||
local s = getItemSpriteByName(name, d) |
local s = getItemSpriteByName(name, d) |
||
Line 87: | Line 109: | ||
local iname = name:gsub("%sSeed$","") |
local iname = name:gsub("%sSeed$","") |
||
if(d[3] ~= md5.md5(iname)) then return s.." [["..name.."]]" end |
if(d[3] ~= md5.md5(iname)) then return s.." [["..name.."]]" end |
||
− | return s.." [["..iname.."|".. |
+ | return s.." [["..iname.."|"..dname.."]]" |
else |
else |
||
return s.." [["..name.."]]" |
return s.." [["..name.."]]" |
||
Line 109: | Line 131: | ||
local c = {} |
local c = {} |
||
addCategory(c,"Item") |
addCategory(c,"Item") |
||
− | table.insert(s,"__NOTOC__<div class=' |
+ | table.insert(s,"__NOTOC__<div class='gtw-card item-card'>") |
− | table.insert(s,"<div class='header'><h3>") |
+ | table.insert(s,"<div class='card-header'><h3>") |
table.insert(s,getItemSprite(d)) |
table.insert(s,getItemSprite(d)) |
||
− | table.insert(s," <b |
+ | table.insert(s," <b>"..name) |
if(d[3]<999) then |
if(d[3]<999) then |
||
− | table.insert(s," <small |
+ | table.insert(s," <small>(Rarity: "..d[3]..")</small>") |
end |
end |
||
table.insert(s,"</b></h3><span></span></div>") |
table.insert(s,"</b></h3><span></span></div>") |
||
-------------------- |
-------------------- |
||
− | table.insert(s,"<div class=' |
+ | table.insert(s,"<div class='card-text'>") |
if((frame.args[1] or ""):len()>0) then |
if((frame.args[1] or ""):len()>0) then |
||
if(d[2]==64) then table.insert(s,"This is a 1 lb. "..name..". ") end |
if(d[2]==64) then table.insert(s,"This is a 1 lb. "..name..". ") end |
||
Line 128: | Line 150: | ||
table.insert(s,"</div>") |
table.insert(s,"</div>") |
||
-------------------- |
-------------------- |
||
− | table.insert(s,"<b class=' |
+ | table.insert(s,"<b class='card-title'>Properties</b>") |
− | table.insert(s,"<div class=' |
+ | table.insert(s,"<div class='card-text'>") |
local l = {} |
local l = {} |
||
Line 135: | Line 157: | ||
table.insert(l,"This item can be placed in two directions, depending on the direction you're facing.") end |
table.insert(l,"This item can be placed in two directions, depending on the direction you're facing.") end |
||
if((d[4]/2)%2>=1) then |
if((d[4]/2)%2>=1) then |
||
− | table.insert(l,"This item has special properties you can adjust with the Wrench.") end |
+ | table.insert(l,"This item has special properties you can adjust with the [[Wrench]].") end |
if((d[4]/4)%2>=1) then |
if((d[4]/4)%2>=1) then |
||
table.insert(l,"This item never drops any [[seed]]s.") end |
table.insert(l,"This item never drops any [[seed]]s.") end |
||
Line 152: | Line 174: | ||
table.insert(l,"This item is PUBLIC: Even if it's locked, anyone can smash it.") end |
table.insert(l,"This item is PUBLIC: Even if it's locked, anyone can smash it.") end |
||
if((d[4]/16384)%2>=1) then |
if((d[4]/16384)%2>=1) then |
||
− | if(id==3762) then table.insert(l,"This item can only be created during SummerFest!") |
+ | if(id==3762) then table.insert(l,"This item can only be created during [[SummerFest]]!") |
− | else table.insert(l,"This item can only be created during WinterFest!") end |
+ | else table.insert(l,"This item can only be created during [[WinterFest]]!") end |
end |
end |
||
if((d[4]/32768)%2>=1) then |
if((d[4]/32768)%2>=1) then |
||
− | table.insert(l,"This item cannot be dropped or traded.") |
+ | table.insert(l,"This item cannot be [[dropping|dropped]] or [[trading|traded]].") |
+ | addCategory(s,"Untradable") end |
||
if((d[14]/262144)%2>=1) then |
if((d[14]/262144)%2>=1) then |
||
− | table.insert(l,"This item can be transmuted.") |
+ | table.insert(l,"This item can be [[:Category:Transmutable|transmuted]].") |
+ | addCategory(s,"Transmutable") end |
||
if(d[2]==3) then |
if(d[2]==3) then |
||
table.insert(l,"A lock makes it so only you (and designated friends) can edit an area.") end |
table.insert(l,"A lock makes it so only you (and designated friends) can edit an area.") end |
||
Line 164: | Line 188: | ||
table.insert(l,"This item has no use... by itself.") end |
table.insert(l,"This item has no use... by itself.") end |
||
if(d[2]==64) then |
if(d[2]==64) then |
||
− | table.insert(l,"This is a fish. It can only be placed in a Fish Tank. You can't divide fish into pieces.") end |
+ | table.insert(l,"This is a fish. It can only be placed in a [[Fish Tank]]. You can't divide fish into pieces.") end |
− | if(d[2]==107) then |
+ | if(d[2]==107 and name ~= "Ancient Shards") then |
table.insert(l,"This item can be upgraded.") end |
table.insert(l,"This item can be upgraded.") end |
||
Line 172: | Line 196: | ||
table.insert(s,"</div>") |
table.insert(s,"</div>") |
||
-------------------- |
-------------------- |
||
− | table.insert(s,"<b class=' |
+ | table.insert(s,"<b class='card-title'>Data</b>") |
− | table.insert(s,"<table class=' |
+ | table.insert(s,"<table class='card-field'>") |
table.insert(s,"<tr><th>Type</th><td>") |
table.insert(s,"<tr><th>Type</th><td>") |
||
Line 231: | Line 255: | ||
table.insert(s,"</table>") |
table.insert(s,"</table>") |
||
+ | |||
+ | if(ca[4] =="Foreground" or ca[4] =="Background") then |
||
+ | table.insert(s,"<b class='card-title invisible-high-impact'>Paint Preview</b>") |
||
+ | table.insert(s,"<div class='card-text paint-preview invisible-high-impact'>") |
||
+ | table.insert(s,"<div class='paint'>"..getItemSprite(d).."<i>None</i></div>") |
||
+ | table.insert(s,"<div class='paint red'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Red").." Red</i></div>") |
||
+ | table.insert(s,"<div class='paint yellow'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Yellow").." Yellow</i></div>") |
||
+ | table.insert(s,"<div class='paint green'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Green").." Green</i></div>") |
||
+ | table.insert(s,"<div class='paint aqua'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Aqua").." Aqua</i></div>") |
||
+ | table.insert(s,"<div class='paint blue'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Blue").." Blue</i></div>") |
||
+ | table.insert(s,"<div class='paint purple'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Purple").." Purple</i></div>") |
||
+ | table.insert(s,"<div class='paint charcoal'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Charcoal").." Charcoal</i></div>") |
||
+ | table.insert(s,"</div>") |
||
+ | end |
||
+ | |||
--table.insert(s,mw.getCurrentFrame():preprocess("<div class='footer'>Incorrect Texture? Press [{{fullurl:{{FULLPAGENAME}}|action=purge}} here] to reload it.</div>")) |
--table.insert(s,mw.getCurrentFrame():preprocess("<div class='footer'>Incorrect Texture? Press [{{fullurl:{{FULLPAGENAME}}|action=purge}} here] to reload it.</div>")) |
||
table.insert(s,"</div>") |
table.insert(s,"</div>") |
||
Line 236: | Line 275: | ||
----- [Handle Category] ----- |
----- [Handle Category] ----- |
||
− | if(d[2]== |
+ | if(d[2]==2) then |
− | addCategory(c," |
+ | addCategory(c,"Doors") |
+ | elseif(d[2]==3) then |
||
+ | addCategory(c,"Locks") |
||
+ | elseif(d[2]==5) then |
||
+ | addCategory(c,"Treasure Blocks") |
||
+ | elseif(d[2]==6) then |
||
+ | addCategory(c,"Deadly Blocks") |
||
+ | elseif(d[2]==7) then |
||
+ | addCategory(c,"Trampoline Blocks") |
||
elseif(d[2]==8) then |
elseif(d[2]==8) then |
||
− | addCategory(c," |
+ | addCategory(c,"Consumables") |
+ | elseif(d[2]==9 or d[2]==104 or d[2]==105 or d[2]==106) then |
||
+ | addCategory(c,"Entrances") |
||
+ | elseif(d[2]==10) then |
||
+ | addCategory(c,"Signs") |
||
+ | elseif(d[2]==11) then |
||
+ | addCategory(c,"SFX Foreground Blocks") |
||
+ | elseif(d[2]==12) then |
||
+ | addCategory(c,"Toggleable Animated Blocks") |
||
+ | elseif(d[2]==14) then |
||
+ | addCategory(c,"Platforms") |
||
+ | elseif(d[2]==16) then |
||
+ | addCategory(c,"Pain Blocks (Lava)") |
||
elseif(d[2]==20) then |
elseif(d[2]==20) then |
||
addCategory(c,"Clothes") |
addCategory(c,"Clothes") |
||
addCategory(c,getItemType("clothingType",d[8])[1].." (Clothes)") |
addCategory(c,getItemType("clothingType",d[8])[1].." (Clothes)") |
||
+ | elseif(d[2]==21 or d[2]==122) then |
||
+ | addCategory(c,"Animated Foreground Blocks") |
||
+ | elseif(d[2]==22) then |
||
+ | addCategory(c,"SFX Background Blocks") |
||
+ | elseif(d[2]==23) then |
||
+ | addCategory(c,"Toggleable Background Blocks") |
||
+ | elseif(d[2]==24) then |
||
+ | addCategory(c,"Bouncy Blocks") |
||
+ | elseif(d[2]==25) then |
||
+ | addCategory(c,"Pain Blocks") |
||
+ | elseif(d[2]==26) then |
||
+ | addCategory(c,"Portals") |
||
+ | elseif(d[2]==27) then |
||
+ | addCategory(c,"Checkpoints") |
||
+ | elseif(d[2]==28) then |
||
+ | addCategory(c,"Sheet Music") |
||
+ | elseif(d[2]==29) then |
||
+ | addCategory(c,"Slippery Blocks") |
||
+ | elseif(d[2]==31) then |
||
+ | addCategory(c,"Toggleable Blocks") |
||
+ | elseif(d[2]==32) then |
||
+ | addCategory(c,"Chests") |
||
+ | elseif(d[2]==33) then |
||
+ | addCategory(c,"Mailboxes") |
||
+ | elseif(d[2]==34) then |
||
+ | addCategory(c,"Bulletin Boards") |
||
+ | elseif(d[2]==35) then |
||
+ | addCategory(c,"Event Mystery Blocks") |
||
+ | elseif(d[2]==36) then |
||
+ | addCategory(c,"Random Blocks") |
||
elseif(d[2]==37 or d[2]==129) then |
elseif(d[2]==37 or d[2]==129) then |
||
− | addCategory(c," |
+ | addCategory(c,"Components") |
elseif(d[2]==38) then |
elseif(d[2]==38) then |
||
− | addCategory(c," |
+ | addCategory(c,"Providers") |
+ | elseif(d[2]==39) then |
||
+ | addCategory(c,"Chemical Combiners") |
||
+ | elseif(d[2]==41 or d[2]==81 or d[2]==89) then |
||
+ | addCategory(c,"Weather Machines") |
||
+ | elseif(d[2]==45) then |
||
+ | addCategory(c,"Toggleable Deadly Blocks") |
||
+ | elseif(d[2]==52) then |
||
+ | addCategory(c,"Game Blocks") |
||
+ | elseif(d[2]==56) then |
||
+ | addCategory(c,"Crystals") |
||
+ | elseif(d[2]==60) then |
||
+ | addCategory(c,"Pushing Blocks") |
||
elseif(d[2]==64) then |
elseif(d[2]==64) then |
||
addCategory(c,"Fish") |
addCategory(c,"Fish") |
||
+ | elseif(d[2]==98) then |
||
+ | addCategory(c,"Ovens") |
||
elseif(d[2]==107) then |
elseif(d[2]==107) then |
||
− | addCategory(c," |
+ | addCategory(c,"Artifacts") |
+ | elseif(d[2]==108) then |
||
+ | addCategory(c,"Jelly Blocks") |
||
+ | elseif(d[2]==113) then |
||
+ | addCategory(c,"CyBlock Bots") |
||
+ | elseif(d[2]==114) then |
||
+ | addCategory(c,"CyBlock Commands") |
||
+ | elseif(d[2]==115) then |
||
+ | addCategory(c,"Lucky Tokens") |
||
+ | elseif(d[2]==120) then |
||
+ | addCategory(c,"Startopia Starship Blocks") |
||
+ | elseif(d[2]==123 or d[2]==124 or d[2]==125) then |
||
+ | addCategory(c,"Autobreaking Blocks") |
||
end |
end |
||
+ | local isBlock = false |
||
if(ca[4] =="Foreground") then |
if(ca[4] =="Foreground") then |
||
− | addCategory(c,"Foreground |
+ | addCategory(c,"Foreground Blocks") |
+ | isBlock = true |
||
end |
end |
||
if(ca[4] =="Background") then |
if(ca[4] =="Background") then |
||
− | addCategory(c,"Background |
+ | addCategory(c,"Background Blocks") |
+ | isBlock = true |
||
+ | end |
||
+ | if(d[7]==0 and isBlock) then |
||
+ | addCategory(c,"Non-solid Blocks") |
||
end |
end |
||
if(mw.title.getCurrentTitle().nsText=="") then |
if(mw.title.getCurrentTitle().nsText=="") then |
Revision as of 14:32, 12 July 2020
Documentation for this module may be created at Module:Item/doc
local item = {}
local md5 = require('Module:Md5')
local function in_array(h,a)
for k,v in ipairs(a) do if v == h then return true end end return false
end
local function addCategory(t,n)
table.insert(t,"[".."[Category:"..n.."]]")
end
local function getItemData(hash)
local a = mw.loadData('Module:Item/Data')
return a[hash] or {-1, -1}
end
local function getItemType(name,id)
local a = mw.loadData('Module:Item/Type')
return (a[name] or {})[id] or {}
end
local function getSprite(file, pos, tsize, rowlen, class)
tsize = tsize or 32
rowlen = rowlen or 64
class = class or {}
table.insert(class,"growsprite")
return "<span class='"..table.concat(class," ").."'>"..mw.getCurrentFrame():preprocess("{{filepath:"..file.."}}"):gsub("?cb=(.*)$","/window-crop/width/"..tsize.."/x-offset/"..(pos%rowlen)*tsize.."/y-offset/"..math.floor(pos/rowlen)*tsize.."/window-width/"..tsize.."/window-height/"..tsize.."?fill=cb-%1").."</span>[".."[Category:AutoPurge]]"
end
local function getSpriteOffset(pos, tsize, rowlen)
tsize = tsize or 32
rowlen = rowlen or 64
return "-"..(pos%rowlen)*tsize.."px -"..math.floor(pos/rowlen)*tsize.."px"
end
local function getSeedSprite(data)
local class = {"seed"}
local pos = data[1]
return getSprite("SeedSprites.png",pos,16,false,class)
end
local function getTreeSprite(data)
local pos = data[1]
return getSprite("TreeSprites.png",pos,32)
end
local function getItemSprite(data)
local class = {}
local pos = data[1]
if(data[6] == 25) then table.insert(class,"shifty") end
return getSprite("ItemSprites.png",pos,32,false,class)
end
local function getItemSpriteByName(name, data)
local class = {}
data = data or getItemData(md5.md5(name))
if(data[2] == -1) then
local treeTest_name = name:gsub("%sTree$","")
if(treeTest_name ~= name) then
local data2 = getItemData(md5.md5(treeTest_name))
if(data2[2] > -1) then return getTreeSprite(data2) end
end
end
if(data[2] == 19 and not in_array(name,{"Magic Egg","Mutated Seed"})) then return getSeedSprite(data) end
return getItemSprite(data)
end
function item.Sprite(frame)
return getItemSpriteByName(frame.args[1])
end
function item.SpriteOffset(frame)
local tsize = frame.args[2] or 32
local data = getItemData(md5.md5(frame.args[1]))
local pos = data[1]
return getSpriteOffset(pos,tsize,false)
end
function item.SpritePos(frame)
return getSprite(frame.args[1],frame.args[2],frame.args[3],frame.args[4])
end
function item.ItemLink(frame)
local name = frame.args[1] or ""
dname = name
if(name == "Card Block Seed") then
name = "Card Block - Spade Seed"
end
if(name == "Tangram Block Seed") then
name = "Tangram Block A Seed"
end
local d = getItemData(md5.md5(name))
local s = getItemSpriteByName(name, d)
if(d[2] == -1) then
local tname = name:gsub("%sTree$","")
if(getItemData(md5.md5(tname))[2] ~= -1) then
return s.." [["..tname.."|"..name.."]]"
end
return s.." Unknown Item"
end
if(d[2] == 19) then
local iname = name:gsub("%sSeed$","")
if(d[3] ~= md5.md5(iname)) then return s.." [["..name.."]]" end
return s.." [["..iname.."|"..dname.."]]"
else
return s.." [["..name.."]]"
end
end
function item.Infobox(frame)
local name = frame.args["name"] or mw.title.getCurrentTitle().text
local d = getItemData(md5.md5(name))
local s = {}
if(d[2] == -1 or d[2] == 19) then
table.insert(s,"<div><b style='color: #F00'>Invalid Item</b></div>")
if(mw.title.getCurrentTitle().nsText=="") then
addCategory(s,"Invalid Item")
end
return table.concat(s)
end
local c = {}
addCategory(c,"Item")
table.insert(s,"__NOTOC__<div class='gtw-card item-card'>")
table.insert(s,"<div class='card-header'><h3>")
table.insert(s,getItemSprite(d))
table.insert(s," <b>"..name)
if(d[3]<999) then
table.insert(s," <small>(Rarity: "..d[3]..")</small>")
end
table.insert(s,"</b></h3><span></span></div>")
--------------------
table.insert(s,"<div class='card-text'>")
if((frame.args[1] or ""):len()>0) then
if(d[2]==64) then table.insert(s,"This is a 1 lb. "..name..". ") end
table.insert(s,frame.args[1])
else
table.insert(s,"<i class='warning'>Description missing.</i>")
addCategory(c,"Missing Description")
end
table.insert(s,"</div>")
--------------------
table.insert(s,"<b class='card-title'>Properties</b>")
table.insert(s,"<div class='card-text'>")
local l = {}
if((d[4]/1)%2>=1) then
table.insert(l,"This item can be placed in two directions, depending on the direction you're facing.") end
if((d[4]/2)%2>=1) then
table.insert(l,"This item has special properties you can adjust with the [[Wrench]].") end
if((d[4]/4)%2>=1) then
table.insert(l,"This item never drops any [[seed]]s.") end
if((d[4]/32)%2>=1) then
if(d[2]==20) then table.insert(l,"This item can kill zombies during a Pandemic!")
else table.insert(l,"This item can't be used on yourself.") end
end
if((d[4]/128)%2>=1) then
table.insert(l,"This item can only be used in World-Locked worlds.") end
if((d[4]/512)%2>=1) then
table.insert(l,"This item can't be destroyed - smashing it will return it to your backpack if you have room!")
end
if((d[4]/2048)%2>=1) then
table.insert(l,"A tree of this type can bear surprising fruit!") end
if((d[4]/4096)%2>=1) then
table.insert(l,"This item is PUBLIC: Even if it's locked, anyone can smash it.") end
if((d[4]/16384)%2>=1) then
if(id==3762) then table.insert(l,"This item can only be created during [[SummerFest]]!")
else table.insert(l,"This item can only be created during [[WinterFest]]!") end
end
if((d[4]/32768)%2>=1) then
table.insert(l,"This item cannot be [[dropping|dropped]] or [[trading|traded]].")
addCategory(s,"Untradable") end
if((d[14]/262144)%2>=1) then
table.insert(l,"This item can be [[:Category:Transmutable|transmuted]].")
addCategory(s,"Transmutable") end
if(d[2]==3) then
table.insert(l,"A lock makes it so only you (and designated friends) can edit an area.") end
if(d[2]==37 or d[2]==114) then
table.insert(l,"This item has no use... by itself.") end
if(d[2]==64) then
table.insert(l,"This is a fish. It can only be placed in a [[Fish Tank]]. You can't divide fish into pieces.") end
if(d[2]==107 and name ~= "Ancient Shards") then
table.insert(l,"This item can be upgraded.") end
if(#l==0) then table.insert(s,"None")
else table.insert(s,table.concat(l,"<br>")) end
table.insert(s,"</div>")
--------------------
table.insert(s,"<b class='card-title'>Data</b>")
table.insert(s,"<table class='card-field'>")
table.insert(s,"<tr><th>Type</th><td>")
local ca = getItemType("category",d[2])
if(d[2]==20) then ca = getItemType("clothingType",d[8]) end
if(not ca[1]) then table.insert(s,getItemSpriteByName("Blank").." <i class='warning'>Unknown ("..d[2]..")</i>")
else
table.insert(s,getItemSpriteByName(ca[3]).." "..ca[1])
if(ca[4] ~= false) then table.insert(s,"<small> - "..ca[4].."</small>") end
if(#ca[2] > 0) then table.insert(s,"<br><small class='desc'>"..ca[2].."</small>") end
end
table.insert(s,"</td></tr><tr><th>Chi</th><td>")
local chi_uc = mw.getContentLanguage():ucfirst((frame.args[2] or ""):lower())
if(chi_uc == "None" or in_array(d[2],{20,107})) then
table.insert(s,"None")
elseif(in_array(chi_uc,{"Fire","Water","Earth","Wind"})) then
table.insert(s,getItemSpriteByName("Element - "..chi_uc).." "..chi_uc)
addCategory(c,"Chi - "..chi_uc)
else
table.insert(s,"<i class='warning'>Unknown</i>")
addCategory(c,"Missing Chi")
end
table.insert(s,"</td></tr><tr><th>Texture Type</th><td>")
local tt = getItemType("textureType",d[5])
table.insert(s,getSprite("TextureTypeSprite.png", d[5], 32, 8).." "..(tt[1] or "<i class='warning'>Unknown</i>"))
table.insert(s,"</td></tr><tr><th>Collision Type</th><td>")
local ct = getItemType("collisionType",d[7])
table.insert(s,getSprite("CollisionTypeSprite.png", d[7], 32, 8).." "..(ct[1] or "<i class='warning'>Unknown</i>"))
table.insert(s,"</td></tr><tr><th>Hardness</th><td>"..getItemSpriteByName("Fist").." ")
table.insert(s,math.ceil(d[9]/6).." Hits<br>"..getItemSpriteByName("Pickaxe").." ")
table.insert(s,math.ceil(d[9]/8).." Hits<br><small>Restores after <b>"..d[10].."s</b>")
table.insert(s," of inactivity.</small></td></tr>")
table.insert(s,"<tr><th>Seed Color</th><td class='seedColor'>"..getSeedSprite(d).." <div>")
table.insert(s,"<span style='background:"..d[11].."'></span> "..d[11].."<br>")
table.insert(s,"<span style='background:"..d[12].."'></span> "..d[12].."</div></td></tr>")
table.insert(s,"<tr><th>Grow Time</th><td>"..getTreeSprite(d).." ")
if(d[13]>=604800) then table.insert(s,math.floor(d[13]/604800).."w ") end
if(d[13]>=86400) then table.insert(s,math.floor(d[13]%604800/86400).."d ") end
if(d[13]>=3600) then table.insert(s,math.floor(d[13]%86400/3600).."h ") end
if(d[13]>=60) then table.insert(s,math.floor(d[13]%3600/60).."m ") end
table.insert(s,(d[13]%60).."s</td></tr>")
table.insert(s,"<tr><th>Default Gems Drop</th><td>"..getItemSpriteByName("Gems").." ")
if(d[3]==999) then table.insert(s,"N/A".."</td></tr>")
else
if((d[14]/131072)%2>=1) then table.insert(s,"0</td></tr>")
elseif(d[3]>30) then table.insert(s,"0 - "..math.floor(d[3]/4+1).."</td></tr>")
elseif(d[3]>=8) then table.insert(s,"0 - "..math.floor(math.floor(d[3]/4)*0.75+1).."</td></tr>")
else table.insert(s,"0 - 1</td></tr>") end
end
table.insert(s,"</table>")
if(ca[4] =="Foreground" or ca[4] =="Background") then
table.insert(s,"<b class='card-title invisible-high-impact'>Paint Preview</b>")
table.insert(s,"<div class='card-text paint-preview invisible-high-impact'>")
table.insert(s,"<div class='paint'>"..getItemSprite(d).."<i>None</i></div>")
table.insert(s,"<div class='paint red'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Red").." Red</i></div>")
table.insert(s,"<div class='paint yellow'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Yellow").." Yellow</i></div>")
table.insert(s,"<div class='paint green'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Green").." Green</i></div>")
table.insert(s,"<div class='paint aqua'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Aqua").." Aqua</i></div>")
table.insert(s,"<div class='paint blue'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Blue").." Blue</i></div>")
table.insert(s,"<div class='paint purple'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Purple").." Purple</i></div>")
table.insert(s,"<div class='paint charcoal'>"..getItemSprite(d).."<i>"..getItemSpriteByName("Paint Bucket - Charcoal").." Charcoal</i></div>")
table.insert(s,"</div>")
end
--table.insert(s,mw.getCurrentFrame():preprocess("<div class='footer'>Incorrect Texture? Press [{{fullurl:{{FULLPAGENAME}}|action=purge}} here] to reload it.</div>"))
table.insert(s,"</div>")
----- [Handle Category] -----
if(d[2]==2) then
addCategory(c,"Doors")
elseif(d[2]==3) then
addCategory(c,"Locks")
elseif(d[2]==5) then
addCategory(c,"Treasure Blocks")
elseif(d[2]==6) then
addCategory(c,"Deadly Blocks")
elseif(d[2]==7) then
addCategory(c,"Trampoline Blocks")
elseif(d[2]==8) then
addCategory(c,"Consumables")
elseif(d[2]==9 or d[2]==104 or d[2]==105 or d[2]==106) then
addCategory(c,"Entrances")
elseif(d[2]==10) then
addCategory(c,"Signs")
elseif(d[2]==11) then
addCategory(c,"SFX Foreground Blocks")
elseif(d[2]==12) then
addCategory(c,"Toggleable Animated Blocks")
elseif(d[2]==14) then
addCategory(c,"Platforms")
elseif(d[2]==16) then
addCategory(c,"Pain Blocks (Lava)")
elseif(d[2]==20) then
addCategory(c,"Clothes")
addCategory(c,getItemType("clothingType",d[8])[1].." (Clothes)")
elseif(d[2]==21 or d[2]==122) then
addCategory(c,"Animated Foreground Blocks")
elseif(d[2]==22) then
addCategory(c,"SFX Background Blocks")
elseif(d[2]==23) then
addCategory(c,"Toggleable Background Blocks")
elseif(d[2]==24) then
addCategory(c,"Bouncy Blocks")
elseif(d[2]==25) then
addCategory(c,"Pain Blocks")
elseif(d[2]==26) then
addCategory(c,"Portals")
elseif(d[2]==27) then
addCategory(c,"Checkpoints")
elseif(d[2]==28) then
addCategory(c,"Sheet Music")
elseif(d[2]==29) then
addCategory(c,"Slippery Blocks")
elseif(d[2]==31) then
addCategory(c,"Toggleable Blocks")
elseif(d[2]==32) then
addCategory(c,"Chests")
elseif(d[2]==33) then
addCategory(c,"Mailboxes")
elseif(d[2]==34) then
addCategory(c,"Bulletin Boards")
elseif(d[2]==35) then
addCategory(c,"Event Mystery Blocks")
elseif(d[2]==36) then
addCategory(c,"Random Blocks")
elseif(d[2]==37 or d[2]==129) then
addCategory(c,"Components")
elseif(d[2]==38) then
addCategory(c,"Providers")
elseif(d[2]==39) then
addCategory(c,"Chemical Combiners")
elseif(d[2]==41 or d[2]==81 or d[2]==89) then
addCategory(c,"Weather Machines")
elseif(d[2]==45) then
addCategory(c,"Toggleable Deadly Blocks")
elseif(d[2]==52) then
addCategory(c,"Game Blocks")
elseif(d[2]==56) then
addCategory(c,"Crystals")
elseif(d[2]==60) then
addCategory(c,"Pushing Blocks")
elseif(d[2]==64) then
addCategory(c,"Fish")
elseif(d[2]==98) then
addCategory(c,"Ovens")
elseif(d[2]==107) then
addCategory(c,"Artifacts")
elseif(d[2]==108) then
addCategory(c,"Jelly Blocks")
elseif(d[2]==113) then
addCategory(c,"CyBlock Bots")
elseif(d[2]==114) then
addCategory(c,"CyBlock Commands")
elseif(d[2]==115) then
addCategory(c,"Lucky Tokens")
elseif(d[2]==120) then
addCategory(c,"Startopia Starship Blocks")
elseif(d[2]==123 or d[2]==124 or d[2]==125) then
addCategory(c,"Autobreaking Blocks")
end
local isBlock = false
if(ca[4] =="Foreground") then
addCategory(c,"Foreground Blocks")
isBlock = true
end
if(ca[4] =="Background") then
addCategory(c,"Background Blocks")
isBlock = true
end
if(d[7]==0 and isBlock) then
addCategory(c,"Non-solid Blocks")
end
if(mw.title.getCurrentTitle().nsText=="") then
table.insert(s,table.concat(c))
end
return table.concat(s)
end
return item