Template:ScientiaStances/doc

Documentation for Template:ScientiaStances, Module:ScientiaStances, and Module:ScientiaStances/data. Testing grounds for the eventual Template:Stances, Module:Stances, and Module:Stances/data.

Template:ScientiaStances
To use, call  on the desired page. Stance name is not case-sensitive.

Module:ScientiaStances
This module is a Lua port of Template:StanceCombosV2, Template:ComboIcon, and Template:ComboIcon2 for the ease of editbility and expandability of new and existing stance combos.

This module is meant to be used in conjunction with Template:Stances. For best experience, view pages at 100% zoom to ensure correct formatting of tables. Fair warning: minimal input validation, especially for data in Module:Stances/data. Follow styling as shown in said page to avoid errors. Note to future editors: minimize refactoring of HTML strings; it is better to have multiple strings with similar HTML than a bunch of broken up HTML that are built through if statements (harder to understand) Hierarchy of function calls: p.buildTable validateStanceData p.buildTableHelper buildComboRow <- edit this if you want to add new combos findMaxNumberOfHits buildComboIcons p.addComboIcon buildComboCSSClasses <- edit this if you want to change CSS classes/styling buildTopProcIconHTML <- edit this if you want to change CSS classes/styling buildMeleeIcon buildHitInfoHTML <- edit this if you want to change CSS classes/styling buildAttackTypeLegendRow buildAttackLegendRow buildMultiplierHitLegendRow buildProcLegendRow

Generic helper functions used: SHARED.tableCount SHARED.hasKey SHARED.contains

Module:ScientiaStances/data
Each stance comes with the following unique combos: Each weapon class shares the following combos regardless of stance used: Each combo a set number of attacks that share the same input (e.g for Block combo, holding the block/aim key while attacking). Each combo comes with a list of attacks that have their own proc info, number of hits, attack type ("Default", "360", or "Slam"), and damage multiplier. For hits with multiple procs, concatenate the first three letters of each proc together (e.g. "Slash" and "Puncture" will become "SlaPun"). Note: avoid putting nil values in tables, otherwise functions that iterate over tables will break or won't work properly. To denote a hit that doesn't proc in the Proc table, input "None". Default values for keys if keys are omitted: ConclaveOnly = false Type = "Default" Multiplier = 1 or { 1, 1, ... } if NumberOfHits is a table NumberOfHits = 1 or { 1, 1, ... } if Multiplier is a table Proc = nil
 * Basic: basic/neutral combo (unlocked by default if exists)
 * Forward: forward combo (unlocked at Rank 1 if exists)
 * ForwardBlock: "forward tactical" combo (unlocked at Rank 2 if exists)
 * Block: block combo (unlocked at Rank 3 if exists)
 * Heavy: heavy attack
 * Slide: slide attack
 * Air: air attack
 * Wall: wall attack
 * Ground: ground finisher

Styling for StanceData: ["Stance Name"] = { WeaponType = required, ConclaveOnly = optional, Basic = { Name = required, Attacks = { { Type = optional, Multiplier = optional, NumberOfHits = optional, Proc = optional }, { Type = optional, Multiplier = optional, NumberOfHits = optional, Proc = optional }, { Type = optional, Multiplier = optional, NumberOfHits = optional, Proc = optional }, },       },        Forward = { Name = "", Attacks = { { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, },       },        ForwardBlock = { Name = "", Attacks = { { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, },       },        Block = { Name = "", Attacks = { { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, },       },    }, Styling for SharedCombosData: ["WeaponType"] = { Heavy = { Name = "", Attacks = { { Multiplier = 3, NumberOfHits = 1, Proc = nil }, { Multiplier = 3, NumberOfHits = 1, Proc = nil }, },       },        Slide = { Name = "", Attacks = { { Type = "360", Multiplier = 3, NumberOfHits = 1, Proc = nil }, },       },        Air = { Name = "", Attacks = { { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, },       },        Wall = { Name = "", Attacks = { { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, },       },        Ground = { Name = "", Attacks = { { Type = "Default", Multiplier = 3, NumberOfHits = 1, Proc = nil }, },       },    },