Hello everyone! I am one of the volunteer developers on this wiki and I just want to write a quick wiki update post for posterity and documentation on what I have been working on the past month regarding Void Relics. These changes affect all relic pages as well as the main Void Relic article and are now live at the time this blog post is published. If you have any questions or concerns, I can be reached through my message wall or on the wiki's Discord channel. Happy farming!
Here are some backend changes to how we store, render, and display relic data around these parts:
Added a new Template:RelicPage that combines all the below archived templates using the Lua scripting language, seen in Module:Void/page. All relic pages now use this template to display their contents.
Archived Template:RelicInfobox (previously used on relic pages to generate infobox + drop tables), Template:RelicTable (template for a relic's drop table and the missions they can be obtained from), and Template:RelicTable/Check (stored ducat value exceptions for prime parts)
If one wants to edit the wikitext that is ultimately rendered on relic pages, then edits have to be made in Module:Void/page instead of templates. See #Additional Notes for details.
A new PrimeData subtable is part of Module:Void/data that uses item and part names to get the relics that they are dropped from; think of it as the 'inverse' of the original relic data table. DucatValue and Vaulted status of Prime parts are also stored in this subtable.
Original table is stored in RelicData with a slightly different schema. More notably, all table entries are mapped to a key name that is the full relic name and Introduced and Vaulted keys added for release/vaulted versions.
Because we now store update versions in the database, we can add the appropriate update category for relic pages using Module:Version.
Updated styling of wikitables so that they are readable in the new (and soon to be standard) FandomDesktop skin's dark theme and on mobile. On desktop, table widths scale based on screen size.
Added Lua-doc style documentation to all functions in the module and submodules, rendered using the documentation generator Module:Docbunto.
Sample Renders[]
Note that the frontend script that the relic refinement buttons ("Intact", "Flawless", etc.) rely on (MediaWiki:RelicTable.js) will only work for the first relic drop table. We do not expect these tables to appear more than once on a page in the main wiki.
“Market forces dictate that you need to evolve or die.”
This Void Relic is no longer obtainable from the Drop Tables. However, vaulted relics can still be opened if they are in player inventories. Players can still trade for it, however.
The Lith A1Relic contains the following Prime components and blueprints:
This Void Relic is exclusive to the Void Trader's offerings and may not be available for purchase at this time. Players can still trade for it, however.
The Neo O1Relic contains the following Prime components and blueprints:
Whenever a new Prime Access or Prime Unvaulting is released (typically quarterly, every 3 months or so), a new relic's drop table can be added in Module:Void/data under the RelicData key. The schema for how new data should be formatted has been slightly changed and is well documented on that page. In short:
Item and part names no longer need to be in CAPITALCASE, use Title Case instead like the rest of the data entries
Introduced and Vaulted keys that store the version in which the relic was first released and last vaulted respectively (no need to manually go to the relic page and edit the template argument)
Updating missions where a relic can drop from has not been changed. They are still updated in Module:DropTables/data.
Instead of editing template pages to update wikitext, editors have now go to Module:Void/page and edit the strings values that make up wikitext. This should be obvious to those unfamiliar with Lua, as they are identifiable by wikitext syntax (e.g. <infobox> tags, template transclusion syntax, etc.). The documentation in the code should help editors navigate to the appropriate section to edit wikitext. Things one may edit:
Ducat value data does not need to be inputted by editors of the database. These can be calculated based on the item's drop rarity. Exceptions can be added to the top of Module:Void/data in the DUCAT_EXCEPTIONS table.
For Developers[]
The relic data in Module:Void/data can be exported and saved onto your computer in a Lua table format. Go to Module:Void and navigate to the "Download" row in the infobox.
There are still may TODOs as of 21:17, 30 June 2021 (UTC), so feel free to update the codebase if necessary. Though make your edits first in Module:Void/dev or on a separate user page before deploying the code to the main modules.
If you want to fork this codebase and data to be used on a wiki in a different language, you can look into https://warframe.huijiwiki.com/wiki for how to approach this problem. In short:
For example, "Axi" is mapped to "后纪" so "Axi A1" is "后纪 A1".
The JSON is converted to a Lua table format in 模块:UserDict using mw.text.jsonDecode() and for-loops.
The Lua table is loaded in 模块:Translate which is the module in which text is translated from one locale to another. The functions p.toChineseCI(src) and p.toChineseCat(src) are used for single word and category name conversions respectively (both case insensitive).
Finally, the translation module is used in 模块:Void, the Chinese wiki's fork of this wiki's codebase. Note that 模块:Void/data is not modified at all and still uses English localization.
For Readers[]
Mobile users should have a better experience viewing the contents of individual relic pages. I had made some styling changes to ensure the text is readable in the wikitables.
For those using dark theme on the new (and soon to be standard) FandomDesktop skin, the wikitables should now be readable since they use the wikitable CSS class instead of emodtable.
Dark mode changes the emodtable table background to gray, text color to white, and links to light blue, lowering text contrast for readability and visibility.
Technical Motivation[]
There are multiple reasons for changing up how we render relic infoboxes and tables in the backend:
If we were to update the relic database Module:Void/data to store the versions in which relics are introduced and vaulted in, then it is redundant to have users use the relic infobox and table templates since we can then generate a relic's page content based on Module:Void/data.
Before, Luafying the relic infobox and table templates was not possible because release-date and vault-date values were on each individual relic page. Moving all of those version values into a single database was what made this project possible.
By Luafying the templates, we can read data directly from Module:Void/data without using the {{#invoke:}} parser function which slightly helps with performance and memory usage.
The number of parser functions used in templates makes it hard to read from an editor's standpoint. Luafying the templates allows breaking up particular sections of wikitext into Lua functions for maintainability. Otherwise, the alternative is to make multiple template pages/subpages and transclude them in a singular template.
Luafied versions of the templates are relatively more readable since the nested parser functions are gone.
It is odd to use parser functions as a pseudo-database in Template:RelicTable/Check for storing irregular ducat values of prime parts. It is better to use a Lua table for that sort of thing.
Note that the rest of the ducat values can be calculated based on the item's different rarity drops. Rare parts are worth 100 ducats. Uncommon parts are worth 45 ducats. Common parts are worth 15 ducats. If an item part is a common and rare drop in different relics, it is worth 65 ducats. If an item part is a common and uncommon drop in different relics, it is worth 25 ducats.
Additional Media[]
Additional images of pages on different themes/skins for convenience and posterity. These are taken on 1920x1080 resolution at 100% zoom.
FandomDesktop Light Theme
Old vaulted
New vaulted
Old unvaulted
New unvaulted
Old Baro
New Baro
FandomDesktop Dark Theme
Old vaulted
New vaulted
Old unvaulted
New unvaulted
Old Baro
New Baro
Oasis
Old vaulted
New vaulted
Old unvaulted
New unvaulted
Old Baro
New Baro
Old Blog Posts[]
Here are some old blog posts regarding similar topics back when Prime parts dropped from the Void: