WARFRAME Wiki
Advertisement
WARFRAME Wiki

Design document for display stats around the wiki. Discuss here: WARFRAME Wiki talk:Stat Display.

Last updated: Tue, 04 Oct 2022 19:51:26 +0000 (UTC) by User:Cephalon Scientia

Issue[]

  • Current way of displaying weapon stats in the infobox has three main issues:
    • Too long, tries to fit all weapon details into one vertically narrow element. With more and more weapons having AoE and alternative attacks, this means that readers will have to scroll more to find the stat they need.
    • For nested/child attacks, we do not know what the parent attack is or whether or not a nested attack has a parent. We currently display all attacks at the same level so for example, the direct impact (parent) and AoE (child) compontents of an attack are displayed as two separate groups. There is no structure to show relationship between the parent and child attacks.
    • Cannot easily visually compare two attacks of the same weapon in the infobox.

Zymos Example[]

Draft[]

A solution would be to decouple weapon attacks from the infobox and display the information as a horizontal wikitable under the Characteristics section. Nested/child attacks would be displayed as subtables within a table row to show that they are dependent on the parent attack for the actual attack and stat inheritance.

The infobox can keep displaying the "main" attack for quick reference. Or do not change/remove anything from current infobox and have additional wikitable as a complement to infobox information.

Sample Zymos Render[]

Zymos
Normal Attack (Mouse 1 on PC, right trigger on consoles)
DmgImpactSmall64 Impact 9.2 (40%)
DmgPunctureSmall64 Puncture 13.8 (60%)
Multishot 1
Total Damage 23
Crit Chance 5%
Crit Multiplier 2.3x
Fire Rate 1.33
Forced Procs DmgImpactSmall64 Impact
Noise Level Alarming
Status Chance 30%
Projectile Speed 79 m/s
Projectile Type Projectile
Trigger Type Semi-Auto
Reload Time 3.2 s
Accuracy 9.8
Ammo Cost 1
Average Shot Damage 24.495
Burst DPS 32.58
Sustained DPS 26.06
Average Procs 1.3
Explosion Attack
Radial Attack
DmgToxinSmall64 Toxin 61 (100%)
Total Damage 61
Damage Falloff Start 0 m
Damage Falloff End 3.3 m
Damage Falloff Reduction 30%
Range 3.3 m
Average Shot Damage 64.97
Burst DPS 86.4
Sustained DPS 69.1
Average Procs 0.3
Embed Death Attack
Headshot Explosion
DmgToxinSmall64 Toxin 953 (100%)
Total Damage 953
Damage Falloff Start 0 m
Damage Falloff End 3.3 m
Damage Falloff Reduction 30%
Forced Procs Knockdown b Knockdown
Status Chance 50%
Projectile Type AoE
Explosion Delay 1.1 s
Range 3.3 m
Average Shot 1014.95
Burst DPS 1349.88
Sustained DPS 1079.6
Average Procs 1.5
Other Attack 1
Homing Spore Contact
DmgPunctureSmall64 Puncture 11.5 (50%)
DmgSlashSmall64 Slash 11.5 (50%)
Multishot 6
Total Damage 138
Damage per Instance 23
Forced Procs DmgImpactSmall64 Impact
Projectile Type Projectile
Is Homing True
Average Shot Damage 146.97
Burst DPS 195.47
Sustained DPS 156.33
Average Procs 7.8
Explosion Attack
Homing Spore Explosion
DmgToxinSmall64 Toxin 333 (100%)
Total Damage 333
Damage Falloff Start 0 m
Damage Falloff End 3.3 m
Damage Falloff Reduction 30%
Range 3.3 m
Average Shot Damage 2127.87
Burst DPS 2830.07
Sustained DPS 2263.41
Average Procs 1.8

Weapon Schema Changes[]

There are four methods to link a child attack to their parent in table entries in Module:Weapons/data database:

  1. Nested attack tables. New attack table keys that correspond to specific attacks (like how we used to do it before all attack tables are stored a single Attacks array)
    Attacks = {
        [1] = {
            AttackName = "Normal Attack",
            ExplosiveAttack = {
                AttackName = "AoE"
            }
        },
        [2] = {
            AttackName = "Alt-Fire",
            EmbedAttack = {
                AttackName = "DoT"
            }
        }
    }
    
  2. New attack table key to store name/index of attack table
    Attacks = {
        [1] = {
            AttackName = "Normal Attack",
        },
        [2] = {
            AttackName = "AoE",
            ParentAttack = 1,
        },
        [3] = {
            AttackName = "Alt-Fire",
        },
        [4] = {
            AttackName = "DoT",
            ParentAttack = 3,
        }
    }
    
  3. Nested attack tables and parent attack key
    Attacks = {
        [1] = {
            AttackName = "Normal Attack",
            ExplosiveAttack = {
                AttackName = "AoE"
            }
        },
        [2] = {
            AttackName = "Alt-Fire",
        },
        [3] = {
            AttackName = "DoT",
            ParentAttack = 2,
        }
    }
    
  4. Have Attacks elements and individual attack entries store references of child entries
    local aoeAttack = {
        AttackName = "AoE"
    }
    local dotAttack = {
        AttackName = "DoT"
    }
    Attacks = {
        [1] = {
            AttackName = "Normal Attack",
            ExplosiveAttack = aoeAttack
        },
        [2] = aoeAttack,
        [3] = {
            AttackName = "Alt-Fire",
            EmbedAttack = dotAttack
        },
        [4] = dotAttack
    }
    
    • Not user friendly to edit directly in source since Attack entries are not grouped together with the actual Weapon entry. This could be implemented as the lower-level version of the equilvalent database where editors gain access to say method #2 way of storing Attack entries and another Lua module parse through that database to generate Lua source code of that database in the form of method #4.

External Links[]

Advertisement