WARFRAME Wiki
Advertisement
WARFRAME Wiki

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!

Last updated: Mon, 05 Jul 2021 04:49:37 +0000 (UTC) by User:Cephalon Scientia

Changelogs

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.
  • 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.
  • Moved all table builder functions (used in Void Relic/ByRelic, Void Relic/ByRarity, Void Relic/ByRewards, and Void Relic/ByRewards/SimpleTable) from Module:VoidByReward to Module:Void and refactored them to be compatible with the new PrimeData subtable.
  • 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.

New Vaulted Relic

AladVPortrait d.png
“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 A1 Relic contains the following Prime components and blueprints:
Component Ducat Value Rarity (Chance)
PrimeBraton.png Braton Prime Barrel PrimeBucks.png 15 Common(25.33%)
Forma2.png Forma Blueprint PrimeBucks.png 0
PrimeVasto.png Vasto Prime Receiver PrimeBucks.png 15
SarynPrime.png Saryn Prime Neuroptics PrimeBucks.png 45 Uncommon(11%)
VectisPrime.png Vectis Prime Blueprint PrimeBucks.png 45
PrimeAkstiletto.png Akstiletto Prime Blueprint PrimeBucks.png 100 Rare (2%)
Intact Exceptional Flawless Radiant

Old Vaulted Relic

AladVPortrait d.png
“Market forces dictate that you need to evolve or die.”
The Lith A1 Void Relic is no longer obtainable from the drop tables.
The Lith A1 Relic contains the following Prime components and blueprints:
Component Ducat Value Rarity (Chance)
PrimeBraton.png Braton Prime Barrel PrimeBucks.png 15
Common(25.33%)
Forma2.png Forma Blueprint PrimeBucks.png –
PrimeVasto.png Vasto Prime Receiver PrimeBucks.png 15
SarynPrime.png Saryn Prime Neuroptics PrimeBucks.png 45
Uncommon(11%)
VectisPrime.png Vectis Prime Blueprint PrimeBucks.png 45
PrimeAkstiletto.png Akstiletto Prime Blueprint PrimeBucks.png 100 Rare (2%)
Intact Exceptional Flawless Radiant

New Unvaulted Relic

The Lith A4 Relic contains the following Prime components and blueprints:
Component Ducat Value Rarity (Chance)
Forma2.png Forma Blueprint PrimeBucks.png 0 Common(25.33%)
PrimeBurston.png Burston Prime Receiver PrimeBucks.png 15
CorinthPrime.png Corinth Prime Blueprint PrimeBucks.png 15
BazaPrime.png Baza Prime Barrel PrimeBucks.png 45 Uncommon(11%)
IvaraPrime.png Ivara Prime Systems PrimeBucks.png 45
AstillaPrime-Arsenal.webp Astilla Prime Barrel PrimeBucks.png 100 Rare (2%)
Intact Exceptional Flawless Radiant
Mission  Tier  Rotations  Chances 
Capture Void T1 A 11.11%
Defection Tier 1 B, C 10.84%, 11.06%
Defense Dark Sector A 6.9%
Defense Derelict A 11.11%
Defense Tier 1 A 9.09%
Defense Void T1 A, B, C 11.11%, 8.6%, 5.88%
Disruption Mars A, B 14.29%, 14.29%
Empyrean Earth A 3%
Empyrean EarthCaches A 5.99%
Empyrean Venus A 2.44%
Empyrean VenusCaches A 4.35%
Empyrean VenusDefense B 5.88%
Empyrean VenusOrphix B 4.55%
Excavation Tier 1 B, C 7.69%, 11.06%
Exterminate Void T1 A 11.11%
Interception Tier 1 A 7.69%
Mobile Defense Void T2 A 5.88%
Onslaught Easy A 9.17%
Onslaught Hard A 9.48%
Rush Archwing C 9.68%
Sabotage Void Tier 2 A 5.88%
Survival Dark Sector 1 B, C 7.69%, 11.06%
Survival Derelict A 11.11%
Survival Tier 1 B, C 7.69%, 11.06%
Survival Void T2 A 8.6%
Void Storm Tier1A A 5%
Void Storm Tier1B A 5%

Old Unvaulted Relic

The Lith A4 Relic contains the following Prime components and blueprints:
Component Ducat Value Rarity (Chance)
Forma2.png Forma Blueprint PrimeBucks.png –
Common(25.33%)
PrimeBurston.png Burston Prime Receiver PrimeBucks.png 15
CorinthPrime.png Corinth Prime Blueprint PrimeBucks.png 15
BazaPrime.png Baza Prime Barrel PrimeBucks.png 45
Uncommon(11%)
IvaraPrime.png Ivara Prime Systems PrimeBucks.png 45
AstillaPrime-Arsenal.webp Astilla Prime Barrel PrimeBucks.png 100 Rare (2%)
Intact Exceptional Flawless Radiant
Mission  Tier  Rotations  Chances 
Capture Void T1 A 11.11%
Defection Tier 1 B, C 10.84%, 11.06%
Defense Dark Sector A 6.9%
Defense Derelict A 11.11%
Defense Tier 1 A 9.09%
Defense Void T1 A, B, C 11.11%, 8.6%, 5.88%
Disruption Mars A, B 14.29%, 14.29%
Empyrean Earth A 3%
Empyrean EarthCaches A 5.99%
Empyrean Venus A 2.44%
Empyrean VenusCaches A 4.35%
Empyrean VenusDefense B 5.88%
Empyrean VenusOrphix B 4.55%
Excavation Tier 1 B, C 7.69%, 11.06%
Exterminate Void T1 A 11.11%
Interception Tier 1 A 7.69%
Mobile Defense Void T2 A 5.88%
Onslaught Easy A 9.17%
Onslaught Hard A 9.48%
Rush Archwing C 9.68%
Sabotage Void Tier 2 A 5.88%
Survival Dark Sector 1 B, C 7.69%, 11.06%
Survival Derelict A 11.11%
Survival Tier 1 B, C 7.69%, 11.06%
Survival Void T2 A 8.6%
Void Storm Tier1A A 5%
Void Storm Tier1B A 5%

New Baro-Exclusive Relic

Voidtraderplaceholderthumb.png
“Maybe next time.”
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 O1 Relic contains the following Prime components and blueprints:
Component Ducat Value Rarity (Chance)
Forma2.png Forma Blueprint PrimeBucks.png 0 Common(25.33%)
ArchwingSuitPrime.png Odonata Prime Harness PrimeBucks.png 15
VoltPrime.png Volt Prime Blueprint PrimeBucks.png 25
Aklex Prime.png Aklex Prime Blueprint PrimeBucks.png 45 Uncommon(11%)
VoltPrime.png Volt Prime Systems PrimeBucks.png 45
ArchwingSuitPrime.png Odonata Prime Wings PrimeBucks.png 65 Rare (2%)
Intact Exceptional Flawless Radiant

Old Baro-Exclusive Relic

Voidtraderplaceholderthumb.png
“Maybe next time.”
The Neo O1 Void Relic is not available for purchase from the Void Trader at this time.
The Neo O1 Relic contains the following Prime components and blueprints:
Component Ducat Value Rarity (Chance)
Forma2.png Forma Blueprint PrimeBucks.png –
Common(25.33%)
ArchwingSuitPrime.png Odonata Prime Harness PrimeBucks.png 15
VoltPrime.png Volt Prime Blueprint PrimeBucks.png 25
Aklex Prime.png Aklex Prime Blueprint PrimeBucks.png 45
Uncommon(11%)
VoltPrime.png Volt Prime Systems PrimeBucks.png 45
ArchwingSuitPrime.png Odonata Prime Wings PrimeBucks.png 65 Rare (2%)
Intact Exceptional Flawless Radiant

Additional Notes

For Editors

  • 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:
    • Infobox formatting
    • Message box contents
    • Relic drop table formatting
    • Formatting for mission table in which relic may drop from has to be edited in Module:DropTables, not in Module:Void/page
  • 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:
    1. This sister wiki uses a user-contributed JSON dictionary that maps English localization to Simplified Chinese: https://warframe.huijiwiki.com/wiki/UserDict
      • For example, "Axi" is mapped to "后纪" so "Axi A1" is "后纪 A1".
    2. The JSON is converted to a Lua table format in 模块:UserDict using mw.text.jsonDecode() and for-loops.
    3. 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).
    4. 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.

Template:RelicInfobox

Sample usage of old template
{{RelicInfobox
| name         = Lith A1
| release-date = Specters of the Rail
| vault-date   = 19.0.7
| vaulted      = t
}}
Original template wikitext
<onlyinclude>{{#vardefine:name|{{#ifeq:{{{name|}}}||{{PAGENAME}}|{{{name|}}}}}}}<!--
-->{{#ifeq: {{{baro|}}}|||{{ambox
| image = Voidtraderplaceholderthumb.png
| link = Baro Ki'Teer
| quote = Maybe next time.
| type = The '''{{#var:name}}''' [[Void Relic]] is not available for purchase from the [[Baro Ki'Teer|Void Trader]] at this time.[[Category:Baro_Ki'Teer_Offering]]
}} }}<!--
-->{{#ifeq: {{{vault-date|}}}|||{{ambox
| image = AladVPortrait_d.png
| link = Alad V
| quote = Market forces dictate that you need to evolve or die.
| type = The '''{{#var:name}}''' [[Void Relic]] is no longer obtainable from the drop tables.
}} }}
<infobox>
    <title source="name">
        <default><span><b>{{#var:name}}</b></span></default>
    </title>
    <image source="image">
        <default>{{#switch: {{lc:{{#sub:{{#var:name}}|0|{{#pos:{{#var:name}}|}}}}}}
            |lith = VoidProjectionsIronD.png
            |meso = VoidProjectionsBronzeD.png
            |neo  = VoidProjectionsSilverD.png
            |axi  = VoidProjectionsGoldD.png
            |requiem = RequiemR0.png
            |#default = Panel.png
	    }}</default>
    </image>
	<data source="notes"><format><div style="text-align:center;">{{{notes|}}}</div></format></data>
	<group>
	    <header>General</header>
	    <data source="release-date"><label>Release date</label><default>{{#ifeq: {{{release-date|}}}||–|{{{release-date|}}}}}</default></data>
	    <data source="vault-date"><label>Vault date</label><default>{{#ifeq: {{{vault-date|}}}||–|{{{vault-date|}}}}}</default></data>
	    <data source="baro">
            <default>
                {{#ifeq: {{{vault-date|}}}||<div style="text-align:center;">{{text|green|Available}}</div>|<div style="text-align:center;">{{text|red|Vaulted}}</div><includeonly>{{#ifeq:{{{no-cat|}}}||[[Category:Vaulted]]|}}</includeonly>}}
            </default>
            <format>
                <div style="text-align:center;">[[Baro Ki'Teer|{{text|blue|Baro Ki'Teer Exclusive}}]]</div><includeonly>{{#ifeq:{{{no-cat|}}}||[[Category:Removed]]|}}</includeonly>
            </format></data>
	</group>
</infobox>
<includeonly>[[fr:{{#var:name}}]][[es:{{#var:name}}]]{{#ifeq:{{{no-cat|}}}||[[Category:{{#sub:{{#var:name}}|0|{{#pos:{{#var:name}}|}}}}]][[Category:Relic]][[Category:{{#sub:{{{release-date|}}}|2|{{#pos:{{{release-date|}}}|#}}}}]]|}}</includeonly>
{{RelicTable|name={{#var:name}}|vaulted={{#ifeq:{{{vault-date|}}}||{{#ifeq:{{{baro|}}}|||t}}|t}}}}
</onlyinclude>
Luafied version in Module:Void/page
local infobox = [=[
%s
<infobox>
    <title source="name"><default><span><b>%s</b></span></default></title>
    <image source="image"><default>%s</default></image>
	<group>
	    <header>General</header>
	    <data source="release-date">
	    	<label>Introduced</label><default>%s</default>
    	</data>
	    <data source="vault-date">
	    	<label>Latest vaulting</label><default>%s</default>
	    </data>
	    <data source="baro"><default>%s</default></data>
	</group>
</infobox>
%s
]=]

	infobox = string.format(infobox,
		getMessageBox(relic),
		relicName,
		IMAGE_MAP[relic['Tier']],
		Version._getVersionLink(relic['Introduced']),
		relic['Vaulted'] ~= nil and Version._getVersionLink(relic['Vaulted']) or '',
		getRelicStatus(relic),
		getRelicCategories(relic)
	)

Template:RelicTable

Original template wikitext
<onlyinclude>{{#vardefine:Name|{{#ifeq: {{{name|}}}||{{PAGENAME}}|{{{name|}}}}}}}<!--
-->{{#vardefine:cDucat1| {{RelicTable/Check|{{#var:Name}}|Common|1|{{{cDucat1|15}}}}} }}<!--
-->{{#vardefine:cDucat2| {{RelicTable/Check|{{#var:Name}}|Common|2|{{{cDucat2|15}}}}} }}<!--
-->{{#vardefine:cDucat3| {{RelicTable/Check|{{#var:Name}}|Common|3|{{{cDucat3|15}}}}} }}<!--
-->{{#vardefine:uDucat1| {{RelicTable/Check|{{#var:Name}}|Uncommon|1|{{{uDucat1|45}}}}} }}<!--
-->{{#vardefine:uDucat2| {{RelicTable/Check|{{#var:Name}}|Uncommon|2|{{{uDucat2|45}}}}} }}<!--
-->{{#vardefine:rDucat1| {{RelicTable/Check|{{#var:Name}}|Rare|1|{{{rDucat1|100}}}}} }}<!--
-->The '''{{#var:Name}}''' [[Relic]] contains the following [[Prime]] components and blueprints:
{| class="emodtable" id="72656C6963table" <!-- ID is used by [[MediaWiki:RelicTable.js]] to change drop chance elements -->
|-
!style="width:240px;"| Component !!style="width:50px;"| Ducat Value !!style="width:100px;"| Rarity (Chance)
|-
|style="padding:0 5px 0 0; height: 32px;"| {{#invoke:Void|getRelicDrop|{{#var:Name}}|Common|1}}
| {{dc|{{#var:cDucat1}}}}
|rowspan="3" style="padding:0;"| <div style="margin: 0; padding: 0; height:32px;"></div><span id="relic-common-percentage">Common<br />(25.33%)</span>
<div style="margin: 35px 0 0 0; background-color:#2d2d2d; padding: 0; height:5px;">
{| id="relic-common-bar" style="border-collapse:collapse; width:76%;"
|style="background-color:#61d4d4; height:5px; margin:0; padding:0; border: 0px;"|
|}</div>
|-
|style="padding:0 5px 0 0; height: 32px;"| {{#invoke:Void|getRelicDrop|{{#var:Name}}|Common|2}}
| {{dc|{{#var:cDucat2}}}}
|-
|style="padding:0 5px 0 0; height: 32px;"| {{#invoke:Void|getRelicDrop|{{#var:Name}}|Common|3}}
| {{dc|{{#var:cDucat3}}}}
|-
|style="padding:0 5px 0 0; height: 32px;"| {{#invoke:Void|getRelicDrop|{{#var:Name}}|Uncommon|1}}
| {{dc|{{#var:uDucat1}}}}
|rowspan="2" style="padding:0;"| <div style="margin: 0; padding: 0; height:14px;"></div><span id="relic-uncommon-percentage">Uncommon<br />(11%)</span>
<div style="margin: 14px 0 0 0; background-color:#2d2d2d; padding: 0; height:5px;">
{| id="relic-uncommon-bar" style="border-collapse:collapse; width:22%;"
|style="background-color:#61d4d4; height:5px; margin:0; padding:0; border: 0px;"|
|}</div>
|-
|style="padding:0 5px 0 0; height: 32px;"| {{#invoke:Void|getRelicDrop|{{#var:Name}}|Uncommon|2}}
| {{dc|{{#var:uDucat2}}}}
|-
|rowspan="2" style="padding:0 5px 0 0; height: 32px;"| {{#invoke:Void|getRelicDrop|{{#var:Name}}|Rare|1}}
|rowspan="2" | {{dc|{{#var:rDucat1}}}}
| <span id="relic-rare-percentage">Rare (2%)</span>
|-
|style="background-color:#2d2d2d; padding: 0; height:5px;"|
{| id="relic-rare-bar" style="border-collapse:collapse; width:2%;"
|style="background-color:#61d4d4; height:5px; margin:0; padding:0; border: 0px;"|
|}
|-
|colspan="3"|{{#ifeq: {{{vaulted|}}}||<div class="mw-collapsible" style="width:100%;text-align:right;" data-expandtext="Drop Locations" data-collapsetext="Drop Locations"> <span class="button" id="relic-intact-button">Intact</span> <span class="button" id="relic-exceptional-button">Exceptional</span> <span class="button" id="relic-flawless-button">Flawless</span> <span class="button" id="relic-radiant-button">Radiant</span>
<div class="mw-collapsible-content" style="margin:-10px 0 0 0; padding:0;">{{#invoke:DropTables|getRelicByLocation|{{#var:Name}}}}
</div></div>|<span class="button" id="relic-intact-button">Intact</span> <span class="button" id="relic-exceptional-button">Exceptional</span> <span class="button" id="relic-flawless-button">Flawless</span> <span class="button" id="relic-radiant-button">Radiant</span>}}
|}</onlyinclude>
Luafied version in Module:Void/page
local resultTable = string.format([=[
The '''%s''' [[Relic]] contains the following [[Prime]] components and blueprints:
{| class="wikitable" id="%s" style="width:55%%; text-align: center;"
|-
!style="width:60%%;"| Component
!style="width:20%%;"| Ducat Value
!style="width:20%%;"| Rarity&nbsp;(Chance)
|-
|style="padding:0 5px 0 0; height: 32px;"| %s
| {{dc|%d}}
|rowspan="3"| <span id="relic-common-percentage">Common<br />(25.33%%)</span>
|-
|style="padding:0 5px 0 0; height: 32px;"| %s
| {{dc|%d}}
|-
|rowspan="2" style="padding:0 5px 0 0; height: 32px;"| %s
|rowspan="2"| {{dc|%d}}
|-
|style="background-color:#2d2d2d; padding: 0; height:5px;"|
{| id="relic-common-bar" style="border-collapse:collapse; width:76%%;"
|style="background-color:#61d4d4; height:5px; margin:0; padding:0; border: 0px;"|
|}
|-
|style="padding:0 5px 0 0; height: 32px;"| %s
| {{dc|%d}}
|rowspan="2"| <span id="relic-uncommon-percentage">Uncommon<br />(11%%)</span>
|-
|rowspan="2" style="padding:0 5px 0 0; height: 32px;"| %s
|rowspan="2"| {{dc|%d}}
|-
|style="background-color:#2d2d2d; padding: 0; height:5px;"|
{| id="relic-uncommon-bar" style="border-collapse:collapse; width:22%%;"
|style="background-color:#61d4d4; height:5px; margin:0; padding:0; border: 0px;"|
|}
|-
|rowspan="2" style="padding:0 5px 0 0; height: 32px;"| %s
|rowspan="2" | {{dc|%d}}
| <span id="relic-rare-percentage">Rare (2%%)</span>
|-
|style="background-color:#2d2d2d; padding: 0; height:5px;"|
{| id="relic-rare-bar" style="border-collapse:collapse; width:2%%;"
|style="background-color:#61d4d4; height:5px; margin:0; padding:0; border: 0px;"|
|}
|-
|colspan="3"| %s
|}]=], 
	relicName,
	RELIC_TABLE_ID,
	-- drops in order of 3 common, 2 uncommon, and 1 rare
	relicDrops['ImageLinks'][1],	-- first drop image and link
	relicDrops['DucatValues'][1],	-- first drop ducat value
	relicDrops['ImageLinks'][2],
	relicDrops['DucatValues'][2],
	relicDrops['ImageLinks'][3],
	relicDrops['DucatValues'][3],
	relicDrops['ImageLinks'][4],
	relicDrops['DucatValues'][4],
	relicDrops['ImageLinks'][5],
	relicDrops['DucatValues'][5],
	relicDrops['ImageLinks'][6],
	relicDrops['DucatValues'][6],
	missionData
)

Template:RelicTable/Check

Original template wikitext
{{#switch: {{#invoke:Void|getRelicDrop|{{{1|}}}|{{{2|}}}|{{{3|}}}}}
| [[File:PrimeBraton.png|x38px|link=Braton Prime]] [[Braton Prime|Braton Prime Stock]] = 15
| [[File:PrimeSoma.png|x38px|link=Soma Prime]] [[Soma Prime|Soma Prime Blueprint]] = 15
<!---->
| [[File:PrimeAkstiletto.png|x38px|link=Akstiletto Prime]] [[Akstiletto Prime|Akstiletto Prime Barrel]] = 25
| [[File:PrimeBraton.png|x38px|link=Braton Prime]] [[Braton Prime|Braton Prime Blueprint]] = 25
| [[File:PrimeFang.png|x38px|link=Fang Prime]] [[Fang Prime|Fang Prime Handle]] = 25
| [[File:PrimeLex.png|x38px|link=Lex Prime]] [[Lex Prime|Lex Prime Blueprint]] = 25
| [[File:PrimeNikana.png|x38px|link=Nikana Prime]] [[Nikana Prime|Nikana Prime Blueprint]] = 25
| [[File:PrimeBowM.png|x38px|link=Paris Prime]] [[Paris Prime|Paris Prime Upper Limb]] = 25
| [[File:TrinityPrime.png|x38px|link=Trinity/Prime]] [[Trinity Prime|Trinity Prime Neuroptics]] = 25
| [[File:VaubanPrime.png|x38px|link=Vauban/Prime]] [[Vauban Prime|Vauban Prime Chassis]] = 25
| [[File:VoltPrime.png|x38px|link=Volt/Prime]] [[Volt Prime|Volt Prime Blueprint]] = 25
<!---->
| [[File:PrimeAkstiletto.png|x38px|link=Akstiletto Prime]] [[Akstiletto Prime|Akstiletto Prime Receiver]] = 45
| [[File:PrimeBraton.png|x38px|link=Braton Prime]] [[Braton Prime|Braton Prime Receiver]] = 45
| [[File:RubicoPrime.png|x38px|link=Rubico Prime]] [[Rubico Prime|Rubico Prime Stock]] = 45
| [[File:SarynPrime.png|x38px|link=Saryn/Prime]] [[Saryn Prime|Saryn Prime Neuroptics]] = 45
<!---->
| [[File:DEPrimeAnkyros.png|x38px|link=Ankyros Prime]] [[Ankyros Prime|Ankyros Prime Blade]] = 65
| [[File:AshPrime.png|x38px|link=Ash/Prime]] [[Ash Prime|Ash Prime Systems]] = 65
| [[File:BansheePrime.png|x38px|link=Banshee/Prime]] [[Banshee Prime|Banshee Prime Systems]] = 65
| [[File:PrimeCarrier.png|x38px|link=Carrier Prime]] [[Carrier Prime|Carrier Prime Cerebrum]] = 65
| [[File:SwordPrime.png|x38px|link=Dakra Prime]] [[Dakra Prime|Dakra Prime Blade]] = 65
| [[File:PrimeFragor.png|x38px|link=Fragor Prime]] [[Fragor Prime|Fragor Prime Blueprint]] = 65
| [[File:PrimeFragor.png|x38px|link=Fragor Prime]] [[Fragor Prime|Fragor Prime Handle]] = 65
| [[File:KavasaPrimeCollar.png|x38px|link=Kavasa Prime Collar]] [[Kavasa Prime|Kavasa Prime Buckle]] = 65
| [[File:NekrosPrime342.png|x38px|link=Nekros/Prime]] [[Nekros Prime|Nekros Prime Blueprint]] = 65
| [[File:PrimeNikana.png|x38px|link=Nikana Prime]] [[Nikana Prime|Nikana Prime Blade]] = 65
| [[File:NyxPrime.png|x38px|link=Nyx/Prime]] [[Nyx Prime|Nyx Prime Chassis]] = 65
| [[File:OberonPrime2.png|x38px|link=Oberon/Prime]] [[Oberon Prime|Oberon Prime Systems]] = 65
| [[File:ArchwingSuitPrime.png|x38px|link=Odonata/Prime]] [[Odonata Prime|Odonata Prime Wings]] = 65
| [[File:DERhinoPrime.png|x38px|link=Rhino/Prime]] [[Rhino Prime|Rhino Prime Chassis]] = 65
| [[File:SarynPrime.png|x38px|link=Saryn/Prime]] [[Saryn Prime|Saryn Prime Blueprint]] = 65
| [[File:PrimeLiDagger.png|x38px|link=Spira Prime]] [[Spira Prime|Spira Prime Blade]] = 65
| [[File:ValkyrPrime.png|x38px|link=Valkyr/Prime]] [[Valkyr Prime|Valkyr Prime Systems]] = 65
| [[File:VaubanPrime.png|x38px|link=Vauban/Prime]] [[Vauban Prime|Vauban Prime Blueprint]] = 65
| [[File:VectisPrime.png|x38px|link=Vectis Prime]] [[Vectis Prime|Vectis Prime Stock]] = 65
| [[File:VoltPrime.png|x38px|link=Volt/Prime]] [[Volt Prime|Volt Prime Neuroptics]] = 65
<!---->
| [[File:Forma2.png|x38px|link=Forma]] [[Forma|Forma Blueprint]] = –
<!---->
| #default = {{{4|}}}
}}
Luafied version in Module:Void/data
local DUCAT_EXCEPTIONS = {
		Forma = { Blueprint = 0 },
		Akstiletto = { Receiver = 45 },
		Braton = { Stock = 15, Receiver = 45 },
		Rubico = { Stock = 45 },
		Saryn = { ['Neuroptics Blueprint'] = 45 },
		Soma = { Blueprint = 15 },
    }
  • 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
FandomDesktop Dark Theme
Oasis

Old Blog Posts

Here are some old blog posts regarding similar topics back when Prime parts dropped from the Void: