The Alchemist Code Wiki
READ MORE
The Alchemist Code Wiki
Explore
Main Page
All Pages
Interactive Maps
Units
Team Building Tools
Global Tier List
ACDB Unit Builder
Raid Buffer/Debuffer List
Team Building
About Units
About Units
List of Units
Jobs
About Jobs
List of Jobs
Job Upgrades
Job+ List
Equipment
Unit Shards
Elemental Shards
Enlightenment
Truth Seals
Obtainables
Mementos
About Mementos
List of Mementos
Memento Quick Reference
Mementos Rated By Usefulness
Memento Leader Skills
Gear
About Gear
Free (Permanent)
Free (Event)
Summon
VCR (Memento)
PvP
Enlightened Gear Skills
Consumables
Gameplay & Guides
Gameplay
About the Game
Lore
Mechanics
New Player Help
Help Center
Beginner's Guide
Reroll Guide
Glossary of Terms
Recommended Free Units
Shard Farm Priority
Banners
Lore
Main Story
Ancient Story
Genesis Story
Sacred Stone Memories
Babel Chronicles
Character Stories
Event Stories
NPCs
News and Events
List of Events by Date
References
Update History
Shops
Milestones
Friends
Mercenaries
Alchemia Port
Experience Charts
Other Resources
Guides and Rankings
Discord
Alchemist Code Database
Quests
Story
Character Quests
Events
Multiplay
Raids
Battle
Babel Expedition
FANDOM
Fan Central
BETA
Games
Anime
Movies
TV
Video
Wikis
Explore Wikis
Community Central
Start a Wiki
Don't have an account?
Register
Sign In
FANDOM
Explore
Current Wiki
Start a Wiki
Don't have an account?
Register
Sign In
Sign In
Register
The Alchemist Code Wiki
21,532
pages
Explore
Main Page
All Pages
Interactive Maps
Units
Team Building Tools
Global Tier List
ACDB Unit Builder
Raid Buffer/Debuffer List
Team Building
About Units
About Units
List of Units
Jobs
About Jobs
List of Jobs
Job Upgrades
Job+ List
Equipment
Unit Shards
Elemental Shards
Enlightenment
Truth Seals
Obtainables
Mementos
About Mementos
List of Mementos
Memento Quick Reference
Mementos Rated By Usefulness
Memento Leader Skills
Gear
About Gear
Free (Permanent)
Free (Event)
Summon
VCR (Memento)
PvP
Enlightened Gear Skills
Consumables
Gameplay & Guides
Gameplay
About the Game
Lore
Mechanics
New Player Help
Help Center
Beginner's Guide
Reroll Guide
Glossary of Terms
Recommended Free Units
Shard Farm Priority
Banners
Lore
Main Story
Ancient Story
Genesis Story
Sacred Stone Memories
Babel Chronicles
Character Stories
Event Stories
NPCs
News and Events
List of Events by Date
References
Update History
Shops
Milestones
Friends
Mercenaries
Alchemia Port
Experience Charts
Other Resources
Guides and Rankings
Discord
Alchemist Code Database
Quests
Story
Character Quests
Events
Multiplay
Raids
Battle
Babel Expedition
Editing
Module:Page/Item
Back to page
Edit source
View history
Talk (0)
Edit Page
Module:Page/Item
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local render_item_icon = require('Module:Render/Item')._icon local render_recipe_table = require('Module:Render/Recipe')._table local model = require('Module:Data').model local enums = require('Module:Data/Enums') local skillTypes = { ['0'] = "Attack", ['1'] = "Skill", ['2'] = "Passive", ['3'] = "Item", ['4'] = "Reaction", } local p = {} local types = { [0] = 'Consumable', [1] = 'Soul Shard', [2] = 'Diagram', [3] = 'Equipment', [4] = 'Material', [6] = 'Apple', [8] = 'Alchemia Pot', [9] = 'Ingot', [10] = 'Ticket', [11] = 'Equipment Piece', [12] = 'Other', -- Shop Item? Bundles, Skins, Coins', [13] = 'Ore', [14] = 'Gear Shard', [17] = 'Event Currency', [18] = 'Selector', [20] = 'AP Gain', [21] = 'Memento Selector', [22] = 'Guild EXP', [23] = 'Discount Ticket', } local function getSkill(iname) if iname == nil then return end return model.query('Skill', '_pageName, aag,ab_rp_chg_ids,ab_rp_tgt_ids,abs_d_rate,ac_fr_ab_id,ac_is_reset,ac_is_self,ac_to_ab_id,ac_turn,ad_react,atk_det,atk_type,bdb,bo_id,cap,chran,ci_cc_id,combo_num,combo_rate,cond,cost,count,cs_height,cs_voice,cs_vp_df,ct_calc,ct_rate_ini,ct_rate_max,ct_spd_ini,ct_spd_max,ct_type,ct_val_ini,ct_val_max,ctbreak,ctrl_d_calc,ctrl_d_ini,ctrl_d_max,ctrl_d_rate_ini,ctrl_d_rate_max,cutin,dmg_atk,dmg_dt,dmg_formula,dsse_id,dtu_id,dupli,eff_calc,eff_durate,eff_h,eff_hprate,eff_htnrate,eff_lvrate,eff_mprate,eff_range_ini,eff_range_max,eff_rate_ini,eff_rate_max,eff_type,eff_val_ini,eff_val_max,effdef,effnm,ehpa,elem,elem_ini,elem_max,elem_tk,f_ulock,fhit,hbonus,hp_cost,hp_cost_rate,idr,ig_elem,iname,is_cri,is_fixed,is_htndiv,is_mhm_dmg,is_no_ccc,is_ob_react,is_pre_apply,isbtl,jdabs,jdtype,jdv,jhp_calc,jhp_over,jhp_val,jmp_tk,jmpbreak,job,kb_dir,kb_ds,kb_rate,kb_val,line,max_dmg,motnm,mpatk,pierce,rangemax,rangemin,rate,react_d_type,react_dets,rhit,rp_chg_ids,rp_tgt_ids,s_buff,s_cond,scn,scn_bu,scope,sdb,shield_d_type,shield_ini,shield_max,shield_reset,shield_turn_ini,shield_turn_max,shield_type,sm_id,sonoba,sran,ssco,sub_actuate,suicide,t_buff,t_cond,target,target_ex,timing,tkrate,tktag,tl_height,tl_is_mov,tl_target,tl_type,tr_id,tr_set,tsk_pos,type,utgt,wth_id,wth_rate', {where = 'iname = "'..iname..'" AND server = "gl"'})[1] end local function getBuff(iname) if iname == nil then return end return model.query('Buff', '_pageName, app_mct,app_type,birth,calc1,calc10,calc11,calc2,calc3,calc4,calc5,calc6,calc7,calc8,calc9,chktgt,cond,custom_targets,eff_range,elem,iname,is_no_bt,is_no_dis,is_up_rep,job,rate,sex,tag,timing,tktag1,tktag10,tktag11,tktag2,tktag3,tktag4,tktag5,tktag6,tktag7,tktag8,tktag9,turn,type1,type10,type11,type2,type3,type4,type5,type6,type7,type8,type9,un_group,up_timing,vini1,vini10,vini11,vini2,vini3,vini4,vini5,vini6,vini7,vini8,vini9,vmax1,vmax10,vmax11,vmax2,vmax3,vmax4,vmax5,vmax6,vmax7,vmax8,vmax9,vone1,vone11,vone2,vone3,vone4,vone5,vone6,vone7,vone8', {where = 'iname = "'..iname..'" AND server = "gl"'})[1] end local renderSkill = function(root, iname) if iname == nil then return end local skill = getSkill(iname) if not skill then return end local t_buff = getBuff(skill.t_buff) if not t_buff then return end -- Render local headings = { ['0'] = 'Attack Stats', ['1'] = 'Skill Stats', ['2'] = 'Passive Stats', ['3'] = 'Equipment Stats', ['4'] = 'Reaction Stats', } root:tag('h2'):wikitext(headings[tostring(skill.type)]) local tbl = root:tag('table'):addClass('wikitable') local tr = tbl:tag('tr') tr:tag('th'):wikitext('Type') tr:tag('th'):wikitext('Min') tr:tag('th'):wikitext('Max') for i=1,11 do local tp = tonumber(t_buff['type'..i]) or 0 local ini = tonumber(t_buff['vini'..i]) or 0 local max = tonumber(t_buff['vmax'..i]) or 0 if tp > 0 then local tr = tbl:tag('tr') tr:tag('td'):wikitext(enums.statNameFromType(tp)) tr:tag('td'):wikitext(string.format('%+d', ini)) tr:tag('td'):wikitext(string.format('%+d', max)) end end end local renderEventRewardList = function(root, iname) if iname == nil then return end local cargo_query = mw.ext.cargo.query local sourceList = cargo_query('EventReward', '_pageName,source', {where = 'iname="'..iname..'"'}) or {} if #sourceList < 1 then return end root:tag('h2'):wikitext('Event Reward Sources') local ul = root:tag('ul') for ignore, sourceItem in ipairs(sourceList) do ul:tag('li'):wikitext('[['..sourceItem['_pageName']..']] ('..(sourceItem['source'])..')') end end local renderPage = function(iname, args) local data = model.query('Item','_pageName,server,ac,buy,cap,cmn_type,coin,encost,enpt,eqlv,icon,iname,invcap,is_valuables,mc,pp,quests,rare,recipe,sell,skill,tc,type,val,end_at',{where='iname="'..iname..'"'}) data = data[1] local getLoc = function(param) return model.getLoc(data._pageName, param) end local name = getLoc('name') local rank = (data.rare or 0) + 1 local tp = data.type and (types[data.type] or '??? ('..data.type..')') or '??? (Undefined type)' local expr = getLoc('expr') local INF = 9999999 local buy = tonumber(data.buy) or 0 local sell = tonumber(data.sell) or 0 local arena_coin = tonumber(data.ac) or 0 local tour_coin = tonumber(data.tc) or 0 local multi_coin = tonumber(data.mc) or 0 local soul_coin = tonumber(data.pp) or 0 local gem = tonumber(data.coin) or 0 local enhancer_cost = tonumber(data.encost) or 0 local enhancer_pt = tonumber(data.enpt) or 0 local root = mw.html.create() -- Info Box local function printRow(t, label, content) if content == nil then return end local tr = t:tag('tr') tr:tag('th'):wikitext(label) tr:tag('td'):wikitext(content) end local infobox = root:tag('table'):addClass('wikitable unit ibox'):cssText('float:right; margin-left: 15px;margin-bottom:0; width: 482px') infobox:tag('tr') :tag('td') :cssText('padding:0;width:128px;white-space: nowrap') :wikitext(render_item_icon({iname, data=data, size='large', name='none', link='none'})) :done() :tag('th') :cssText('padding:12px;font-size:140%;') :wikitext(name) :tag('p') :cssText('font-size:65%') :wikitext(rank .. 'β β ' .. tp) :done() :tag('p') :cssText('font-size:65%') :wikitext('[http://www.alchemistcodedb.com/item/' .. string.lower(string.gsub(iname, '_', '-')) .. ' See on Alchemist Code Database]') :done() :done() if expr then infobox:tag('tr'):tag('td'):attr('colspan', 2):cssText('text-align:center'):wikitext(expr) end --[=[ {{#if: {{:Data:Item/Jobs|{{{1|}}}}} |   {{!}}- ! colspan="2" {{!}} Used By {{!}}- {{!}} colspan="2" style="padding:0" {{!}}{{Item/Section/Jobs|{{{1|}}}}} }} ]=]-- local labels = { [6] = 'Unit EXP', -- Apple -- [8] = '???', -- Alchemia Pot', -- seems to all be val == enpt. ACDB doesn't show this..? [12] = 'Player EXP', -- Clover [13] = 'Gear EXP', -- [20] = 'AP Healed', -- Alchemy Drops & Alchemy Droplets. } printRow(infobox, labels[data.type], tonumber(data.val) and labels[data.type] and data.val or nil) printRow(infobox, 'Enhancer Pts', 0 < enhancer_pt and enhancer_pt or nil) -- if tonumber(data.encost) then -- It seems like there's some kind of multiplier involved...? -- printRow(infobox, 'Enhancer Cost', data.encost) -- end printRow(infobox, 'Zeni Cost', (0 < buy and buy < INF) and buy or nil) printRow(infobox, 'Zeni Sales Price', 0 < sell and sell < INF and sell or nil) printRow(infobox, 'Arena Coins', 0 < arena_coin and arena_coin < INF and arena_coin or nil) printRow(infobox, 'Tour Coins', 0 < tour_coin and tour_coin < INF and tour_coin or nil) printRow(infobox, 'Multi Coins', 0 < multi_coin and multi_coin < INF and multi_coin or nil) printRow(infobox, 'Soul Coins', 0 < soul_coin and soul_coin < INF and soul_coin or nil) printRow(infobox, 'Gems', 0 < gem and gem < INF and gem or nil) printRow(infobox, 'Expiration Date', data.end_at or nil) -- Handle piece links to created items if iname:sub(1, 6) == 'IT_AF_' then local createdItemData = model.query('Artifact','_pageName,server,rini,icon,iname',{where='kakera="'..iname..'"'})[1] or nil if createdItemData and createdItemData ~= nil then local render_gear_icon = require('Module:Render/Gear')._icon printRow(infobox, 'Gear', render_gear_icon({createdItemData.iname, data=createdItemData, size='small'})) end elseif iname:sub(1, 6) == 'IT_PI_' then local createdItemData = model.query('Unit','_pageName,server,rare,img,iname',{where='piece="'..iname..'"'})[1] or nil if createdItemData and createdItemData ~= nil then local render_unit_icon = require('Module:Render/Unit')._icon printRow(infobox, 'Unit', render_unit_icon({createdItemData.iname, data=createdItemData, size='small'})) end end -- Body root:tag('p'):wikitext(getLoc('flavor')) if data.recipe ~= nil and data.recipe ~= '' then root:tag('h2'):wikitext('Recipe') root:wikitext(render_recipe_table({data.recipe})) end local usedIn = model.query('Recipe', 'iname', {where='server="'..data.server..'" and mats__FULL REGEXP "([|]|^)'..iname..'([|]|$)"'}) if #usedIn > 0 then root:tag('h2'):wikitext('Included in Recipes') for i, recipe in ipairs(usedIn) do for j, item in ipairs(model.query('Item', 'iname', {where= 'server="'..data.server..'" and recipe="'..recipe.iname..'"'})) do root:wikitext(render_item_icon({item.iname})) end end end -- Skill renderSkill(root, data.skill) -- Event Reward Sources renderEventRewardList(root, iname) -- Category local cats = {'Items'} if iname:find('^IT_EQ_') then cats[#cats+1] = 'Equipment' if iname:find('^IT_EQ_DIAGRAM_') then cats[#cats+1] = 'Equipment Diagram' elseif iname:find('^IT_EQ_DIAGRAMPIECE_') then cats[#cats+1] = 'Equipment Diagram Piece' elseif iname:find('^IT_EQ_PIECE_') then cats[#cats+1] = 'Equipment Piece' end end for i, cat in ipairs(cats) do root:wikitext('[[Category:'..cat..']]') end return tostring(root) end local renderFuncs = {} renderFuncs.Icon = render_item_icon renderFuncs.IconSmall = function(args) args.size = 'small' return render_item_icon(args) end p.renderPage = renderPage local renderTransclude = function(iname, args) local type = mw.text.trim(args[1]) mw.log('Module:Page/Item.renderTransclude: type =', type) args[1] = iname return (renderFuncs[type] or renderFuncs.Name)(args) end function p._main(iname, args) if args.isPage then return p.renderPage(iname) else return renderTransclude(iname, args) end end return p
Summary:
Please note that all contributions to the The Alchemist Code Wiki are considered to be released under the CC BY-NC-SA
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Page/Item/doc
(
edit
)
Follow on IG
TikTok
Join Fan Lab