Editing Template:True Melee DPS Calculator
Jump to navigation
Jump to search
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.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
<includeonly><!-- | <includeonly><!-- | ||
− | !!! | + | !!! WARNING !!! |
− | |||
− | |||
The following variables are reused by [[Template:Weapon Quality Table/Melee/Row]]. If you change them here you probably have to change them there as well: | The following variables are reused by [[Template:Weapon Quality Table/Melee/Row]]. If you change them here you probably have to change them there as well: | ||
* {{#var:trueAP}} | * {{#var:trueAP}} | ||
Line 13: | Line 11: | ||
1. VARIABLES | 1. VARIABLES | ||
1.1 Important variables | 1.1 Important variables | ||
− | -->{{#vardefine:name | + | -->{{#vardefine:name | {{{1|{{PAGENAME}} }}} }}<!-- |
− | -->{{# | + | -->{{#vardefine:material | {{{2|}}} }}<!-- |
− | + | -->{{#vardefine:sharpFactor | {{Q|{{#var:material}}|Melee Sharp Damage Factor|1}} }}<!-- | |
− | | #default = | + | -->{{#vardefine:bluntFactor | {{Q|{{#var:material}}|Melee Blunt Damage Factor|1}} }}<!-- |
+ | -->{{#vardefine:cooldownFactor | {{Q|{{#var:material}}|Melee Cooldown Factor|1}} }}<!-- | ||
+ | -->{{#vardefine:attack1Type | {{Q|{{#var:name}}|Attack 1 Type}} }}<!-- | ||
+ | -->{{#vardefine:attack2Type | {{Q|{{#var:name}}|Attack 2 Type}} }}<!-- | ||
+ | -->{{#vardefine:attack3Type | {{Q|{{#var:name}}|Attack 3 Type}} }}<!-- | ||
+ | -->{{#vardefine:attack4Type | {{Q|{{#var:name}}|Attack 4 Type}} }}<!-- | ||
+ | -->{{#vardefine:attack5Type | {{Q|{{#var:name}}|Attack 5 Type}} }}<!-- | ||
+ | -->{{#vardefine:attack6Type | {{Q|{{#var:name}}|Attack 6 Type}} }}<!-- | ||
+ | -->{{#vardefine:qualityFactor | {{#switch: {{lc:{{{3|}}} }} | ||
+ | | awful = 0.8 | ||
+ | | poor = 0.9 | ||
+ | | normal = 1 | ||
+ | | good = 1.1 | ||
+ | | excellent = 1.2 | ||
+ | | masterwork = 1.45 | ||
+ | | legendary = 1.65 | ||
+ | | #default = 1 | ||
+ | }} }}<!-- | ||
+ | |||
+ | WIP: calculating a pawn equipped with a certain weapon would look something like this: {{True Melee DPS Calculator|Longsword|Steel|Good|Human|Archotech arm|false|Denture}} for {{True Melee DPS Calculator|<weapon>|<material>|<quality>|<pawn>|<first attack>|<second attack>|<third attack>|<fourth attack>|<fifth attack>|<sixth attack>}} | ||
+ | Do we need to consider Melee Hit Chance? After all it's affected by manipulation | ||
+ | |||
+ | -->{{#if: {{#vardefineecho:pawn| {{{4|}}} }} | | ||
+ | {{#vardefine:attack7Type | {{#if: {{{ 5|}}} | {{#ifeq: {{{ 5|}}} | false || {{Q|{{{ 5}}}|Attack 1 Type}} }} | {{Q|{{#var:pawn}}|Attack 1 Type}} }} }} | ||
+ | {{#vardefine:attack8Type | {{#if: {{{ 6|}}} | {{#ifeq: {{{ 6|}}} | false || {{Q|{{{ 6}}}|Attack 1 Type}} }} | {{Q|{{#var:pawn}}|Attack 2 Type}} }} }} | ||
+ | {{#vardefine:attack9Type | {{#if: {{{ 7|}}} | {{#ifeq: {{{ 7|}}} | false || {{Q|{{{ 7}}}|Attack 1 Type}} }} | {{Q|{{#var:pawn}}|Attack 3 Type}} }} }} | ||
+ | {{#vardefine:attack10Type | {{#if: {{{ 8|}}} | {{#ifeq: {{{ 8|}}} | false || {{Q|{{{ 8}}}|Attack 1 Type}} }} | {{Q|{{#var:pawn}}|Attack 4 Type}} }} }} | ||
+ | {{#vardefine:attack11Type | {{#if: {{{ 9|}}} | {{#ifeq: {{{ 9|}}} | false || {{Q|{{{ 9}}}|Attack 1 Type}} }} | {{Q|{{#var:pawn}}|Attack 5 Type}} }} }} | ||
+ | {{#vardefine:attack12Type | {{#if: {{{10|}}} | {{#ifeq: {{{10|}}} | false || {{Q|{{{10}}}|Attack 1 Type}} }} | {{Q|{{#var:pawn}}|Attack 6 Type}} }} }} | ||
+ | | {{#vardefine:attack7Type|}}{{#vardefine:attack8Type|}}{{#vardefine:attack9Type|}}{{#vardefine:attack10Type|}}{{#vardefine:attack11Type|}}{{#vardefine:attack12Type|}} | ||
}}<!-- | }}<!-- | ||
− | + | ||
− | -->{{# | + | 1.2 Variables that might be useful to call outside of this template |
− | + | -->{{#if:{{#var:pawn}} | | |
− | + | {{#vardefine:attack7Source | {{#if: {{{5|}}} | {{{5}}} | {{#var:pawn}} }} }} | |
− | + | {{#vardefine:attack8Source | {{#if: {{{6|}}} | {{{6}}} | {{#var:pawn}} }} }} | |
− | + | {{#vardefine:attack9Source | {{#if: {{{7|}}} | {{{7}}} | {{#var:pawn}} }} }} | |
− | + | {{#vardefine:attack10Source | {{#if: {{{8|}}} | {{{8}}} | {{#var:pawn}} }} }} | |
− | + | {{#vardefine:attack11Source | {{#if: {{{9|}}} | {{{9}}} | {{#var:pawn}} }} }} | |
− | + | {{#vardefine:attack12Source | {{#if: {{{10|}}} | {{{10}}} | {{#var:pawn}} }} }} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}}<!-- | }}<!-- | ||
− | + | -->{{#if:{{#var:pawn}} | | |
− | + | {{#vardefine:attack7Part | {{#if: {{{5|}}} | {{Q|{{{5}}}|Attack 1 Part}} | {{Q|{{#var:pawn}}|Attack 1 Part}} }} }} | |
− | + | {{#vardefine:attack8Part | {{#if: {{{6|}}} | {{Q|{{{6}}}|Attack 1 Part}} | {{Q|{{#var:pawn}}|Attack 2 Part}} }} }} | |
− | -->{{#if: {{#var:pawn}} | | + | {{#vardefine:attack9Part | {{#if: {{{7|}}} | {{Q|{{{7}}}|Attack 1 Part}} | {{Q|{{#var:pawn}}|Attack 3 Part}} }} }} |
− | {{#vardefine: | + | {{#vardefine:attack10Part | {{#if: {{{8|}}} | {{Q|{{{8}}}|Attack 1 Part}} | {{Q|{{#var:pawn}}|Attack 4 Part}} }} }} |
− | {{#vardefine: | + | {{#vardefine:attack11Part | {{#if: {{{9|}}} | {{Q|{{{9}}}|Attack 1 Part}} | {{Q|{{#var:pawn}}|Attack 5 Part}} }} }} |
− | {{#vardefine: | + | {{#vardefine:attack12Part | {{#if: {{{10|}}} | {{Q|{{{10}}}|Attack 1 Part}} | {{Q|{{#var:pawn}}|Attack 6 Part}} }} }} |
− | {{#vardefine: | ||
− | {{#vardefine: | ||
− | {{#vardefine: | ||
− | |||
− | |||
− | |||
}}<!-- | }}<!-- | ||
+ | -->{{#vardefine:quality | {{{3|}}} }}<!-- | ||
− | 1. | + | 1.3 Clearing variables in case the page is called multiple times on the same page |
− | -->{{#vardefine:attack1InitialSelectionWeight | }}{{#vardefine:attack1SelectionCategory |}}{{#vardefine:attack1AP | }}{{#vardefine:attack1Cooldown | }}{{#vardefine:attack1Damage | }}<!-- | + | -->{{#vardefine:attack1InitialSelectionWeight|}}{{#vardefine:attack1SelectionCategory|}}{{#vardefine:attack1AP|}}{{#vardefine:attack1Cooldown|}}{{#vardefine:attack1Damage|}}{{#vardefine:attack1SelectionChance|}}<!-- |
− | -->{{#vardefine:attack2InitialSelectionWeight | }}{{#vardefine:attack2SelectionCategory |}}{{#vardefine:attack2AP | }}{{#vardefine:attack2Cooldown | }}{{#vardefine:attack2Damage | }}<!-- | + | -->{{#vardefine:attack2InitialSelectionWeight|}}{{#vardefine:attack2SelectionCategory|}}{{#vardefine:attack2AP|}}{{#vardefine:attack2Cooldown|}}{{#vardefine:attack2Damage|}}{{#vardefine:attack2SelectionChance|}}<!-- |
− | -->{{#vardefine:attack3InitialSelectionWeight | }}{{#vardefine:attack3SelectionCategory |}}{{#vardefine:attack3AP | }}{{#vardefine:attack3Cooldown | }}{{#vardefine:attack3Damage | }}<!-- | + | -->{{#vardefine:attack3InitialSelectionWeight|}}{{#vardefine:attack3SelectionCategory|}}{{#vardefine:attack3AP|}}{{#vardefine:attack3Cooldown|}}{{#vardefine:attack3Damage|}}{{#vardefine:attack3SelectionChance|}}<!-- |
− | -->{{#vardefine:attack4InitialSelectionWeight | }}{{#vardefine:attack4SelectionCategory |}}{{#vardefine:attack4AP | }}{{#vardefine:attack4Cooldown | }}{{#vardefine:attack4Damage | }}<!-- | + | -->{{#vardefine:attack4InitialSelectionWeight|}}{{#vardefine:attack4SelectionCategory|}}{{#vardefine:attack4AP|}}{{#vardefine:attack4Cooldown|}}{{#vardefine:attack4Damage|}}{{#vardefine:attack4SelectionChance|}}<!-- |
− | -->{{#vardefine:attack5InitialSelectionWeight | | + | -->{{#vardefine:attack5InitialSelectionWeight|}}{{#vardefine:attack5SelectionCategory|}}{{#vardefine:attack5AP|}}{{#vardefine:attack5Cooldown|}}{{#vardefine:attack5Damage|}}{{#vardefine:attack5SelectionChance|}}<!-- |
− | -->{{#vardefine:attack6InitialSelectionWeight | | + | -->{{#vardefine:attack6InitialSelectionWeight|}}{{#vardefine:attack6SelectionCategory|}}{{#vardefine:attack6AP|}}{{#vardefine:attack6Cooldown|}}{{#vardefine:attack6Damage|}}{{#vardefine:attack6SelectionChance|}}<!-- |
− | -->{{#vardefine:attack7InitialSelectionWeight | | + | -->{{#vardefine:attack7InitialSelectionWeight|}}{{#vardefine:attack7SelectionCategory|}}{{#vardefine:attack7AP|}}{{#vardefine:attack7Cooldown|}}{{#vardefine:attack7Damage|}}{{#vardefine:attack7SelectionChance|}}<!-- |
− | -->{{#vardefine:attack8InitialSelectionWeight | | + | -->{{#vardefine:attack8InitialSelectionWeight|}}{{#vardefine:attack8SelectionCategory|}}{{#vardefine:attack8AP|}}{{#vardefine:attack8Cooldown|}}{{#vardefine:attack8Damage|}}{{#vardefine:attack8SelectionChance|}}<!-- |
− | + | -->{{#vardefine:attack9InitialSelectionWeight|}}{{#vardefine:attack9SelectionCategory|}}{{#vardefine:attack9AP|}}{{#vardefine:attack9Cooldown|}}{{#vardefine:attack9Damage|}}{{#vardefine:attack9SelectionChance|}}<!-- | |
− | -->{{#vardefine: | + | -->{{#vardefine:attack10InitialSelectionWeight|}}{{#vardefine:attack10SelectionCategory|}}{{#vardefine:attack10AP|}}{{#vardefine:attack10Cooldown|}}{{#vardefine:attack10Damage|}}{{#vardefine:attack10SelectionChance|}}<!-- |
− | + | -->{{#vardefine:attack11InitialSelectionWeight|}}{{#vardefine:attack11SelectionCategory|}}{{#vardefine:attack11AP|}}{{#vardefine:attack11Cooldown|}}{{#vardefine:attack11Damage|}}{{#vardefine:attack11SelectionChance|}}<!-- | |
− | -->{{#vardefine: | + | -->{{#vardefine:attack12InitialSelectionWeight|}}{{#vardefine:attack12SelectionCategory|}}{{#vardefine:attack12AP|}}{{#vardefine:attack12Cooldown|}}{{#vardefine:attack12Damage|}}{{#vardefine:attack12SelectionChance|}}<!-- |
− | |||
− | -->{{#vardefine: | ||
− | |||
− | |||
− | |||
− | |||
− | -->{{#vardefine: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
-->{{#vardefine:numBestAttacks|0}}{{#vardefine:numMidAttacks|0}}<!-- | -->{{#vardefine:numBestAttacks|0}}{{#vardefine:numMidAttacks|0}}<!-- | ||
2. CALCULATIONS | 2. CALCULATIONS | ||
− | 2.1 Define the damage type of the attacks so it knows which material stat to use for the damage multiplier. Needs updating if new damage types added. | + | 2.1 Define the damage type of the attacks so it knows which material stat to use for the damage multiplier. Needs updating if new damage types added. |
− | + | 2.1.1 First attack | |
− | 2 | + | -->{{#switch: {{#var:attack1Type}} |
− | -->{{# | + | | Arrow | ArrowHighVelocity | Bite | Bomb | BombSuper | Bullet | Cut | RangedStab | Scratch | Stab | Thump | Toxic bite | Toxic scratch = |
+ | {{#vardefine:attack1Damage | {{#expr: {{Q|{{#var:name}}|Attack 1 Damage}}*{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | ||
+ | {{#vardefine:attack1AP | {{#expr: {{Q|{{#var:name}}|Attack 1 AP}} *{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | ||
| Blunt | Crush | Demolish | Poke = | | Blunt | Crush | Demolish | Poke = | ||
− | + | {{#vardefine:attack1Damage | {{#expr: {{Q|{{#var:name}}|Attack 1 Damage}}*{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | |
− | + | {{#vardefine:attack1AP | {{#expr: {{Q|{{#var:name}}|Attack 1 AP}} *{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | |
− | + | | #default = {{Error|Unrecognised Damage Type: {{#var:attack1Type}} }} | |
− | + | }}<!-- | |
− | + | -->{{#vardefine: attack1InitialSelectionWeight | {{#expr: {{#var:attack1Damage}} * (1 + ({{#var:attack1AP}}/100)) * {{Q|{{#var:name}}|Attack 1 Chance Factor|1}} / {{#vardefineecho:attack1Cooldown | {{#expr: {{Q|{{#var:name}}|Attack 1 Cooldown}}*{{#var:cooldownFactor}} }} }} round 1}} }}<!-- | |
− | + | 2.1.2 Second attack | |
− | + | -->{{#if: {{#var:attack2Type}} | | |
− | + | {{#switch: {{#var:attack2Type}} | |
− | + | | Arrow | ArrowHighVelocity | Bite | Bomb | BombSuper | Bullet | Cut | RangedStab | Scratch | Stab | Thump | Toxic bite | Toxic scratch = | |
− | }} | + | {{#vardefine:attack2Damage| {{#expr: {{Q|{{#var:name}}|Attack 2 Damage}}*{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} |
− | + | {{#vardefine:attack2AP | {{#expr: {{Q|{{#var:name}}|Attack 2 AP}} *{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | |
− | |||
| Blunt | Crush | Demolish | Poke = | | Blunt | Crush | Demolish | Poke = | ||
− | + | {{#vardefine:attack2Damage| {{#expr: {{Q|{{#var:name}}|Attack 2 Damage}}*{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | |
− | + | {{#vardefine:attack2AP | {{#expr: {{Q|{{#var:name}}|Attack 2 AP}} *{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | |
− | + | | #default = {{Error|Unrecognised Damage Type: {{#var:attack2Type}} }} | |
− | + | }} | |
− | + | {{#vardefine: attack2InitialSelectionWeight | {{#expr: {{#var:attack2Damage}} * (1 + ({{#var:attack2AP}}/100)) * {{Q|{{#var:name}}|Attack 2 Chance Factor|1}} / {{#vardefineecho:attack2Cooldown | {{#expr: {{Q|{{#var:name}}|Attack 2 Cooldown}}*{{#var:cooldownFactor}} }} }} round 1}} }} | |
− | + | }}<!-- | |
− | + | 2.1.3 Third attack | |
− | + | -->{{#if: {{#var:attack3Type}} | | |
− | + | {{#switch: {{#var:attack3Type}} | |
− | + | | Arrow | ArrowHighVelocity | Bite | Bomb | BombSuper | Bullet | Cut | RangedStab | Scratch | Stab | Thump | Toxic bite | Toxic scratch = | |
− | + | {{#vardefine:attack3Damage| {{#expr: {{Q|{{#var:name}}|Attack 3 Damage}}*{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | |
− | + | {{#vardefine:attack3AP | {{#expr: {{Q|{{#var:name}}|Attack 3 AP}} *{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | |
| Blunt | Crush | Demolish | Poke = | | Blunt | Crush | Demolish | Poke = | ||
− | + | {{#vardefine:attack3Damage| {{#expr: {{Q|{{#var:name}}|Attack 3 Damage}}*{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | |
− | + | {{#vardefine:attack3AP | {{#expr: {{Q|{{#var:name}}|Attack 3 AP}} *{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | |
− | + | | #default = {{Error|Unrecognised Damage Type: {{#var:attack3Type}} }} | |
− | + | }} | |
− | + | {{#vardefine: attack3InitialSelectionWeight | {{#expr: {{#var:attack3Damage}} * (1 + ({{#var:attack3AP}}/100)) * {{Q|{{#var:name}}|Attack 3 Chance Factor|1}} / {{#vardefineecho:attack3Cooldown | {{#expr: {{Q|{{#var:name}}|Attack 3 Cooldown}}*{{#var:cooldownFactor}} }} }} round 1}} }} | |
− | + | }}<!-- | |
− | + | 2.1.4 Fourth attack | |
− | + | -->{{#if: {{#var:attack4Type}} | | |
− | + | {{#switch: {{#var:attack4Type}} | |
− | + | | Arrow | ArrowHighVelocity | Bite | Bomb | BombSuper | Bullet | Cut | RangedStab | Scratch | Stab | Thump | Toxic bite | Toxic scratch = | |
− | + | {{#vardefine:attack4Damage| {{#expr: {{Q|{{#var:name}}|Attack 4 Damage}}*{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | |
− | + | {{#vardefine:attack4AP | {{#expr: {{Q|{{#var:name}}|Attack 4 AP}} *{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | |
| Blunt | Crush | Demolish | Poke = | | Blunt | Crush | Demolish | Poke = | ||
− | + | {{#vardefine:attack4Damage| {{#expr: {{Q|{{#var:name}}|Attack 4 Damage}}*{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | |
− | + | {{#vardefine:attack4AP | {{#expr: {{Q|{{#var:name}}|Attack 4 AP}} *{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | |
− | + | | #default = {{Error|Unrecognised Damage Type: {{#var:attack4Type}} }} | |
− | + | }} | |
− | | #default = | + | {{#vardefine: attack4InitialSelectionWeight | {{#expr: {{#var:attack4Damage}} * (1 + ({{#var:attack4AP}}/100)) * {{Q|{{#var:name}}|Attack 4 Chance Factor|1}} / {{#vardefineecho:attack4Cooldown | {{#expr: {{Q|{{#var:name}}|Attack 4 Cooldown}}*{{#var:cooldownFactor}} }} }} round 1}} }} |
− | + | }}<!-- | |
− | + | 2.1.5 Fifth attack | |
− | |||
− | |||
− | }} round 1}} }} | ||
− | 2.1. | ||
− | |||
-->{{#if: {{#var:attack5Type}} | | -->{{#if: {{#var:attack5Type}} | | ||
− | + | {{#switch: {{#var:attack5Type}} | |
− | | {{#vardefine: | + | | Arrow | ArrowHighVelocity | Bite | Bomb | BombSuper | Bullet | Cut | RangedStab | Scratch | Stab | Thump | Toxic bite | Toxic scratch = |
− | + | {{#vardefine:attack5Damage| {{#expr: {{Q|{{#var:name}}|Attack 5 Damage}}*{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | |
− | + | {{#vardefine:attack5AP | {{#expr: {{Q|{{#var:name}}|Attack 5 AP}} *{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | |
+ | | Blunt | Crush | Demolish | Poke = | ||
+ | {{#vardefine:attack5Damage| {{#expr: {{Q|{{#var:name}}|Attack 5 Damage}}*{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | ||
+ | {{#vardefine:attack5AP | {{#expr: {{Q|{{#var:name}}|Attack 5 AP}} *{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | ||
+ | | #default = {{Error|Unrecognised Damage Type: {{#var:attack5Type}} }} | ||
+ | }} | ||
+ | {{#vardefine: attack5InitialSelectionWeight | {{#expr: {{#var:attack5Damage}} * (1 + ({{#var:attack5AP}}/100)) * {{Q|{{#var:name}}|Attack 5 Chance Factor|1}} / {{#vardefineecho:attack5Cooldown | {{#expr: {{Q|{{#var:name}}|Attack 5 Cooldown}}*{{#var:cooldownFactor}} }} }} round 1}} }} | ||
}}<!-- | }}<!-- | ||
− | 2.1. | + | 2.1.6 Sixth attack |
-->{{#if: {{#var:attack6Type}} | | -->{{#if: {{#var:attack6Type}} | | ||
− | + | {{#switch: {{#var:attack6Type}} | |
− | | {{#vardefine: | + | | Arrow | ArrowHighVelocity | Bite | Bomb | BombSuper | Bullet | Cut | RangedStab | Scratch | Stab | Thump | Toxic bite | Toxic scratch = |
− | + | {{#vardefine:attack6Damage| {{#expr: {{Q|{{#var:name}}|Attack 6 Damage}}*{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | |
− | + | {{#vardefine:attack6AP | {{#expr: {{Q|{{#var:name}}|Attack 6 AP}} *{{#var:qualityFactor}}*{{#var:sharpFactor}} }} }} | |
+ | | Blunt | Crush | Demolish | Poke = | ||
+ | {{#vardefine:attack6Damage| {{#expr: {{Q|{{#var:name}}|Attack 6 Damage}}*{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | ||
+ | {{#vardefine:attack6AP | {{#expr: {{Q|{{#var:name}}|Attack 6 AP}} *{{#var:qualityFactor}}*{{#var:bluntFactor}} }} }} | ||
+ | | #default = {{Error|Unrecognised Damage Type: {{#var:attack6Type}} }} | ||
+ | }} | ||
+ | {{#vardefine: attack6InitialSelectionWeight | {{#expr: {{#var:attack6Damage}} * (1 + ({{#var:attack6AP}}/100)) * {{Q|{{#var:name}}|Attack 6 Chance Factor|1}} / {{#vardefineecho:attack6Cooldown | {{#expr: {{Q|{{#var:name}}|Attack 6 Cooldown}}*{{#var:cooldownFactor}} }} }} round 1}} }} | ||
}}<!-- | }}<!-- | ||
− | 2.1. | + | 2.1.7 Pawn attacks |
-->{{#if: {{#var:attack7Type}} | | -->{{#if: {{#var:attack7Type}} | | ||
− | {{#if: {{ | + | {{#if: {{{5|}}} |
− | | {{#vardefine:attack7InitialSelectionWeight | {{#expr: {{#vardefineecho:attack7Damage| {{ | + | | {{#vardefine: attack7InitialSelectionWeight | {{#expr: {{#vardefineecho:attack7Damage| {{Q|{{{5}}}|Attack 1 Damage}} }} * (1 + ({{#vardefineecho:attack7AP| {{Q|{{{5}}}|Attack 1 AP}} }}/100)) * {{Q|{{{5}}}|Attack 1 Chance Factor|1}} / {{#vardefineecho:attack7Cooldown | {{Q|{{{5}}}|Attack 1 Cooldown}} }} round 1}} }} |
− | | {{#vardefine:attack7InitialSelectionWeight | {{#expr: {{#vardefineecho:attack7Damage| {{ | + | | {{#vardefine: attack7InitialSelectionWeight | {{#expr: {{#vardefineecho:attack7Damage| {{Q|{{#var:pawn}}|Attack 1 Damage}} }} * (1 + ({{#vardefineecho:attack7AP| {{Q|{{#var:pawn}}|Attack 1 AP}} }}/100)) * {{Q|{{#var:pawn}}|Attack 1 Chance Factor|1}} / {{#vardefineecho:attack7Cooldown | {{Q|{{#var:pawn}}|Attack 1 Cooldown}} }} round 1}} }} |
}} | }} | ||
}}<!-- | }}<!-- | ||
− | |||
-->{{#if: {{#var:attack8Type}} | | -->{{#if: {{#var:attack8Type}} | | ||
− | {{#if: {{ | + | {{#if: {{{6|}}} |
− | | {{#vardefine:attack8InitialSelectionWeight | {{#expr: {{#vardefineecho:attack8Damage| {{ | + | | {{#vardefine: attack8InitialSelectionWeight | {{#expr: {{#vardefineecho:attack8Damage| {{Q|{{{6}}}|Attack 1 Damage}} }} * (1 + ({{#vardefineecho:attack8AP| {{Q|{{{6}}}|Attack 1 AP}} }}/100)) * {{Q|{{{6}}}|Attack 1 Chance Factor|1}} / {{#vardefineecho:attack8Cooldown | {{Q|{{{6}}}|Attack 1 Cooldown}} }} round 1}} }} |
− | | {{#vardefine:attack8InitialSelectionWeight | {{#expr: {{#vardefineecho:attack8Damage| {{ | + | | {{#vardefine: attack8InitialSelectionWeight | {{#expr: {{#vardefineecho:attack8Damage| {{Q|{{#var:pawn}}|Attack 2 Damage}} }} * (1 + ({{#vardefineecho:attack8AP| {{Q|{{#var:pawn}}|Attack 2 AP}} }}/100)) * {{Q|{{#var:pawn}}|Attack 2 Chance Factor|1}} / {{#vardefineecho:attack8Cooldown | {{Q|{{#var:pawn}}|Attack 2 Cooldown}} }} round 1}} }} |
}} | }} | ||
}}<!-- | }}<!-- | ||
− | |||
-->{{#if: {{#var:attack9Type}} | | -->{{#if: {{#var:attack9Type}} | | ||
− | {{#if: {{ | + | {{#if: {{{7|}}} |
− | | {{#vardefine:attack9InitialSelectionWeight | {{#expr: {{#vardefineecho:attack9Damage| {{ | + | | {{#vardefine: attack9InitialSelectionWeight | {{#expr: {{#vardefineecho:attack9Damage| {{Q|{{{7}}}|Attack 1 Damage}} }} * (1 + ({{#vardefineecho:attack9AP| {{Q|{{{7}}}|Attack 1 AP}} }}/100)) * {{Q|{{{7}}}|Attack 1 Chance Factor|1}} / {{#vardefineecho:attack9Cooldown | {{Q|{{{7}}}|Attack 1 Cooldown}} }} round 1}} }} |
− | | {{#vardefine:attack9InitialSelectionWeight | {{#expr: {{#vardefineecho:attack9Damage| {{ | + | | {{#vardefine: attack9InitialSelectionWeight | {{#expr: {{#vardefineecho:attack9Damage| {{Q|{{#var:pawn}}|Attack 3 Damage}} }} * (1 + ({{#vardefineecho:attack9AP| {{Q|{{#var:pawn}}|Attack 3 AP}} }}/100)) * {{Q|{{#var:pawn}}|Attack 3 Chance Factor|1}} / {{#vardefineecho:attack9Cooldown | {{Q|{{#var:pawn}}|Attack 3 Cooldown}} }} round 1}} }} |
}} | }} | ||
}}<!-- | }}<!-- | ||
− | |||
-->{{#if: {{#var:attack10Type}} | | -->{{#if: {{#var:attack10Type}} | | ||
− | {{#if: {{ | + | {{#if: {{{8|}}} |
− | | {{#vardefine:attack10InitialSelectionWeight | {{#expr: {{#vardefineecho:attack10Damage| {{ | + | | {{#vardefine: attack10InitialSelectionWeight | {{#expr: {{#vardefineecho:attack10Damage| {{Q|{{{8}}}|Attack 1 Damage}} }} * (1 + ({{#vardefineecho:attack10AP| {{Q|{{{8}}}|Attack 1 AP}} }}/100)) * {{Q|{{{8}}}|Attack 1 Chance Factor|1}} / {{#vardefineecho:attack10Cooldown | {{Q|{{{8}}}|Attack 1 Cooldown}} }} round 1}} }} |
− | | {{#vardefine:attack10InitialSelectionWeight | {{#expr: {{#vardefineecho:attack10Damage| {{ | + | | {{#vardefine: attack10InitialSelectionWeight | {{#expr: {{#vardefineecho:attack10Damage| {{Q|{{#var:pawn}}|Attack 4 Damage}} }} * (1 + ({{#vardefineecho:attack10AP| {{Q|{{#var:pawn}}|Attack 4 AP}} }}/100)) * {{Q|{{#var:pawn}}|Attack 1 Chance Factor|1}} / {{#vardefineecho:attack10Cooldown | {{Q|{{#var:pawn}}|Attack 4 Cooldown}} }} round 1}} }} |
}} | }} | ||
}}<!-- | }}<!-- | ||
− | |||
-->{{#if: {{#var:attack11Type}} | | -->{{#if: {{#var:attack11Type}} | | ||
− | {{#vardefine:attack11InitialSelectionWeight | {{#expr: {{#vardefineecho:attack11Damage| {{# | + | {{#if: {{{9|}}} |
− | + | | {{#vardefine: attack11InitialSelectionWeight | {{#expr: {{#vardefineecho:attack11Damage| {{Q|{{{9}}}|Attack 1 Damage}} }} * (1 + ({{#vardefineecho:attack11AP| {{Q|{{{9}}}|Attack 1 AP}} }}/100)) * {{Q|{{{5}}}|Attack 1 Chance Factor|1}} / {{#vardefineecho:attack11Cooldown | {{Q|{{{9}}}|Attack 1 Cooldown}} }} round 1}} }} | |
+ | | {{#vardefine: attack11InitialSelectionWeight | {{#expr: {{#vardefineecho:attack11Damage| {{Q|{{#var:pawn}}|Attack 5 Damage}} }} * (1 + ({{#vardefineecho:attack11AP| {{Q|{{#var:pawn}}|Attack 5 AP}} }}/100)) * {{Q|{{#var:pawn}}|Attack 5 Chance Factor|1}} / {{#vardefineecho:attack11Cooldown | {{Q|{{#var:pawn}}|Attack 5 Cooldown}} }} round 1}} }} | ||
+ | }} | ||
+ | }}<!-- | ||
-->{{#if: {{#var:attack12Type}} | | -->{{#if: {{#var:attack12Type}} | | ||
− | {{#vardefine:attack12InitialSelectionWeight | {{#expr: {{#vardefineecho:attack12Damage| {{ | + | {{#if: {{{10|}}} |
− | }} }}<!-- | + | | {{#vardefine: attack12InitialSelectionWeight | {{#expr: {{#vardefineecho:attack12Damage| {{Q|{{{10}}}|Attack 1 Damage}} }} * (1 + ({{#vardefineecho:attack12AP| {{Q|{{{10}}}|Attack 1 AP}} }}/100)) * {{Q|{{{10}}}|Attack 1 Chance Factor|1}} / {{#vardefineecho:attack12Cooldown | {{Q|{{{10}}}|Attack 1 Cooldown}} }} round 1}} }} |
+ | | {{#vardefine: attack12InitialSelectionWeight | {{#expr: {{#vardefineecho:attack12Damage| {{Q|{{{ 4}}}|Attack 6 Damage}} }} * (1 + ({{#vardefineecho:attack12AP| {{Q|{{{ 4}}}|Attack 6 AP}} }}/100)) * {{Q|{{{ 4}}}|Attack 6 Chance Factor|1}} / {{#vardefineecho:attack12Cooldown | {{Q|{{{ 4}}}|Attack 6 Cooldown}} }} round 1}} }} | ||
+ | }} | ||
+ | }}<!-- | ||
2.2 Determine which attack has the highest weight to use as point of comparison for categorisation | 2.2 Determine which attack has the highest weight to use as point of comparison for categorisation | ||
− | -->{{#vardefine:maxSelectionWeight | {{#ifexpr: {{#var:attack1InitialSelectionWeight | + | -->{{#vardefine: maxSelectionWeight | {{#ifexpr: {{#var:attack1InitialSelectionWeight}} > {{#var:attack2InitialSelectionWeight|0}} | {{#var:attack1InitialSelectionWeight}} | {{#var:attack2InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack3InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack3InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack4InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack4InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack5InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack5InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack6InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack6InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack7InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack7InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack8InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack8InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack9InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack9InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack10InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack10InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack11InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack11InitialSelectionWeight}} }} }}<!-- |
− | --> | + | -->{{#ifexpr: {{#var:maxSelectionWeight}} < {{#var:attack12InitialSelectionWeight|0}} | {{#vardefine: maxSelectionWeight| {{#var:attack12InitialSelectionWeight}} }} }}<!-- |
2.3 Categorize attacks relative to highest initial selection weight into best/mid/worst | 2.3 Categorize attacks relative to highest initial selection weight into best/mid/worst | ||
− | 2.3.1 | + | 2.3.1 First attack |
− | --> | + | -->{{#vardefine: attack1SelectionCategory | {{#ifexpr: {{#var:attack1InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack1InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }}<!-- |
− | {{#vardefine:attack1SelectionCategory | + | 2.3.2 Second attack |
− | -->{{#if: {{#var:attack2Type }} | | + | -->{{#if: {{#var:attack2Type}} | |
− | {{#vardefine:attack2SelectionCategory | + | {{#vardefine: attack2SelectionCategory | {{#ifexpr: {{#var:attack2InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack2InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack3Type }} | | + | 2.3.3 Third attack |
− | {{#vardefine:attack3SelectionCategory | + | -->{{#if: {{#var:attack3Type}} | |
− | -->{{#if: {{#var:attack4Type }} | | + | {{#vardefine: attack3SelectionCategory | {{#ifexpr: {{#var:attack3InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack3InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- |
− | {{#vardefine:attack4SelectionCategory | + | 2.3.4 Fourth attack |
− | 2.3. | + | -->{{#if: {{#var:attack4Type}} | |
− | -->{{#if: {{#var:attack5Type | + | {{#vardefine: attack4SelectionCategory | {{#ifexpr: {{#var:attack4InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack4InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- |
− | {{#vardefine:attack5SelectionCategory | + | 2.3.5 Fifth attack |
− | -->{{#if: {{#var:attack6Type | + | -->{{#if: {{#var:attack5Type}} | |
− | {{#vardefine:attack6SelectionCategory | + | {{#vardefine: attack5SelectionCategory | {{#ifexpr: {{#var:attack5InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack5InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack7Type | + | 2.3.6 Sixth attack |
− | + | -->{{#if: {{#var:attack6Type}} | | |
− | -->{{#if: {{#var:attack8Type | + | {{#vardefine: attack6SelectionCategory | {{#ifexpr: {{#var:attack6InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack6InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- |
− | {{#vardefine:attack8SelectionCategory | + | 2.3.7 Pawn attacks |
− | -->{{#if: {{#var:attack9Type | + | -->{{#if: {{#var:attack7Type}} | |
− | + | {{#vardefine: attack7SelectionCategory | {{#ifexpr: {{#var:attack7InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack7InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- | |
− | -->{{#if: {{#var:attack10Type | + | -->{{#if: {{#var:attack8Type}} | |
− | {{#vardefine:attack10SelectionCategory | {{#ifexpr: {{#var:attack10InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine:numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack10InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine:numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }}<!-- | + | {{#vardefine: attack8SelectionCategory | {{#ifexpr: {{#var:attack8InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack8InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack11Type}} | + | -->{{#if: {{#var:attack9Type}} | |
− | {{#vardefine:attack11SelectionCategory | {{#ifexpr: {{#var:attack11InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine:numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack11InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine:numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }}<!-- | + | {{#vardefine: attack9SelectionCategory | {{#ifexpr: {{#var:attack9InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack9InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack12Type}} | + | -->{{#if: {{#var:attack10Type}} | |
− | {{#vardefine:attack12SelectionCategory | {{#ifexpr: {{#var:attack12InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine:numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack12InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine:numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1 | + | {{#vardefine: attack10SelectionCategory | {{#ifexpr: {{#var:attack10InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack10InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- |
+ | -->{{#if: {{#var:attack11Type}} | | ||
+ | {{#vardefine: attack11SelectionCategory | {{#ifexpr: {{#var:attack11InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack11InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- | ||
+ | -->{{#if: {{#var:attack12Type}} | | ||
+ | {{#vardefine: attack12SelectionCategory | {{#ifexpr: {{#var:attack12InitialSelectionWeight}} >= 0.95*{{#var:maxSelectionWeight}} | best {{#vardefine: numBestAttacks | {{#expr: {{#var:numBestAttacks}}+1}} }} | {{#ifexpr: {{#var:attack12InitialSelectionWeight}} < 0.25*{{#var:maxSelectionWeight}} | worst | mid {{#vardefine: numMidAttacks | {{#expr: {{#var:numMidAttacks}}+1}} }} }} }} }} }}<!-- | ||
2.4 Calculate selection chances | 2.4 Calculate selection chances | ||
Line 235: | Line 245: | ||
-->{{#vardefine:bestCategoryPercentage| {{#ifeq: {{#var:numMidAttacks}} | 0 | 1 | 0.75 }} }}<!-- | -->{{#vardefine:bestCategoryPercentage| {{#ifeq: {{#var:numMidAttacks}} | 0 | 1 | 0.75 }} }}<!-- | ||
Define selection chances from category and number of attacks in category so we don't have to calc them twice and so they can be called. | Define selection chances from category and number of attacks in category so we don't have to calc them twice and so they can be called. | ||
− | --> | + | -->{{#vardefine:attack1SelectionChance|{{#expr: {{#switch: {{#var:attack1SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }}<!-- |
− | -->{{#if: {{#var:attack2Type | + | -->{{#if: {{#var:attack2Type}} | {{#vardefine:attack2SelectionChance|{{#expr: {{#switch: {{#var:attack2SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack3Type | + | -->{{#if: {{#var:attack3Type}} | {{#vardefine:attack3SelectionChance|{{#expr: {{#switch: {{#var:attack3SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack4Type | + | -->{{#if: {{#var:attack4Type}} | {{#vardefine:attack4SelectionChance|{{#expr: {{#switch: {{#var:attack4SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack5Type | + | -->{{#if: {{#var:attack5Type}} | {{#vardefine:attack5SelectionChance|{{#expr: {{#switch: {{#var:attack5SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack6Type | + | -->{{#if: {{#var:attack6Type}} | {{#vardefine:attack6SelectionChance|{{#expr: {{#switch: {{#var:attack6SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack7Type | + | -->{{#if: {{#var:attack7Type}} | {{#vardefine:attack7SelectionChance|{{#expr: {{#switch: {{#var:attack7SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack8Type | + | -->{{#if: {{#var:attack8Type}} | {{#vardefine:attack8SelectionChance|{{#expr: {{#switch: {{#var:attack8SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack9Type | + | -->{{#if: {{#var:attack9Type}} | {{#vardefine:attack9SelectionChance|{{#expr: {{#switch: {{#var:attack9SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack10Type | + | -->{{#if: {{#var:attack10Type}} | {{#vardefine:attack10SelectionChance|{{#expr: {{#switch: {{#var:attack10SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack11Type | + | -->{{#if: {{#var:attack11Type}} | {{#vardefine:attack11SelectionChance|{{#expr: {{#switch: {{#var:attack11SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
− | -->{{#if: {{#var:attack12Type | + | -->{{#if: {{#var:attack12Type}} | {{#vardefine:attack12SelectionChance|{{#expr: {{#switch: {{#var:attack12SelectionCategory}} | best = {{#var:bestCategoryPercentage}}/{{#var:numBestAttacks}} | mid = 0.25/{{#var:numMidAttacks}} | 0 }} }} }} }}<!-- |
2.5 Calculate actual DPS | 2.5 Calculate actual DPS | ||
(bestDamage*bestSelectionWeight + midDamage*midSelectionWeight) / (bestCooldownTime*bestSelectionWeight + midCoolDownTime*midSelectionWeight) = DPS | (bestDamage*bestSelectionWeight + midDamage*midSelectionWeight) / (bestCooldownTime*bestSelectionWeight + midCoolDownTime*midSelectionWeight) = DPS | ||
− | -->{{#vardefine:weightedDamageTotal | + | -->{{#vardefine:weightedDamageTotal | {{#expr: {{#var:attack1Damage}}*{{#var:attack1SelectionChance}} |
− | + | {{#if: {{#var:attack2Type}} | +{{#var:attack2Damage}}*{{#var:attack2SelectionChance}} }} | |
− | {{#if: {{#var:attack2Type | + | {{#if: {{#var:attack3Type}} | +{{#var:attack3Damage}}*{{#var:attack3SelectionChance}} }} |
− | {{#if: {{#var:attack3Type | + | {{#if: {{#var:attack4Type}} | +{{#var:attack4Damage}}*{{#var:attack4SelectionChance}} }} |
− | {{#if: {{#var:attack4Type | + | {{#if: {{#var:attack5Type}} | +{{#var:attack5Damage}}*{{#var:attack5SelectionChance}} }} |
− | {{#if: {{#var:attack5Type | + | {{#if: {{#var:attack6Type}} | +{{#var:attack6Damage}}*{{#var:attack6SelectionChance}} }} |
− | {{#if: {{#var:attack6Type | + | {{#if: {{#var:attack7Type}} | +{{#var:attack7Damage}}*{{#var:attack7SelectionChance}} }} |
− | {{#if: {{#var:attack7Type | + | {{#if: {{#var:attack8Type}} | +{{#var:attack8Damage}}*{{#var:attack8SelectionChance}} }} |
− | {{#if: {{#var:attack8Type | + | {{#if: {{#var:attack9Type}} | +{{#var:attack9Damage}}*{{#var:attack9SelectionChance}} }} |
− | {{#if: {{#var:attack9Type | + | {{#if: {{#var:attack10Type}} | +{{#var:attack10Damage}}*{{#var:attack10SelectionChance}} }} |
− | {{#if: {{#var:attack10Type | + | {{#if: {{#var:attack11Type}} | +{{#var:attack11Damage}}*{{#var:attack11SelectionChance}} }} |
− | {{#if: {{#var:attack11Type | + | {{#if: {{#var:attack12Type}} | +{{#var:attack12Damage}}*{{#var:attack12SelectionChance}} }} }} |
− | {{#if: {{#var:attack12Type | + | }}<!-- |
− | + | -->{{#vardefine:weightedTimeTotal | {{#expr: {{#var:attack1Cooldown}}*{{#var:attack1SelectionChance}} | |
− | -->{{#vardefine:weightedTimeTotal | + | {{#if: {{#var:attack2Type}} | +{{#var:attack2Cooldown}}*{{#var:attack2SelectionChance}} }} |
− | + | {{#if: {{#var:attack3Type}} | +{{#var:attack3Cooldown}}*{{#var:attack3SelectionChance}} }} | |
− | {{#if: {{#var:attack2Type | + | {{#if: {{#var:attack4Type}} | +{{#var:attack4Cooldown}}*{{#var:attack4SelectionChance}} }} |
− | {{#if: {{#var:attack3Type | + | {{#if: {{#var:attack5Type}} | +{{#var:attack5Cooldown}}*{{#var:attack5SelectionChance}} }} |
− | {{#if: {{#var:attack4Type | + | {{#if: {{#var:attack6Type}} | +{{#var:attack6Cooldown}}*{{#var:attack6SelectionChance}} }} |
− | {{#if: {{#var:attack5Type | + | {{#if: {{#var:attack7Type}} | +{{#var:attack7Cooldown}}*{{#var:attack7SelectionChance}} }} |
− | {{#if: {{#var:attack6Type | + | {{#if: {{#var:attack8Type}} | +{{#var:attack8Cooldown}}*{{#var:attack8SelectionChance}} }} |
− | {{#if: {{#var:attack7Type | + | {{#if: {{#var:attack9Type}} | +{{#var:attack9Cooldown}}*{{#var:attack9SelectionChance}} }} |
− | {{#if: {{#var:attack8Type | + | {{#if: {{#var:attack10Type}} | +{{#var:attack10Cooldown}}*{{#var:attack10SelectionChance}} }} |
− | {{#if: {{#var:attack9Type | + | {{#if: {{#var:attack11Type}} | +{{#var:attack11Cooldown}}*{{#var:attack11SelectionChance}} }} |
− | {{#if: {{#var:attack10Type | + | {{#if: {{#var:attack12Type}} | +{{#var:attack12Cooldown}}*{{#var:attack12SelectionChance}} }} }} |
− | {{#if: {{#var:attack11Type | + | }}<!-- |
− | {{#if: {{#var:attack12Type | + | -->{{#vardefine:trueDPS| {{#expr:{{#var:weightedDamageTotal}}/{{#var:weightedTimeTotal}} round 2}} }}<!-- |
− | |||
− | -->{{#vardefine:trueDPS | {{#expr:{{#var:weightedDamageTotal}}/{{#var:weightedTimeTotal}} round 2}} }}<!-- | ||
− | 2.6 Calculate actual average AP | + | 2.6 Calculate actual average AP |
− | -->{{#vardefine:trueAP | {{#expr: | + | -->{{#vardefine:trueAP | {{#expr: {{#vardefineecho: attack1WeightedAP | {{#expr: {{#var:attack1AP}}*{{#var:attack1SelectionChance}} }} | 0}} |
− | + | {{#if: {{#var:attack2Type}} | +{{#vardefineecho: attack2WeightedAP | {{#expr: {{#var:attack2AP}}*{{#var:attack2SelectionChance}} }} | 0}} }} | |
− | {{#if: {{#var:attack2Type | + | {{#if: {{#var:attack3Type}} | +{{#vardefineecho: attack3WeightedAP | {{#expr: {{#var:attack3AP}}*{{#var:attack3SelectionChance}} }} | 0}} }} |
− | {{#if: {{#var:attack3Type | + | {{#if: {{#var:attack4Type}} | +{{#vardefineecho: attack4WeightedAP | {{#expr: {{#var:attack4AP}}*{{#var:attack4SelectionChance}} }} | 0}} }} |
− | {{#if: {{#var:attack4Type | + | {{#if: {{#var:attack5Type}} | +{{#vardefineecho: attack5WeightedAP | {{#expr: {{#var:attack5AP}}*{{#var:attack5SelectionChance}} }} | 0}} }} |
− | {{#if: {{#var:attack5Type | + | {{#if: {{#var:attack6Type}} | +{{#vardefineecho: attack6WeightedAP | {{#expr: {{#var:attack6AP}}*{{#var:attack6SelectionChance}} }} | 0}} }} |
− | {{#if: {{#var:attack6Type | + | {{#if: {{#var:attack7Type}} | +{{#vardefineecho: attack7WeightedAP | {{#expr: {{#var:attack7AP}}*{{#var:attack7SelectionChance}} }} | 0}} }} |
− | {{#if: {{#var:attack7Type | + | {{#if: {{#var:attack8Type}} | +{{#vardefineecho: attack8WeightedAP | {{#expr: {{#var:attack8AP}}*{{#var:attack8SelectionChance}} }} | 0}} }} |
− | {{#if: {{#var:attack8Type | + | {{#if: {{#var:attack9Type}} | +{{#vardefineecho: attack9WeightedAP | {{#expr: {{#var:attack9AP}}*{{#var:attack9SelectionChance}} }} | 0}} }} |
− | {{#if: {{#var:attack9Type | + | {{#if: {{#var:attack10Type}} | +{{#vardefineecho: attack10WeightedAP | {{#expr: {{#var:attack10AP}}*{{#var:attack10SelectionChance}} }} | 0}} }} |
− | {{#if: {{#var:attack10Type | + | {{#if: {{#var:attack11Type}} | +{{#vardefineecho: attack11WeightedAP | {{#expr: {{#var:attack11AP}}*{{#var:attack11SelectionChance}} }} | 0}} }} |
− | {{#if: {{#var:attack11Type | + | {{#if: {{#var:attack12Type}} | +{{#vardefineecho: attack12WeightedAP | {{#expr: {{#var:attack12AP}}*{{#var:attack12SelectionChance}} }} | 0}} }} round 2}} |
− | {{#if: {{#var:attack12Type | + | }}<!-- |
− | round 2}} }}<!-- | ||
3. RETURNED VALUE | 3. RETURNED VALUE | ||
-->{{#var:trueDPS}}</includeonly><noinclude> | -->{{#var:trueDPS}}</includeonly><noinclude> | ||
+ | {{Recode|reason = Update to allow for adding weapon verb sets to pawn verb sets}} | ||
{{Documentation}} | {{Documentation}} | ||
− | |||
</noinclude> | </noinclude> |