(updated from User:FINNER/common.js) |
(Ivara's Navigator fixed) |
||
Line 2,276: | Line 2,276: | ||
formula_loader(['ivara', 'ivara2_aug', 'ivara2'], [ |
formula_loader(['ivara', 'ivara2_aug', 'ivara2'], [ |
||
['str', (STR * 5).toFixed(2) + "x"], |
['str', (STR * 5).toFixed(2) + "x"], |
||
− | ['dur', ( |
+ | ['dur', (1 / DUR).toFixed(2) + "x/s"], |
['eff', (EFF * 25).toFixed(2)], |
['eff', (EFF * 25).toFixed(2)], |
||
['cha', (CHA * 3).toFixed(2) + "/s + " + (CHA * 2).toFixed(2) + "/s\xB2"] |
['cha', (CHA * 3).toFixed(2) + "/s + " + (CHA * 2).toFixed(2) + "/s\xB2"] |
||
Line 4,059: | Line 4,059: | ||
return '<span class="ability-tooltip" data-param="' + name + '" style="white-space:pre"><a href="/wiki/' + link + '">' + name + '</a></span>'; |
return '<span class="ability-tooltip" data-param="' + name + '" style="white-space:pre"><a href="/wiki/' + link + '">' + name + '</a></span>'; |
||
} |
} |
||
− | |||
// (for now) identical to abilityName, creates the title of the augment. The difference should be in the tooltip if implemented |
// (for now) identical to abilityName, creates the title of the augment. The difference should be in the tooltip if implemented |
||
function augmentName(name) { |
function augmentName(name) { |
Revision as of 09:32, 23 December 2019
/* jshint maxerr: 1000 */
//Creates tables for use in Abilities and Augments maximization
//Credits: Kselia, TunaInABottle, #javascript channel of DevWiki's Discord
//Source: https://jsfiddle.net/TunaInABottle/47enrfuc/
//Last stable: https://jsfiddle.net/TunaInABottle/47enrfuc/967/
$(function() {
// Warframes
var AshMap = {
shuriken: [
["ash1_str1", "Base damage"],
["ash1_str2", "Bleed DoT"],
["ash1_str3", "Total damage"],
["ash1_eff", "Energy"]
],
seeking_shuriken: [
["ash1_aug_dur", "Debuff duration"],
["ash1_aug_str", "Armor reduction"]
],
smoke_screen: [
["ash2_dur", "Duration"],
["ash2_rng", "Range"],
["ash2_eff", "Energy"]
],
smoke_shadow: "N/A",
teleport: [
["ash3_rng", "Range"],
["ash3_eff", "Energy"]
],
fatal_teleport: [
["ash3_aug_str", "Bonus damage"]
],
blade_storm: [
["ash4_str1", "Base damage"],
["ash4_str2", "Bleed DoT"],
["ash4_str3", "Total damage"],
["ash4_rng", "Range"],
["ash4_eff1", "Energy per mark"],
["ash4_eff2", "Energy per mark while invisible"]
],
rising_storm: [
["ash4_aug_str", "Combo per hit"]
]
};
var AtlasMap = {
landslide: [
["atlas1_str", "Damage"],
["atlas1_dur", "Combo window"],
["atlas1_rng1", "Dash range"],
["atlas1_rng2", "Impact radius"],
["atlas1_eff", "Energy"]
],
path_of_statues: [
["atlas1_aug_dur1", "Path duration"],
["atlas1_aug_dur2", "Petrify duration"]
],
tectonics: [
["atlas2_health", "Health"],
["atlas2_str1", "Roll damage"],
["atlas2_str2", "Explosion damage"],
["atlas2_rng", "Explosion radius"],
["atlas2_eff", "Energy"]
],
tectonic_fracture: "N/A",
petrify: [
["atlas3_dur", "Petrify duration"],
["atlas3_rng", "Cone length"],
["atlas3_eff", "Energy"]
],
ore_gaze: [
["atlas3_aug_str", "Loot chance"]
],
rumblers: [
["atlas4_dur", "Duration"],
["atlas4_health", "Health"],
["atlas4_armor", "Armor"],
["atlas4_str1", "Melee damage"],
["atlas4_str2", "Rock damage"],
["atlas4_str3", "Explosion damage"],
["atlas4_rng1", "Stone/Explosion radius"],
["atlas4_rng2", "Speed multiplier"],
["atlas4_eff", "Energy"]
],
titanic_rumbler: [
["atlas4_aug_health", "Health"],
["atlas4_aug_str1", "Melee damage"],
["atlas4_aug_str2", "Rock damage"],
["atlas4_aug_str3", "Explosion damage"],
["atlas4_aug_rng", "Speed multiplier"]
]
};
var BansheeMap = {
sonic_boom: [
["banshee1_str", "Damage"],
["banshee1_rng", "Cone length"],
["banshee1_eff", "Energy"]
],
sonic_fracture: [
["banshee1_aug_str", "Armor reduction"],
["banshee1_aug_dur", "Debuff duration"]
],
sonar: [
["banshee2_dur", "Duration"],
["banshee2_str", "Damage multiplier"],
["banshee2_rng", "Range"],
["banshee2_eff", "Energy"]
],
resonance: "N/A",
silence: [
["banshee3_dur", "Duration"],
["banshee3_rng", "Range"],
["banshee3_eff", "Energy"]
],
savage_silence: [
["banshee3_aug_str", "Damage multiplier"]
],
sound_quake: [
["banshee4_str", "Damage"],
["banshee4_rng", "Range"],
["banshee4_eff", "Energy"],
["banshee4_cha", "Energy drain"]
],
resonating_quake: [
["banshee4_aug_str", "Damage"],
["banshee4_aug_rng", "Range"],
["banshee4_aug_eff", "Energy"]
]
};
var BaruukMap = {
"": "",
elude: [
["baruuk1_rng", "Evasion angle"],
["baruuk1_eff", "Energy"],
["baruuk1_cha", "Energy drain"]
],
lull: [
["baruuk2_dur1", "Wave duration"],
["baruuk2_dur2", "Sleep duration"],
["baruuk2_rng", "Range"],
["baruuk2_eff", "Energy"]
],
desolate_hands: [
["baruuk3_str1", "Damage"],
["baruuk3_str2", "Charges"],
["baruuk3_str3", "Damage reduction"],
["baruuk3_rng1", "Seek range"],
["baruuk3_rng2", "Explosion range"],
["baruuk3_eff", "Energy"]
],
serene_storm: [
["baruuk4_str1", "Damage"],
["baruuk4_str2", "Damage reduction"]
],
};
var ChromaMap = {
"": "",
spectral_scream: [
["chroma1_str", "Damage"],
["chroma1_rng", "Range"],
["chroma1_eff", "Energy"],
["chroma1_cha", "Energy drain"]
],
afterburn: [
["chroma1_aug_str", "Damage"]
],
elemental_ward: [
["chroma2_dur", "Duration"],
["chroma2_toxin_dur1", "Holster/reload bonus"],
["chroma2_heat_str1", "Damage"],
["chroma2_heat_str2", "Health bonus"],
["chroma2_electric_str1", "Reflection multiplier"],
["chroma2_electric_str2", "Shields bonus"],
["chroma2_electric_str3", "Status chance"],
["chroma2_electric_str4", "Minumum arc damage"],
["chroma2_toxin_str", "Damage chance"],
["chroma2_cold_str1", "Reflection multiplier"],
["chroma2_cold_str2", "Armor multiplier"],
["chroma2_cold_str3", "Status chance"],
["chroma2_rng", "Aura range"],
["chroma2_electric_rng", "Discharge range"],
["chroma2_eff", "Energy"]
],
everlasting_ward: "N/A",
vex_armor: [
["chroma3_str1", "Maximum armor bonus"],
["chroma3_str2", "Maximum damage bonus"],
["chroma3_dur", "Duration"],
["chroma3_rng", "Range"],
["chroma3_eff", "Energy"]
],
vexing_retaliation: [
["chroma3_aug_rng", "Range"]
],
effigy: [
["chroma4_str1", "Damage"],
["chroma4_str2", "Health"],
["chroma4_eff", "Energy"],
["chroma4_cha", "Energy drain"]
],
guided_effigy: [
["chroma4_aug_str", "Damage"]
],
}
var EmberMap = {
fireball: [
["ember1_str1", "Impact Damage"],
["ember1_str2", "Area Damage"],
["ember1_eff", "Energy"]
],
fireball_frenzy: [
["ember1_aug_str", "Damage bonus"],
["ember1_aug_dur", "Duration"],
["ember1_aug_rng", "Range"]
],
accelerant: [
["ember2_str", "Fire damage multiplier"],
["ember2_dur", "Duration"],
["ember2_rng", "Range"],
["ember2_eff", "Energy"]
],
flash_accelerant: [
["ember2_aug_str", "Fire damage multiplier"]
],
fire_blast: [
["ember3_str1", "Wave damage"],
["ember3_str2", "Ring damage"],
["ember3_dur", "Duration"],
["ember3_eff", "Energy"]
],
fire_fright: "N/A",
world_on_fire: [
["ember4_str1", "Damage"],
["ember4_str2", "Status chance"],
["ember4_rng", "Range"],
["ember4_eff", "Energy"],
["ember4_cha", "Energy drain"]
],
firequake: "N/A"
};
var EquinoxMap = {
metamorphosis: [
["equinox1_night_str1", "Armor bonus"],
["equinox1_night_str2", "Shields bonus"],
["equinox1_day_str1", "Damage bonus"],
["equinox1_day_str2", "Speed bonus"],
["equinox1_dur", "Duration"],
["equinox1_eff", "Energy"]
],
duality: [
["equinox1_aug_dur", "Duration"]
],
rest_and_rage: [
["equinox2_day_str1", "Damage vulnerability"],
["equinox2_day_str2", "Enemy speed bonus"],
["equinox2_dur", "Duration"],
["equinox2_rng1", "Cast range"],
["equinox2_rng2", "Area range"],
["equinox2_eff", "Energy"]
],
calm_and_frenzy: [
["equinox2_aug_rng", "Diffusion range"]
],
pacify_and_provoke: [
["equinox3_night_str", "Enemy damage reduction"],
["equinox3_day_str", "Ability strength bonus"],
["equinox3_rng", "Range"],
["equinox3_eff", "Energy"],
["equinox3_night_eff1", "Energy drain per enemy"],
["equinox3_day_eff1", "Energy per ability"]
],
peaceful_provocation: [
["equinox3_aug_night_str", "Max enemy speed reduction"],
["equinox3_aug_day_str", "Max Ability strength bonus"]
],
mend_and_maim: [
["equinox4_night_str", "Shields per kill"],
["equinox4_day_str", "Aura damage"],
["equinox4_rng", "Range"],
["equinox4_eff", "Energy"],
["equinox4_cha", "Energy drain"]
],
energy_transfer: "N/A"
};
var ExcaliburMap = {
slash_dash: [
["excalibur1_str", "Damage"],
["excalibur1_rng", "Range"],
["excalibur1_eff", "Energy"]
],
surging_dash: [
["excalibur1_aug_str", "Combo counter hits"]
],
radial_blind: [
["excalibur2_dur", "Duration"],
["excalibur2_rng", "Range"],
["excalibur2_eff", "Energy"]
],
radial_finish: [
["excalibur2_aug_str", "Damage multiplier"]
],
radial_javelin: [
["excalibur3_str", "Damage"],
["excalibur3_rng", "Range"],
["excalibur3_eff", "Energy"]
],
furious_javelin: [
["excalibur3_aug_str", "Bonus melee damage"],
["excalibur3_aug_dur", "Buff duration"]
],
exalted_blade: [
["excalibur4_str", "Damage"],
["excalibur4_dur", "Duration"],
["excalibur4_rng", "Range"],
["excalibur4_eff", "Energy"],
["excalibur4_cha", "Energy drain"]
],
chromatic_blade: [
["excalibur4_aug_str", "Status chance"]
]
};
var FrostMap = {
freeze: [
["frost1_str1", "Impact damage"],
["frost1_str2", "Area damage"],
["frost1_dur1", "Freeze duration"],
["frost1_dur2", "Ice duration"],
["frost1_eff", "Energy"]
],
freeze_force: [
["frost1_aug_str", "Damage bonus"],
["frost1_aug_dur", "Duration"],
["frost1_aug_rng", "Range"]
],
ice_wave: [
["frost2_str", "Damage"],
["frost2_rng1", "Angle"],
["frost2_rng2", "Initial width"],
["frost2_rng3", "Length"],
["frost2_eff", "Energy"]
],
ice_wave_impedance: [
["frost2_aug_dur", "Duration"]
],
snow_globe: [
["frost3_health", "Health"],
["frost3_str", "Explosion Damage"],
["frost3_rng", "Range"],
["frost3_eff", "Energy"]
],
chilling_globe: [
["frost3_aug_dur", "Duration"]
],
avalanche: [
["frost4_str1", "Initial damage"],
["frost4_str2", "Explosion damage"],
["frost4_str3", "Armor Reduction"],
["frost4_rng1", "Freeze range"],
["frost4_rng2", "Explosion range"],
["frost4_dur", "Duration"],
["frost4_eff", "Energy"]
],
icy_avalanche: [
["frost4_aug_str", "Shield health"]
]
};
var GaraMap = {
"": "",
shattered_lash: [
["gara1_str", "Damage"],
["gara1_rng", "Range"],
["gara1_eff", "Energy"]
],
splinter_storm: [
["gara2_str1", "Damage"],
["gara2_str2", "Damage Reduction"],
["gara2_str3", "Damage Multiplier"],
["gara2_dur", "Duration"],
["gara2_rng1", "Cast range"],
["gara2_rng2", "Ability range"],
["gara2_eff", "Energy"]
],
mending_splinters: [
["gara2_aug_str4", "Health regen"]
],
spectrorage: [
["gara3_str1", "Mirror damage"],
["gara3_str2", "Collapse damage"],
["gara3_dur", "Duration"],
["gara3_rng1", "Mirrors"],
["gara3_rng2", "Collapse threshold"],
["gara3_rng3", "Charm radius"],
["gara3_eff", "Energy"]
],
spectrosiphon: "N/A",
mass_vitrify: [
["gara4_str1", "Damage multiplier"],
["gara4_str2", "Segment base health"],
["gara4_str3", "Segment explosion damage"],
["gara4_str4", "Shatter explosion damage"],
["gara4_dur1", "Expansion duration"],
["gara4_dur2", "Vitrify duration"],
["gara4_rng1", "Initial radius"],
["gara4_rng2", "Max radius"],
["gara4_rng3", "Segment explosion range"],
["gara4_rng4", "Shatter explosion range"],
["gara4_eff", "Energy"],
["gara4_cha", "Energy drain"]
]
};
var GarudaMap = {
"": "",
dread_mirror: [
["garuda1_str", "Damage multiplier"],
["garuda1_dur", "Duration"],
["garuda1_rng1", "Pounce range"],
["garuda1_rng2", "Explosion radius"],
["garuda1_eff", "Energy"],
["garuda1_cha", "Energy drain"]
],
dread_ward: [
["garuda1_aug_dur", "Duration"]
],
blood_altar: [
["garuda2_str", "Health regen"],
["garuda2_dur", "Duration"],
["garuda2_rng1", "Pounce range"],
["garuda2_rng2", "Heal radius"],
["garuda2_eff", "Energy"]
],
bloodletting: [
["garuda3_eff", "Energy gain"]
],
seeking_talons: [
["garuda4_str1", "Damage"],
["garuda4_str2", "Bleed chance"],
["garuda4_dur", "Duration"],
["garuda4_eff", "Energy"]
]
};
var GaussMap = {
"": "",
mach_rush: [
["gauss1_str", "Damage"],
["gauss1_rng1", "Knockdown range"],
["gauss1_rng2", "Shockwave range"],
["gauss1_eff", "Energy"]
],
kinetic_plating: [
["gauss2_str", "Damage reduction"],
["gauss2_dur", "Duration"],
["gauss2_eff", "Energy"]
],
thermal_sunder: [
["gauss3_str1", "Cold/Heat damage"],
["gauss3_str2", "Blast damage"],
["gauss3_dur1", "Area duration"],
["gauss3_dur2", "Status duration"],
["gauss3_rng", "Range"],
["gauss3_eff", "Energy"]
],
redline: [
["gauss4_str", "Damage"],
["gauss4_dur1", "Duration"],
["gauss4_dur2", "Fire rate buff"],
["gauss4_dur3", "Attack speed buff"],
["gauss4_dur4", "Reload speed buff"],
["gauss4_dur5", "Holster speed buff"],
["gauss4_eff", "Energy"]
]
};
var HarrowMap = {
"": "",
condemn: [
["harrow1_str", "Shields"],
["harrow1_dur", "Duration"],
["harrow1_rng", "Range"],
["harrow1_eff", "Energy"]
],
penance: [
["harrow2_str1", "Lifesteal"],
["harrow2_str2", "Bonus fire rate"],
["harrow2_str3", "Bonus reload speed"],
["harrow2_dur1", "Base duration"],
["harrow2_dur2", "Duration every 100 shields"],
["harrow2_eff", "Energy"]
],
thurible: [
["harrow3_str", "Conversion efficiency"],
["harrow3_dur", "Duration"],
["harrow3_rng", "Range"],
["harrow3_eff", "Energy"]
],
warding_thurible: [
["harrow3_aug_str1", "Damage reduction"],
["harrow3_aug_str2", "Energy per hit"]
],
covenant: [
["harrow4_str", "critical chance every 100 damage"],
["harrow4_dur1", "Invulnerability duration"],
["harrow4_dur2", "Critical chance duration"],
["harrow4_eff", "Energy"]
],
lasting_covenant: [
["harrow4_aug_dur", "Bonus duration per headshot"]
]
};
var HildrynMap = {
"": "",
balefire: [
["hildryn1_str", "Damage per bolt"],
["hildryn1_rng", "Explosion radius"],
["hildryn1_eff1", "Shields"],
["hildryn1_eff2", "Shields per shot"]
],
shield_pillage: [
["hildryn2_str", "Shields/Armor reduction"],
["hildryn2_dur", "Duration"],
["hildryn2_rng", "Final pulse radius"],
["hildryn2_eff", "Shields"]
],
haven: [
["hildryn3_str1", "Ally bonus shields"],
["hildryn3_str2", "Damage"],
["hildryn3_dur", "Recharge rate bonus"],
["hildryn3_eff", "Shields"],
["hildryn3_cha1", "Shields drain per ally"],
["hildryn3_cha2", "Shields drain per enemy"]
],
aegis_storm: [
["hildryn4_str1", "Damage/sec"],
["hildryn4_str2", "Damage on deactivation"],
["hildryn4_rng", "Max field radius"],
["hildryn4_eff", "Shields"],
["hildryn4_cha1", "Shields drain per second"],
["hildryn4_cha2", "Shields drain per enemy"]
]
};
var HydroidMap = {
tempest_barrage: [
["hydroid1_str", "Damage"],
["hydroid1_dur", "Duration"],
["hydroid1_rng", "Explosion range"],
["hydroid1_eff", "Energy"]
],
corroding_barrage: "N/A",
tidal_surge: [
["hydroid2_str", "Damage"],
["hydroid2_dur", "Duration"],
["hydroid2_rng", "Speed"],
["hydroid2_eff", "Energy"]
],
tidal_impunity: [
["hydroid2_aug_dur", "Duration"]
],
undertow: [
["hydroid3_str1", "Damage"],
["hydroid3_str2", "Damage increase"],
["hydroid3_rng1", "Puddle size"],
["hydroid3_rng2", "Grab range"],
["hydroid3_eff1", "Energy"],
["hydroid3_eff2", "Energy/grab"],
["hydroid3_eff3", "Meters/Energy"],
["hydroid3_cha", "Energy drain"]
],
curative_undertow: [
["hydroid3_aug_str1", "ally max health restored"],
["hydroid3_aug_str2", "self max health restored"]
],
tentacle_swarm: [
["hydroid4_str1", "Contact amage"],
["hydroid4_str2", "Capture damage"],
["hydroid4_dur", "Duration"],
["hydroid4_rng", "Range"],
["hydroid4_eff", "Energy"]
],
pilfering_swarm: "N/A"
};
var InarosMap = {
"": "",
desiccation: [
["inaros1_str", "Damage"],
["inaros1_dur", "Duration"],
["inaros1_rng", "Range"],
["inaros1_eff", "Energy"]
],
desiccations_curse: "N/A",
devour: [
["inaros2_str", "Damage"],
["inaros2_dur", "Duration"],
["inaros2_rng", "Range"],
["inaros2_eff", "Energy"]
],
sandstorm: [
["inaros3_str", "Damage"],
["inaros3_rng", "Range"],
["inaros3_eff", "Energy"],
["inaros3_cha", "Energy drain"]
],
elemental_sandstorm: [
["inaros3_aug_str", "Status chance/sec"]
],
scarab_swarm: [
["inaros4_str", "Damage"],
["inaros4_dur", "Duration"],
["inaros4_rng1", "Cast range"],
["inaros4_rng2", "Heal range"],
["inaros4_eff", "Energy"]
],
negation_swarm: "N/A"
};
var IvaraMap = {
quiver: [
["ivara1_dur1", "Bubble duration"],
["ivara1_dur2", "Sleep duration"],
["ivara1_rng1", "Bubble range"],
["ivara1_rng2", "Noise range"],
["ivara1_rng3", "Sleep range"],
["ivara1_eff", "Energy"]
],
empowered_quiver: [
["ivara1_aug_str1", "Critical damage bonus"],
["ivara1_aug_str2", "Chance to resistist statuses"]
],
navigator: [
["ivara2_str", "Maximum damage multiplier"],
["ivara2_dur", "Multiplier growth"],
["ivara2_eff", "Energy"],
["ivara2_cha", "Energy drain"]
],
piercing_navigator: [
["ivara2_aug_str1", "Critical chance per hit"],
["ivara2_aug_str2", "Maximum Critical chance"]
],
prowl: [
["ivara3_str1", "Bonus headshot damage"],
["ivara3_str2", "Loot chance"],
["ivara3_dur", "Steal time"],
["ivara3_rng", "Steal range"],
["ivara3_eff", "Energy"],
["ivara3_cha", "Energy drain"]
],
infiltrate: [
["ivara3_aug_str", "Movement speed bonus"]
],
artemis_bow: [
["ivara4_str", "Base damage"],
["ivara4_eff1", "Energy"],
["ivara4_eff2", "Energy/shot"]
],
concentrated_arrow: [
["ivara4_aug_rng", "Range"]
]
};
var KhoraMap = {
"": "",
whipclaw: [
["khora1_str", "Base damage"],
["khora1_rng1", "Cast range"],
["khora1_rng2", "Explosion range"],
["khora1_eff", "Energy"]
],
accumulating_whipclaw: [
["khora1_aug_str", "Maximum damage"]
],
ensnare: [
["khora2_dur1", "Duration"],
["khora2_dur2", "Spread delay"],
["khora2_rng1", "Cast range"],
["khora2_rng2", "Spread range"],
["khora2_eff", "Energy"]
],
venari: [
["khora3_str1", "Speed multiplier"],
["khora3_str2", "Snare damage"],
["khora3_str3", "Health regen"],
["khora3_eff1", "Command energy"],
["khora3_eff2", "Revive energy"]
],
venari_bodyguard: "N/A",
strangledome: [
["khora4_str", "Damage"],
["khora4_dur", "Duration"],
["khora4_rng1", "Dome range"],
["khora4_rng2", "Grab range"],
["khora4_eff", "Energy"]
],
pilfering_strangledome: "N/A"
};
var LimboMap = {
"": "",
banish: [
["limbo1_str", "Damage"],
["limbo1_dur", "Duration"],
["limbo1_rng", "Range"],
["limbo1_eff", "Energy"]
],
rift_haven: [
["limbo1_aug_str", "Health restored"]
],
stasis: [
["limbo2_dur", "Duration"],
["limbo2_eff", "Energy"]
],
rift_surge: [
["limbo3_dur1", "Surge duration"],
["limbo3_dur2", "Banish duration"],
["limbo3_rng1", "Surge/transfer radius"],
["limbo3_rng2", "Banish radius"],
["limbo3_eff", "Energy"]
],
rift_torrent: [
["limbo3_aug_str", "Damage bonus while rifted"],
],
cataclysm: [
["limbo4_str", "Damage"],
["limbo4_dur", "Duration"],
["limbo4_rng1", "Initial radius"],
["limbo4_rng2", "Final radius"],
["limbo4_eff", "Energy"]
],
cataclysm_continuum: "N/A",
};
var LokiMap = {
decoy: [
["loki1_dur", "Duration"],
["loki1_eff", "Energy"]
],
savior_decoy: "N/A",
invisibility: [
["loki2_dur", "Duration"],
["loki2_eff", "Energy"]
],
hushed_invisibility: "N/A",
switch_teleport: [
["loki3_rng", "Range"],
["loki3_eff", "Energy"]
],
safeguard_switch: [
["loki3_aug_dur", "Range"]
],
radial_disarm: [
["loki4_str", "Damage"],
["loki4_rng", "Range"],
["loki4_eff", "Energy"]
],
irradiating_disarm: "N/A",
};
var MagMap = {
pull: [
["mag1_str1", "Damage"],
["mag1_str2", "Energy drop chance"],
["mag1_rng", "Range"],
["mag1_eff", "Energy"]
],
greedy_pull: "N/A",
magnetize: [
["mag2_str1", "Multiplier"],
["mag2_str2", "Explosion damage"],
["mag2_dur", "Duration"],
["mag2_rng1", "Field radius"],
["mag2_rng2", "Explosion radius"],
["mag2_eff", "Energy"]
],
magnetized_discharge: [
["mag2_aug_str", "Disarm chance"]
],
polarize: [
["mag3_str1", "Damage"],
["mag3_str2", "Damage multiplier"],
["mag3_dur", "Duration"],
["mag3_rng1", "Initial/explosion radius"],
["mag3_rng2", "Maximum pulse range"],
["mag3_eff", "Energy"]
],
counter_pulse: [
["mag3_aug_dur", "Disable/jamming duration"]
],
crush: [
["mag4_str1", "Damage"],
["mag4_str2", "Shields restored"],
["mag4_rng", "Range"],
["mag4_eff", "Energy"]
],
fracturing_crush: [
["mag4_aug_str", "Armor reduction"],
["mag4_aug_dur", "Root duration"]
],
};
var MesaMap = {
ballistic_battery: [
["mesa1_str1", "Damage conversion"],
["mesa1_str2", "Max damage per instance"],
["mesa1_str3", "Max stored damage"],
["mesa1_eff", "Energy"]
],
ballistic_bullseye: "N/A",
shooting_gallery: [
["mesa2_str", "Damage bonus"],
["mesa2_dur", "Duration"],
["mesa2_rng", "Range"],
["mesa2_eff", "Energy"],
],
muzzle_flash: [
["mesa2_aug_rng", "Blind range"],
["mesa2_aug_dur", "Blind duration"]
],
shatter_shield: [
["mesa3_str", "Damage reduction"],
["mesa3_dur", "Duration"],
["mesa3_rng", "Range"],
["mesa3_eff", "Energy"]
],
staggering_shield: "N/A",
peacemaker: [
["mesa4_str", "Damage bonus"],
["mesa4_eff", "Energy"],
["mesa4_cha", "Energy drain"]
],
mesas_waltz: "N/A",
};
var MirageMap = {
"": "",
hall_of_mirrors: [
["mirage1_str", "Damage"],
["mirage1_dur", "Duration"],
["mirage1_eff", "Energy"]
],
hall_of_malevolence: "N/A",
sleight_of_hand: [
["mirage2_str", "Pickup/Jewel explosion damage"],
["mirage2_dur1", "Trap duration"],
["mirage2_dur2", "Blind duration"],
["mirage2_rng1", "Trap radius"],
["mirage2_rng2", "Jewel charm radius"],
["mirage2_rng3", "Explosion/blind radius"],
["mirage2_eff", "Energy"]
],
explosive_legerdemain: [
["mirage2_aug_str", "Mine damage"]
],
eclipse: [
["mirage3_str1", "Maximum damage bonus"],
["mirage3_str2", "Maximum damage reduction"],
["mirage3_dur", "Duration"],
["mirage3_eff", "Energy"]
],
total_eclipse: [
["mirage3_aug_rng", "Range"]
],
prism: [
["mirage4_str1", "Minimum damage"],
["mirage4_str2", "Minimum damage"],
["mirage4_dur1", "Prism duration"],
["mirage4_dur2", "Blind duration"],
["mirage4_rng1", "Laser range"],
["mirage4_rng2", "Blind radius"],
["mirage4_eff", "Energy"],
["mirage4_cha", "Energy drain"],
],
};
var NekrosMap = {
soul_punch: [
["nekros1_str", "Initial damage"],
["nekros1_rng", "Cast range"],
["nekros1_eff", "Energy"]
],
soul_survivor: [
["nekros1_aug_str", "Health restored"]
],
terrify: [
["nekros2_str1", "Affected enemies"],
["nekros2_str2", "Armor reduction"],
["nekros2_dur", "Duration"],
["nekros2_rng", "Range"],
["nekros2_eff", "Energy"]
],
creeping_terrify: [
["nekros2_aug_str", "Movement speed reduction"]
],
desecrate: [
["nekros3_rng", "Range"],
["nekros3_eff", "Energy/energy per corpse"]
],
despoil: [
["nekros3_aug_eff", "Health per corpse"]
],
shadows_of_the_dead: [
["nekros4_str1", "Damage bonus"],
["nekros4_str2", "Shield/health bonus"],
["nekros4_dur", "Health decay"],
["nekros4_eff", "Energy"]
],
shield_of_shadows: [
["nekros4_aug_str1", "Damage reduction per shadow"],
["nekros4_aug_str2", "Max damage reduction"],
["nekros4_aug_rng", "Link range"]
],
};
var NezhaMap = {
"": "",
fire_walker: [
["nezha1_str1", "Damage"],
["nezha1_str2", "Explosion damage"],
["nezha1_dur1", "Ability duration"],
["nezha1_dur2", "Flame duration"],
["nezha1_rng", "Explosion radius"],
["nezha1_eff", "Energy"]
],
pyroclastic_flow: [
["nezha1_aug_dur", "Trail duration"],
],
blazing_chakram: [
["nezha2_str1", "Damage"],
["nezha2_str2", "Boosted damage"],
["nezha2_str3", "Damage multiplier"],
["nezha2_dur", "Duration"],
["nezha2_eff", "Energy"]
],
reaping_chakram: "N/A",
warding_halo: [
["nezha3_str1", "Base health"],
["nezha3_str2", "Damage"],
["nezha3_str3", "Absorption multiplier"],
["nezha3_rng", "Range"],
["nezha3_eff", "Energy"]
],
safeguard: "N/A",
divine_spears: [
["nezha4_str", "Impale/slam damage"],
["nezha4_dur", "Duration"],
["nezha4_rng", "Range"],
["nezha4_eff", "Energy"]
],
};
var NidusMap = {
"": "",
virulence: [
["nidus1_str", "Damage"],
["nidus1_rng", "Range"],
["nidus1_eff", "Energy"]
],
teeming_virulence: [
["nidus1_aug_str", "Critical chance bonus"],
["nidus1_aug_dur", "Duration"]
],
larva: [
["nidus2_dur", "Duration"],
["nidus2_rng", "Range"],
["nidus2_eff", "Energy"]
],
larva_burst: [
["nidus2_aug_str", "Damage"],
["nidus2_aug_rng", "Range"],
],
parasitic_link: [
["nidus3_str1", "Ability Strength multiplier"],
["nidus3_str2", "Damage redirection"],
["nidus3_dur", "Duration"],
["nidus3_rng1", "Ally link"],
["nidus3_rng2", "Enemy link"],
],
ravenous: [
["nidus4_str1", "Explosion damage"],
["nidus4_str2", "Health regen"],
["nidus4_dur", "Duration"],
["nidus4_rng", "Explosion radius"],
],
insatiable: "N/A",
};
var NovaMap = {
null_star: [
["nova1_str", "Damage"],
["nova1_dur1", "Particles"],
["nova1_dur2", "Maximum damage reduction"],
["nova1_rng", "Range"],
["nova1_eff", "Energy"]
],
neutron_star: [
["nova1_aug_str1", "Damage per particle"],
["nova1_aug_str2", "Maximum damage"],
["nova1_aug_rng", "explosion range"],
],
antimatter_drop: [
["nova2_str1", "Base damage"],
["nova2_str2", "Contact damage"],
["nova2_eff", "Energy"]
],
antimatter_absorb: [
["nova2_aug_rng", "Absorb radius"],
],
worm_hole: [
["nova3_dur", "Duration"],
["nova3_eff", "Energy"]
],
escape_velocity: [
["nova3_aug_dur", "Duration"],
],
molecular_prime: [
["nova4_str1", "Damage"],
["nova4_str2", "Movement speed reduction"],
["nova4_dur1", "Wave duration"],
["nova4_dur2", "Maximum range"],
["nova4_dur3", "Prime duration"],
["nova4_rng", "Explosion radius"],
["nova4_eff", "Energy"],
],
molecular_fission: "N/A",
};
var NyxMap = {
mind_control: [
["nyx1_dur", "Duration"],
["nyx1_rng", "Range"],
["nyx1_eff", "Energy"],
],
mind_freak: [
["nyx1_aug_str", "Damage bonus"]
],
psychic_bolts: [
["nyx2_str", "Debuff"],
["nyx2_dur", "Duration"],
["nyx2_eff", "Energy"],
],
pacifying_bolts: [
["nyx2_aug_dur", "Duration"]
],
chaos: [
["nyx3_dur", "Duration"],
["nyx3_rng", "Range"],
["nyx3_eff", "Energy"],
],
chaos_sphere: "N/A",
absorb: [
["nyx4_str1", "Passive damage gain"],
["nyx4_str2", "Minimum damage"],
["nyx4_str3", "Damage conversion"],
["nyx4_rng", "Range"],
["nyx4_eff1", "Energy"],
["nyx4_eff2", "Energy per 1000 damage"],
["nyx4_cha", "Energy drain"],
],
assimilate: "N/A",
};
var OberonMap = {
smite: [
["oberon1_str1", "Initial damage"],
["oberon1_str2", "Orb base damage"],
["oberon1_str3", "Number of orbs"],
["oberon1_dur", "Duration"],
["oberon1_rng1", "Cast range"],
["oberon1_rng2", "Orb range"],
["oberon1_eff", "Energy"]
],
smite_infusion: [
["oberon1_aug_str", "Damage bonus"],
["oberon1_aug_dur", "Duration"],
["oberon1_aug_rng", "Range"]
],
hallowed_ground: [
["oberon2_str1", "Damage"],
["oberon2_str2", "Status chance"],
["oberon2_dur", "Duration"],
["oberon2_rng1", "Angle"],
["oberon2_rng2", "Radius"],
["oberon2_eff", "Energy"]
],
hallowed_eruption: [
["oberon2_aug_dur", "Duration"],
["oberon2_aug_str", "Maximum damage"]
],
renewal: [
["oberon3_str1", "Wave duration"],
["oberon3_str2", "Armor buff"],
["oberon3_str3", "Initial heal"],
["oberon3_str4", "Health regen"],
["oberon3_dur1", "Bleedout slow"],
["oberon3_dur2", "Duration"],
["oberon3_rng", "Range"],
["oberon3_eff", "Energy"],
["oberon3_cha", "Energy drain"]
],
phoenix_renewal: [
["oberon3_aug_str", "Health restored"]
],
reckoning: [
["oberon4_str1", "Armor reduction"],
["oberon4_str2", "Damage"],
["oberon4_str3", "Extra damage"],
["oberon4_dur", "Duration"],
["oberon4_rng1", "Blind range"],
["oberon4_rng2", "Cast range"],
["oberon4_eff", "Energy"]
],
hallowed_reckoning: [
["oberon4_aug_str1", "Damage"],
["oberon4_aug_str2", "Armor bonus"],
["oberon4_aug_dur", "Duration"]
],
};
var OctaviaMap = {
"": "",
mallet: [
["octavia1_str", "Damage multiplier"],
["octavia1_dur", "Duration"],
["octavia1_rng", "Range"],
["octavia1_eff", "Energy"],
],
partitioned_mallet: "N/A",
resonator: [
["octavia2_str", "Damage"],
["octavia2_dur", "Duration"],
["octavia2_rng", "Charm radius"],
["octavia2_eff", "Energy"],
],
conductor: "N/A",
metronome: [
["octavia3_str1", "Armor bonus"],
["octavia3_str2", "Speed/multishot/melee damage bonus"],
["octavia3_dur1", "Ability duration"],
["octavia3_dur2", "Buff duration"],
["octavia3_rng", "Range"],
["octavia3_eff", "Energy"],
],
amp: [
["octavia4_str", "Damage multiplier"],
["octavia4_dur", "Duration"],
["octavia4_rng", "Range"],
["octavia4_eff", "Energy"],
],
};
var RevenantMap = {
"": "",
enthrall: [
["revenant1_str", "Damage"],
["revenant1_dur1", "Thrall duration"],
["revenant1_dur2", "Pillar duration"],
["revenant1_rng1", "Cast range"],
["revenant1_rng2", "Effect range"],
//["revenant1_rng3", "Projectile range"],
["revenant1_eff", "Energy"],
],
mesmer_skin: [
["revenant2_str", "Charges"],
["revenant2_dur", "stun duration"],
["revenant2_eff", "Energy"],
],
reave: [
["revenant3_str1", "Hitpoints drain/restore"],
["revenant3_str2", "Thrall hitpoints drain/restore"],
["revenant3_dur", "Duration"],
["revenant3_rng", "Width"],
["revenant3_eff", "Energy"],
],
blinding_reave: [
["revenant3_aug_dur", "Duration"],
],
danse_macabre: [
["revenant4_str", "Damage"],
["revenant4_rng", "Beam radius"],
["revenant4_eff", "Energy"],
["revenant4_cha", "Energy drain"],
],
};
var RhinoMap = {
rhino_charge: [
["rhino1_str", "Damage"],
["rhino1_dur", "Combo Window"],
["rhino1_rng1", "Charge radius"],
["rhino1_rng2", "Impact radius"],
["rhino1_eff", "Energy"]
],
ironclad_charge: [
["rhino1_aug_str", "Armor bonus"],
["rhino1_aug_dur", "Duration"]
],
iron_skin: [
["rhino2_str", "Base health"],
["rhino2_eff", "Energy"]
],
iron_shrapnel: [
["rhino2_aug_rng", "Range"]
],
roar: [
["rhino3_str", "Bonus damage"],
["rhino3_rng", "Range"],
["rhino3_eff", "Energy"],
],
piercing_roar: [
["rhino3_aug_str", "Damage"],
["rhino3_aug_dur", "Duration"],
["rhino3_aug_rng", "Range"]
],
rhino_stomp: [
["rhino4_str", "Damage"],
["rhino4_dur", "Duration"],
["rhino4_rng", "Range"],
["rhino4_eff", "Energy"]
],
reinforcing_stomp: [
["rhino4_aug_str", "Iron Skin restoration"]
]
};
var SarynMap = {
"": "",
spores: [
["saryn1_str1", "Damage"],
["saryn1_str2", "Damage growth per enemy"],
["saryn1_str3", "Status chance"],
["saryn1_str4", "Reset decay"],
["saryn1_dur", "Damage decay rate"],
["saryn1_rng1", "Cast range"],
["saryn1_rng2", "Spread range"],
["saryn1_eff", "Energy"],
],
venom_dose: [
["saryn1_aug_str", "Damage bonus"],
["saryn1_aug_dur", "Duration"],
["saryn1_aug_rng", "Range"]
],
molt: [
["saryn2_str1", "Health"],
["saryn2_str2", "Explosion damage"],
["saryn2_str3", "Speed multiplier"],
["saryn2_dur1", "Decoy duration"],
["saryn2_dur2", "Speed duration"],
["saryn2_rng", "Range"],
["saryn2_eff", "Energy"],
],
regenerative_molt: [
["saryn2_aug_str", "Health regen"],
],
toxic_lash: [
["saryn3_str1", "Bonus gun damage"],
["saryn3_str2", "Bonus melee damage"],
["saryn3_str3", "Damage block"],
["saryn3_dur", "Duration"],
["saryn3_eff", "Energy"],
],
contagion_cloud: [
["saryn3_aug_str", "Damage"],
["saryn3_aug_dur", "Duration"],
["saryn3_aug_rng", "Range"],
],
miasma: [
["saryn4_str", "Damage"],
["saryn4_dur", "Duration"],
["saryn4_rng", "Range"],
["saryn4_eff", "Energy"],
],
};
var TitaniaMap = {
"": "",
spellbind: [
["titania1_dur", "Duration"],
["titania1_rng1", "Ability range"],
["titania1_rng2", "Cast range"],
["titania1_eff", "Energy"]
],
tribute: [
["titania2_str", "Damage"],
["titania2_dur", "Duration"],
["titania2_rng", "Range"],
["titania2_eff", "Energy"]
],
lantern: [
["titania3_str1", "Damage"],
["titania3_str2", "Explosion damage"],
["titania3_dur", "Duration"],
["titania3_rng1", "Cast range"],
["titania3_rng2", "Attract range"],
["titania3_rng3", "Blast range"],
["titania3_rng4", "DoT range"],
["titania3_eff", "Energy"]
],
beguiling_lantern: [
["titania3_aug_str", "Bonus melee damage"]
],
razorwing: [
["titania4_str1", "Gun damage"],
["titania4_str2", "Melee damage"],
["titania4_str3", "Drone damage"],
["titania4_eff", "Energy"],
["titania4_cha", "Energy drain"]
],
razorwing_blitz: [
["titania4_aug_str", "Flight speed/fire rate increase"],
["titania4_aug_dur", "Duration"]
],
};
var TrinityMap = {
"": "",
well_of_life: [
["trinity1_str1", "Lifesteal"],
["trinity1_str2", "Max health"],
["trinity1_dur", "Duration"],
["trinity1_rng", "Range"],
["trinity1_eff", "Energy"]
],
pool_of_life: [
["trinity1_aug_str", "Energy orb chance"]
],
energy_vampire: [
["trinity2_str1", "Restored energy"],
["trinity2_str2", "Damage"],
["trinity2_dur", "Duration"],
["trinity2_rng1", "Cast range"],
["trinity2_rng2", "Pulse range"],
["trinity2_eff", "Energy"]
],
vampire_leech: "N/A",
link: [
["trinity3_dur", "Duration"],
["trinity3_rng", "Range"],
["trinity3_eff", "Energy"]
],
abating_link: [
["trinity3_aug_str", "Armor reduction"]
],
blessing: [
["trinity4_str1", "Shields/health restored"],
["trinity4_str2", "Damage reduction"],
["trinity4_dur", "Duration"],
["trinity4_eff", "Energy"]
],
};
var ValkyrMap = {
rip_line: [
["valkyr1_str", "Damage"],
["valkyr1_dur", "Duration"],
["valkyr1_rng", "Range"],
["valkyr1_eff", "Energy"]
],
swing_line: "N/A",
warcry: [
["valkyr2_str1", "Attack speed/Armor buff"],
["valkyr2_str2", "Movement speed reduction"],
["valkyr2_dur", "Duration"],
["valkyr2_rng", "Range"],
["valkyr2_eff", "Energy"]
],
eternal_war: [
["valkyr2_aug_dur", "Duration per kill"]
],
paralysis: [
["valkyr3_str1", "Damage multiplier"],
["valkyr3_str2", "knockback strength"],
["valkyr3_rng", "Range"],
["valkyr3_eff", "Energy"]
],
prolonged_paralysis: [
["valkyr3_aug_str", "Stun duration"]
],
hysteria: [
["valkyr4_str", "Damage"],
["valkyr4_eff", "Energy"],
["valkyr4_cha", "Energy drain"]
],
hysterical_assault: [
["valkyr4_aug_rng", "Range"]
],
};
var VoltMap = {
shock: [
["volt1_str", "Damage"],
["volt1_rng", "Chain range"],
["volt1_eff", "Energy"]
],
shock_trooper: [
["volt1_aug_str", "Damage bonus"],
["volt1_aug_dur", "Duration"],
["volt1_aug_rng", "Range"]
],
speed: [
["volt2_str1", "Attack/movement Speed buff"],
["volt2_str2", "Reload speed buff"],
["volt2_dur", "Duration"],
["volt2_rng", "Range"],
["volt2_eff", "Energy"]
],
shocking_speed: [
["volt2_aug_str", "Damage"]
],
electric_shield: [
["volt3_dur", "Duration"],
["volt3_eff1", "Energy"],
["volt3_eff2", "Meters per energy"]
],
transistor_shield: [
["volt3_aug_str", "Damage conversion"]
],
discharge: [
["volt4_str", "Damage"],
["volt4_dur", "Duration"],
["volt4_rng1", "Ability range"],
["volt4_rng2", "Tesla range"],
["volt4_eff", "Energy"]
],
capacitance: "N/A",
};
var WispMap = {
"": "",
reservoirs: [
["wisp1_str1", "Max health"],
["wisp1_str2", "Health regen"],
["wisp1_str3", "Bonus movement speed"],
["wisp1_str4", "Bonus attack speed"],
["wisp1_str5", "Shock damage"],
["wisp1_rng1", "Reservoir range"],
["wisp1_rng2", "Shock range"],
["wisp1_dur", "Mote lifespan"],
["wisp1_eff", "Energy"]
],
wil_o_wisp: [
["wisp2_dur", "Duration"],
["wisp2_eff", "Energy"]
],
breach_surge: [
["wisp3_str1", "Damage multiplier"],
["wisp3_str2", "Status chance"],
["wisp3_dur", "Blind duration"],
["wisp3_rng", "Range"],
["wisp3_eff", "Energy"],
],
sol_gate: [
["wisp4_str", "Damage"],
["wisp4_rng", "Beam length"],
["wisp4_eff", "Energy"],
["wisp4_cha", "Energy drain"],
]
};
var WukongMap = {
"": "",
celestial_twin: [
["wukong1_str", "Health multiplier"],
["wukong1_eff", "Energy"]
],
celestial_stomp: [
["wukong1_aug_rng", "Range"],
["wukong1_aug_eff", "Energy"]
],
cloud_walker: [
["wukong2_str", "Health regen"],
["wukong2_dur", "Duration"],
["wukong2_rng", "Range"],
["wukong2_eff", "Energy"]
],
enveloping_cloud: [
["wukong2_aug_dur", "Duration"],
["wukong2_aug_rng", "Range"]
],
defy: [
["wukong3_str1", "Damage multiplier"],
["wukong3_str2", "Armor multiplier"],
["wukong3_dur1", "Invulnerability duration"],
["wukong3_dur2", "Armor duration"],
["wukong3_rng", "Range"],
["wukong3_eff", "Energy"]
],
primal_fury: [
["wukong4_str", "Damage"],
["wukong4_eff", "Energy"],
["wukong4_cha", "Energy drain"]
],
primal_rage: [
["wukong4_aug_str", "Critical chance per kill"],
["wukong4_aug_dur", "Decay"],
],
};
var ZephyrMap = {
"": "",
tail_wind: [
["zephyr1_str", "Damage"],
["zephyr1_dur1", "Speed"],
["zephyr1_dur2", "Hover height"],
["zephyr1_rng1", "Contact range"],
["zephyr1_rng2", "Explosion range"],
["zephyr1_eff", "Energy"]
],
target_fixation: "N/A",
airburst: [
["zephyr2_str", "Contact/explosion damage"],
["zephyr2_rng", "Range"],
["zephyr2_eff", "Energy"]
],
turbulence: [
["zephyr3_dur", "Duration"],
["zephyr3_rng", "Range"],
["zephyr3_eff", "Energy"]
],
jet_stream: [
["zephyr3_aug_str1", "Movement speed bonus"],
["zephyr3_aug_str2", "Projectile speed bonus"]
],
tornado: [
["zephyr4_str", "Damage"],
["zephyr4_dur", "Duration"],
["zephyr4_rng", "Spawn range"],
["zephyr4_eff", "Energy"]
],
funnel_clouds: "N/A",
};
// with every updade, gives a value to every stat
function update_table() {
var STR = reasonableInput('#in_STR') / 100;
var RNG = reasonableInput('#in_RNG') / 100;
var base_EFF = 2 - reasonableInput('#in_EFF') / 100;
var EFF = Math.max(base_EFF, 0.25);
var DUR = reasonableInput('#in_DUR') / 100;
var CHA = Math.max(base_EFF / DUR, 0.25);
var xARMOR = reasonableInput('#in_xARMOR') / 100;
var aARMOR = reasonableInput('#in_aARMOR');
var HEALTH = reasonableInput('#in_HEALTH') / 100;
var SHIELDS = reasonableInput('#in_SHIELDS') / 100;
var TARGET = reasonableInput('#in_TARGET');
var COMBO = comboCheck(parseInt($('#in_COMBO').val()));
var STACK = Math.min(Math.max(reasonableInput('#in_STACK'), 0), 100);
var IRONCLAD_CHARGE = (STR * 50 * TARGET) / 100;
// limits the input to a [0, 9999] range
function reasonableInput(num) {
var value = parseInt($(num).val());
if (value < 0) {
return 0;
} else if (value > 9999) {
return 9999;
} else {
return value;
}
}
// gives 1, 2, or 4. Used for COMBO
function comboCheck(num) {
if (num <= 1) {
return 1;
} else if (num == 2) {
return 2;
} else {
return 4;
}
}
// Every cell is assigned with a formula
switch ($("#in_OPTION").val()) { // Section dedicated to Warframes that use a drop down input, such as Chroma for his elements
case "heat":
table_loader("chroma2", abilityGenerator(ChromaMap.elemental_ward, "heat"), true);
table_loader("chroma2_aug", augmentGenerator(ChromaMap, "Elemental Ward", "Everlasting Ward", "heat"), true);
table_loader("chroma", warframeGenerator(
ChromaMap,
"Spectral Scream",
"Afterburn",
"Elemental Ward",
"Everlasting Ward",
"Vex Armor",
"Vexing Retaliation",
"Effigy",
"Guided Effigy",
"heat"
), true);
formula_loader(['chroma', 'chroma2_aug', 'chroma2'], [
['str1', (STR * 100).toFixed(0) + "/s"],
['str2', (STR * 200).toFixed(0) + "%"]
], "heat");
break;
case "electric":
table_loader("chroma2", abilityGenerator(ChromaMap.elemental_ward, "electric"), true);
table_loader("chroma2_aug", augmentGenerator(ChromaMap, "Elemental Ward", "Everlasting Ward", "electric"), true);
table_loader("chroma", warframeGenerator(
ChromaMap,
"Spectral Scream",
"Afterburn",
"Elemental Ward",
"Everlasting Ward",
"Vex Armor",
"Vexing Retaliation",
"Effigy",
"Guided Effigy",
"electric"
), true);
formula_loader(['chroma', 'chroma2_aug', 'chroma2'], [
['str1', (STR * 10).toFixed(2) + "x"],
['str2', (STR * 100).toFixed(2) + "%"],
['str3', Math.min((STR * 25), 100).toFixed(2) + "%"],
['str4', (STR * 200).toFixed(0)],
['rng', (RNG * 15).toFixed(2) + "m"]
], "electric");
break;
case "toxin":
table_loader("chroma2", abilityGenerator(ChromaMap.elemental_ward, "toxin"), true);
table_loader("chroma2_aug", augmentGenerator(ChromaMap, "Elemental Ward", "Everlasting Ward", "toxin"), true);
table_loader("chroma", warframeGenerator(
ChromaMap,
"Spectral Scream",
"Afterburn",
"Elemental Ward",
"Everlasting Ward",
"Vex Armor",
"Vexing Retaliation",
"Effigy",
"Guided Effigy",
"toxin"
), true);
formula_loader(['chroma', 'chroma2_aug', 'chroma2'], [
['str', Math.min((STR * 50), 100).toFixed(2) + "%"],
['dur1', (DUR * 35).toFixed(2) + "%"]
], "toxin");
break;
case "cold":
table_loader("chroma2", abilityGenerator(ChromaMap.elemental_ward, "cold"), true);
table_loader("chroma2_aug", augmentGenerator(ChromaMap, "Elemental Ward", "Everlasting Ward", "cold"), true);
table_loader("chroma", warframeGenerator(
ChromaMap,
"Spectral Scream",
"Afterburn",
"Elemental Ward",
"Everlasting Ward",
"Vex Armor",
"Vexing Retaliation",
"Effigy",
"Guided Effigy",
"cold"
), true);
formula_loader(['chroma', 'chroma2_aug', 'chroma2'], [
['str1', (STR * 3).toFixed(2) + "x"],
['str2', (STR * 150).toFixed(2) + "%"],
['str3', Math.min((STR * 25), 100).toFixed(2) + "%"]
], "cold");
break;
case "night":
table_loader("equinox1", abilityGenerator(EquinoxMap.metamorphosis, "night"), true);
table_loader("equinox2", abilityGenerator(EquinoxMap.rest_and_rage, "night"), true);
table_loader("equinox3", abilityGenerator(EquinoxMap.pacify_and_provoke, "night"), true);
table_loader("equinox4", abilityGenerator(EquinoxMap.mend_and_maim, "night"), true);
table_loader("equinox1_aug", augmentGenerator(EquinoxMap, "Metamorphosis", "Duality", "night"), true);
table_loader("equinox2_aug", augmentGenerator(EquinoxMap, "Rest & Rage", "Calm & Frenzy", "night"), true);
table_loader("equinox3_aug", augmentGenerator(EquinoxMap, "Pacify & Provoke", "Peaceful Provocation", "night"), true);
table_loader("equinox", warframeGenerator(
EquinoxMap,
"Metamorphosis",
"Duality",
"Rest & Rage",
"Calm & Frenzy",
"Pacify & Provoke",
"Peaceful Provocation",
"Mend & Maim",
"Energy Transfer",
"night"
), true);
formula_loader(['equinox', 'equinox1_aug', 'equinox1'], [
['str1', (STR * 250).toFixed(0)],
['str2', (STR * 150).toFixed(0)],
], "night");
formula_loader(['equinox', 'equinox3_aug', 'equinox3'], [
['str', Math.min((1 - (0.5 / STR)) * 100 / 2, 100).toFixed(2) + "% - " + Math.min((1 - (0.5 / STR)) * 100, 100).toFixed(2) + "%"],
['eff1', (EFF * 0.5).toFixed(2) + "/s"]
], "night");
formula_loader(['equinox', 'equinox3_aug'], [
['str', Math.min((STR * 40), 80).toFixed(2) + "%"]
], "night");
formula_loader(['equinox', 'equinox4_aug', 'equinox4'], [
['str', (STR * 25).toFixed(0)]
], "night");
break;
case "day":
table_loader("equinox1", abilityGenerator(EquinoxMap.metamorphosis, "day"), true);
table_loader("equinox2", abilityGenerator(EquinoxMap.rest_and_rage, "day"), true);
table_loader("equinox3", abilityGenerator(EquinoxMap.pacify_and_provoke, "day"), true);
table_loader("equinox4", abilityGenerator(EquinoxMap.mend_and_maim, "day"), true);
table_loader("equinox1_aug", augmentGenerator(EquinoxMap, "Metamorphosis", "Duality", "day"), true);
table_loader("equinox2_aug", augmentGenerator(EquinoxMap, "Rest & Rage", "Calm & Frenzy", "day"), true);
table_loader("equinox3_aug", augmentGenerator(EquinoxMap, "Pacify & Provoke", "Peaceful Provocation", "day"), true);
table_loader("equinox", warframeGenerator(
EquinoxMap,
"Metamorphosis",
"Duality",
"Rest & Rage",
"Calm & Frenzy",
"Pacify & Provoke",
"Peaceful Provocation",
"Mend & Maim",
"Energy Transfer",
"day"
), true);
formula_loader(['equinox', 'equinox1_aug', 'equinox1'], [
['str1', (STR * 25).toFixed(2) + "%"],
['str2', (STR * 15).toFixed(2) + "%"],
], "day");
formula_loader(['equinox', 'equinox2_aug', 'equinox2'], [
['str1', (STR * 50).toFixed(2) + "%"],
['str2', (STR * 20).toFixed(2) + "%"],
], "day");
formula_loader(['equinox', 'equinox3_aug', 'equinox3'], [
['str', Math.min(STR * 20, 50).toFixed(2) + "%"],
['eff1', (EFF * 3).toFixed(2) + "/s"]
], "day");
formula_loader(['equinox', 'equinox3_aug'], [
['str', Math.min(STR * 35, 80).toFixed(2) + "%"]
], "day");
formula_loader(['equinox', 'equinox4_aug', 'equinox4'], [
['str', (STR * 150).toFixed(0)]
], "day");
break;
} // switch end
// Ash
formula_loader(['ash', 'ash1_aug', 'ash1'], [
['str1', (STR * 500).toFixed(0)],
['str2', (STR * 500 * 0.4375).toFixed(0) + "/s"],
['str3', (STR * 500 + 10 * (STR * 500 * 0.437)).toFixed(0)],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['ash', 'ash1_aug'], [
['dur', (DUR * 8).toFixed(2) + "s"],
['str', Math.min((STR * 70), 100).toFixed(2) + "%"]
]);
formula_loader(['ash', 'ash2_aug', 'ash2'], [
['dur', (DUR * 8).toFixed(2) + "s"],
['rng', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 35).toFixed(2)]
]);
formula_loader(['ash', 'ash2_aug'], [
['rng', (RNG * 15).toFixed(2) + "m"],
]);
formula_loader(['ash', 'ash3_aug', 'ash3'], [
['rng', (RNG * 60).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['ash', 'ash3_aug'], [
['str', (STR * 2).toFixed(2) + "x"]
]);
formula_loader(['ash', 'ash4_aug', 'ash4'], [
['str1', (STR * 2000).toFixed(0)],
['str2', (STR * 2000 * 0.4375).toFixed(0) + "/s"],
['str3', (STR * 2000 + 10 * (STR * 2000 * 0.437)).toFixed(0)],
['rng', (RNG * 60).toFixed(2) + "m"],
['eff1', (EFF * 12).toFixed(2)],
['eff2', (EFF * 6).toFixed(2)]
]);
formula_loader(['ash', 'ash4_aug'], [
['str', (STR * 4).toFixed(0)]
]);
// Atlas
formula_loader(['atlas', 'atlas1_aug', 'atlas1'], [
['str', (STR * 350 * COMBO).toFixed(0)],
['dur', (DUR).toFixed(2) + "s"],
['rng1', (RNG * 15).toFixed(2) + "m"],
['rng2', (RNG * 2 * Math.min(3, COMBO)).toFixed(2) + "m"],
['eff', (EFF * 25 * (1 / COMBO)).toFixed(2)]
]);
formula_loader(['atlas', 'atlas1_aug'], [
['dur1', (DUR * 7).toFixed(2) + "s"],
['dur2', (DUR * 14).toFixed(2) + "s"]
]);
formula_loader(['atlas', 'atlas2_aug', 'atlas2'], [
['health', (3750 + 5 * (450 * xARMOR * STR + aARMOR)).toFixed(0)],
['str1', (STR * 600).toFixed(0)],
['str2', (STR * 500).toFixed(0)],
['rng', (RNG * 5).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['atlas', 'atlas3_aug', 'atlas3'], [
['dur', (DUR * 20).toFixed(2) + "s"],
['rng', (RNG * 14).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['atlas', 'atlas3_aug'], [
['str', Math.min(STR * 25, 100).toFixed(2) + "%"]
]);
formula_loader(['atlas', 'atlas4_aug', 'atlas4'], [
['dur', (45 * DUR).toFixed(2) + "s"],
['health', (1200 * (4 + HEALTH + SHIELDS + STR)).toFixed(0)],
['armor', (500 * (xARMOR + STR) + aARMOR).toFixed(0)],
['str1', (STR * 2000).toFixed(0)],
['str2', (STR * 500).toFixed(0)],
['str3', (STR * 1250).toFixed(0)],
['rng1', (RNG * 6).toFixed(2) + "m"],
['rng2', RNG.toFixed(2) + "x"],
['eff', (EFF * 100).toFixed(2)]
]);
formula_loader(['atlas', 'atlas4_aug'], [
['health', (1.5 * 1200 * (4 + HEALTH + SHIELDS + STR)).toFixed(0)],
['str1', (STR * 2000 * 1.35).toFixed(0)],
['str2', (STR * 500 * 1.35).toFixed(0)],
['str3', (STR * 1250 * 1.35).toFixed(0)],
['rng', (RNG * 0.65).toFixed(2) + "x"]
]);
// Banshee
formula_loader(['banshee', 'banshee1_aug', 'banshee1'], [
['str', (STR * 50).toFixed(0)],
['rng', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['banshee', 'banshee1_aug'], [
['str', Math.min((STR * 70), 100).toFixed(2) + "%"],
['dur', (DUR * 8).toFixed(2) + "s"]
]);
formula_loader(['banshee', 'banshee2'], [
['dur', (DUR * 30).toFixed(2) + "s"],
['str', (STR * 5).toFixed(2) + "x"],
['rng', (RNG * 35).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['banshee', 'banshee3_aug', 'banshee3'], [
['dur', (DUR * 30).toFixed(2) + "s"],
['rng', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['banshee', 'banshee3_aug'], [
['str', (STR * 3).toFixed(2) + "x"]
]);
formula_loader(['banshee', 'banshee4_aug', 'banshee4'], [
['str', (STR * 200).toFixed(0) + "/s"],
['rng', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)],
['cha', (CHA * 12).toFixed(2) + "/s"]
]);
formula_loader(['banshee', 'banshee4_aug'], [
['str', "~" + (STR * 4000 * 2 / 3).toFixed(0) + " - " + (STR * 4000).toFixed(0)],
['rng', (RNG * 35).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
//Baruuk
formula_loader(['baruuk', 'baruuk1'], [
['rng', Math.min((RNG * 180), 360).toFixed(2) + "°"],
['eff', (EFF * 25).toFixed(2)],
['cha', (CHA * 2.5).toFixed(2) + "/s"]
]);
formula_loader(['baruuk', 'baruuk2'], [
['dur1', (DUR * 5).toFixed(2) + "s"],
['dur2', (DUR * 25).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['baruuk', 'baruuk3'], [
['str1', (STR * 250).toFixed(0)],
['str2', (STR * 8).toFixed(0)],
['str3', Math.min(((STR * 8).toFixed(0) * 10), 90).toFixed(0) + "%"],
['rng1', (RNG * 6).toFixed(2) + "m"],
['rng2', (RNG * 3).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['baruuk', 'baruuk4'], [
['str1', (STR * 250).toFixed(0)],
['str2', Math.min((STR * 25), 40).toFixed(2) + "%"]
]);
//Chroma
formula_loader(['chroma', 'chroma1_aug', 'chroma1'], [
['str', (STR * 200).toFixed(0) + "/s"],
['rng', (Math.cbrt(RNG) * 10).toFixed(2) + "m"],
['eff', (EFF * 10).toFixed(2)],
['cha', (CHA * 3).toFixed(2) + "/s"]
]);
formula_loader(['chroma', 'chroma1_aug'], [
['str', (STR * 100).toFixed(0) + " - " + (STR * 500).toFixed(0)]
]);
formula_loader(['chroma', 'chroma2_aug', 'chroma2'], [
['dur', (DUR * 40).toFixed(2) + "s"],
['rng', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['chroma', 'chroma3_aug', 'chroma3'], [
['str1', (STR * 350).toFixed(2) + "%"],
['str2', (STR * 275).toFixed(2) + "%"],
['dur', (DUR * 25).toFixed(2) + "s"],
['rng', (RNG * 18).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['chroma', 'chroma3_aug'], [
['rng', (RNG * 9).toFixed(2) + "m"]
]);
formula_loader(['chroma', 'chroma4_aug', 'chroma4'], [
['str1', (STR * 2000).toFixed(0) + "/s"],
['str2', (STR * 8000).toFixed(0)],
['eff', (EFF * 10).toFixed(2)],
['cha', (CHA * 10).toFixed(2) + "/s"]
]);
formula_loader(['chroma', 'chroma4_aug'], [
['str', (STR * 2000).toFixed(0) + "/s"]
]);
//Ember
formula_loader(['ember', 'ember1_aug', 'ember1'], [
['str1', (STR * 400).toFixed(0) + " - " + (STR * 800).toFixed(0)],
['str2', (STR * 150).toFixed(0) + " - " + (STR * 300).toFixed(0)],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['ember', 'ember1_aug'], [
['str', (STR * 100).toFixed(0) + "%"],
['dur', (DUR * 40).toFixed(2) + "s"],
['rng', (RNG * 15).toFixed(2) + "m"]
]);
formula_loader(['ember', 'ember2_aug', 'ember2'], [
['str', (STR * 2.5).toFixed(2) + "x"],
['dur', (DUR * 30).toFixed(2) + "s"],
['rng', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['ember', 'ember2_aug'], [
['str', (STR * 0.5).toFixed(2) + "x"]
]);
formula_loader(['ember', 'ember3'], [
['str1', (STR * 200).toFixed(0)],
['str2', (STR * 225).toFixed(0) + "/s"],
['dur', (DUR * 20).toFixed(2) + "s"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['ember', 'ember4'], [
['str1', (STR * 400).toFixed(0) + " - " + (STR * 800).toFixed(0)],
['str2', Math.min((STR * 35), 100).toFixed(2) + "%"],
['rng', (RNG * 15).toFixed(2) + "m - " + (RNG * 7.5).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)],
['cha', (CHA * 3).toFixed(2) + "/s - " + (CHA * 6).toFixed(2) + "/s"],
]);
//Equinox
formula_loader(['equinox', 'equinox1_aug', 'equinox1'], [
['dur', (DUR * 30).toFixed(2) + "s"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['equinox', 'equinox1_aug'], [
['dur', (DUR * 10).toFixed(2) + "s"]
]);
formula_loader(['equinox', 'equinox2_aug', 'equinox2'], [
['dur', (DUR * 22).toFixed(2) + "s"],
['rng1', (RNG * 5).toFixed(2) + "m"],
['rng2', (RNG * 50).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['equinox', 'equinox2_aug'], [
['rng', (RNG * 5).toFixed(2) + "m"]
]);
formula_loader(['equinox', 'equinox3_aug', 'equinox3'], [
['rng', (RNG * 16).toFixed(2) + "m"],
['eff', (EFF * 10).toFixed(2)]
]);
formula_loader(['equinox', 'equinox4_aug', 'equinox4'], [
['rng', (RNG * 18).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)],
['cha', (CHA * 3.5).toFixed(2) + "/s"]
]);
//Excalibur
formula_loader(['excalibur', 'excalibur1_aug', 'excalibur1'], [
['str', (STR * 250).toFixed(0)],
['rng', (RNG * 12).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['excalibur', 'excalibur1_aug'], [
['str', ((STR * 4 + 1) * TARGET).toFixed(0)]
]);
formula_loader(['excalibur', 'excalibur2_aug', 'excalibur2'], [
['dur', (DUR * 15).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['excalibur', 'excalibur2_aug'], [
['str', (STR * 300).toFixed(0) + "%"]
]);
formula_loader(['excalibur', 'excalibur3_aug', 'excalibur3'], [
['str', (STR * 1000).toFixed(0)],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['excalibur', 'excalibur3_aug'], [
['str', (STR * 10 * Math.min(TARGET, 12)).toFixed(2) + "%"],
['dur', (DUR * 16).toFixed(2) + "s"]
]);
formula_loader(['excalibur', 'excalibur4_aug', 'excalibur4'], [
['str', (STR * 250).toFixed(0)],
['dur', (DUR * 6).toFixed(2) + "s"],
['rng', (RNG * 5).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)],
['cha', (EFF * 2.5).toFixed(2) + "/s"]
]);
formula_loader(['excalibur', 'excalibur4_aug'], [
['str', Math.min((10 + 50 * STR), 100).toFixed(2) + "%"]
]);
//Frost
formula_loader(['frost', 'frost1_aug', 'frost1'], [
['str1', (STR * 350).toFixed(0)],
['str2', (STR * 150).toFixed(0)],
['dur1', (DUR * 15).toFixed(2) + "s"],
['dur2', (DUR * 12).toFixed(2) + "s"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['frost', 'frost1_aug'], [
['str', (STR * 100).toFixed(0) + "%"],
['dur', (DUR * 40).toFixed(2) + "s"],
['rng', (RNG * 15).toFixed(2) + "m"]
]);
formula_loader(['frost', 'frost2_aug', 'frost2'], [
['str', (STR * 700).toFixed(0)],
['rng1', Math.min((50 * RNG), 60).toFixed(2) + "°"],
['rng2', (RNG * 3).toFixed(2) + "m"],
['rng3', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['frost', 'frost2_aug'], [
['dur', (DUR * 12).toFixed(2) + "s"]
]);
formula_loader(['frost', 'frost3_aug', 'frost3'], [
['health', ((5000 + 5 * (300 * xARMOR + aARMOR)) * STR).toFixed(0)],
['str', (STR * 150).toFixed(0)],
['rng', (RNG * 5).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['frost', 'frost3_aug'], [
['dur', (DUR * 8).toFixed(2) + "s"]
]);
formula_loader(['frost', 'frost4_aug', 'frost4'], [
['str1', (STR * 1500).toFixed(0)],
['str2', (STR * 400).toFixed(0)],
['str3', Math.min((STR * 40), 100).toFixed(2) + "%"],
['rng1', (RNG * 15).toFixed(2) + "m"],
['rng2', (RNG * 4.5).toFixed(2) + "m"],
['dur', (DUR * 8).toFixed(2) + "s"],
['eff', (EFF * 100).toFixed(2)]
]);
formula_loader(['frost', 'frost4_aug'], [
['str', (STR * 60 * TARGET).toFixed(0)]
]);
//Gara
formula_loader(['gara', 'gara1'], [
['str', (STR * 800).toFixed(0)],
['rng', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['gara', 'gara2_aug', 'gara2'], [
['str1', (STR * 250).toFixed(0)],
['str2', Math.min((STR * 70), 90).toFixed(2) + "%"],
['str3', (STR * 35).toFixed(2) + "%"],
['dur', (DUR * 22).toFixed(2) + "s"],
['rng1', (RNG * 30).toFixed(2) + "m"],
['rng2', (RNG * 2.5).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['gara', 'gara2_aug'], [
['str4', (STR * 3).toFixed(2) + "/s"],
]);
formula_loader(['gara', 'gara3'], [
['str1', (STR * 800).toFixed(0)],
['str2', (STR * 1500).toFixed(0)],
['dur', (DUR * 22).toFixed(2) + "s"],
['rng1', (RNG * 12).toFixed(0)],
['rng2', (RNG * 6).toFixed(0)],
['rng3', (RNG * 4).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['gara', 'gara4'], [
['str1', (STR * 50).toFixed(2) + "%"],
['str2', (STR * 2225).toFixed(0)],
['str3', (STR * 350).toFixed(0)],
['str4', (STR * 800).toFixed(0)],
['dur1', (DUR * 3).toFixed(2) + "s"],
['dur2', (DUR * 16).toFixed(2) + "s"],
['rng1', (RNG * 2).toFixed(2) + "m"],
['rng2', (RNG * 11).toFixed(2) + "m"],
['rng3', (RNG * 8).toFixed(2) + "m"],
['rng4', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)],
['cha', (CHA * 3).toFixed(2) + "/s - " + (CHA * 5).toFixed(2) + "/s"]
]);
//Garuda
formula_loader(['garuda', 'garuda1_aug', 'garuda1'], [
['str', (STR * 200).toFixed(0) + "%"],
['dur', (DUR * 20).toFixed(2) + "s"],
['rng1', (RNG * 30).toFixed(2) + "m"],
['rng2', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)],
['cha', (CHA * 50).toFixed(2) + "/s"]
]);
formula_loader(['garuda', 'garuda1_aug'], [
['dur', (DUR * 5).toFixed(2) + "s"],
]);
formula_loader(['garuda', 'garuda2'], [
['str', (STR * 25).toFixed(0) + "%/s"],
['dur', (DUR * 20).toFixed(2) + "s"],
['rng1', (RNG * 30).toFixed(2) + "m"],
['rng2', (RNG * 8).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)],
]);
formula_loader(['garuda', 'garuda3'], [
['eff', (25 / EFF).toFixed(2) + "%"],
]);
formula_loader(['garuda', 'garuda4'], [
['str1', (STR * 150).toFixed(0)],
['str2', Math.min((STR * 50), 100).toFixed(2) + "%"],
['dur', (DUR * 10).toFixed(2)],
['eff', (EFF * 100).toFixed(2)],
]);
// Gauss
formula_loader(['gauss', 'gauss1'], [
['str', (STR * 800).toFixed(0)],
['rng1', (RNG * 4).toFixed(2) + "m"],
['rng2', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 15).toFixed(2)]
]);
formula_loader(['gauss', 'gauss2'], [
['str', Math.min((STR * 20), 50).toFixed(0) + "% - " + Math.min((STR * 100), 100).toFixed(0) + "%"],
['dur', (DUR * 30).toFixed(2) + "s"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['gauss', 'gauss3'], [
['str1', (STR * 150).toFixed(0) + " - " + (STR * 750).toFixed(0)],
['str2', (STR * 300).toFixed(0) + " - " + (STR * 1500).toFixed(0)],
['dur1', (DUR * 10).toFixed(2) + "s"],
['dur2', (DUR * 8).toFixed(2) + "s"],
['rng', (RNG * 4).toFixed(2) + "m - " + (RNG * 12).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['gauss', 'gauss4'], [
['str', (STR * 400).toFixed(0)],
['dur1', (DUR * 30).toFixed(2) + "s"],
['dur2', (DUR * 15).toFixed(2) + "% - " + (DUR * 75).toFixed(2) + "%"],
['dur3', (DUR * 8).toFixed(2) + "% - " + (DUR * 40).toFixed(2) + "%"],
['dur4', (DUR * 10).toFixed(2) + "% - " + (DUR * 50).toFixed(2) + "%"],
['dur5', (DUR * 20).toFixed(2) + "% - " + (DUR * 100).toFixed(2) + "%"],
['eff', (EFF * 100).toFixed(2)]
]);
// Harrow
formula_loader(['harrow', 'harrow1'], [
['str', (STR * 150 * TARGET).toFixed(0)],
['dur', (DUR * 6).toFixed(2) + "s"],
['rng', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['harrow', 'harrow2'], [
['str1', (STR * 5).toFixed(2) + "%"],
['str2', (STR * 35).toFixed(2) + "%"],
['str3', (STR * 70).toFixed(2) + "%"],
['dur1', (DUR * 6).toFixed(2) + "s"],
['dur2', (DUR * 1.54).toFixed(2) + "s"],
['eff', (EFF * 50).toFixed(2)],
]);
formula_loader(['harrow', 'harrow3_aug', 'harrow3'], [
['str', (5 / EFF * STR).toFixed(2) + "%"],
['dur', (DUR * 35).toFixed(2) + "s"],
['rng', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['harrow', 'harrow3_aug'], [
['str1', Math.min((STR * 40), 90).toFixed(2) + "%"],
['str2', (STR * 0.5).toFixed(2)]
]);
formula_loader(['harrow', 'harrow4_aug', 'harrow4'], [
['str', (STR * 1.5).toFixed(2) + "%"],
['dur1', (DUR * 6).toFixed(2) + "s"],
['dur2', (DUR * 12).toFixed(2) + "s"],
['eff', (EFF * 100).toFixed(2)]
]);
formula_loader(['harrow', 'harrow4_aug'], [
['dur', (DUR * 3).toFixed(2) + "s"]
]);
//Hildryn
formula_loader(['hildryn', 'hildryn1_aug', 'hildryn1'], [
['str', (STR * 500).toFixed(0)],
['rng', (RNG * 3).toFixed(2) + "m"],
['eff1', (EFF * 50).toFixed(2)],
['eff2', (EFF * 100).toFixed(2)]
]);
formula_loader(['hildryn', 'hildryn2_aug', 'hildryn2'], [
['str', Math.min((STR * 25), 100).toFixed(2) + "%"],
['dur', (DUR * 2).toFixed(2) + "s"],
['rng', (RNG * 8).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['hildryn', 'hildryn3_aug', 'hildryn3'], [
['str1', (STR * 500).toFixed(0)],
['str2', (STR * 200).toFixed(0) + "/s"],
['dur', (DUR * 80).toFixed(2) + "%"],
['eff', (EFF * 250).toFixed(2)],
['cha1', (CHA * 5).toFixed(2) + "/s"],
['cha2', (CHA * 25).toFixed(2) + "/s"]
]);
formula_loader(['hildryn', 'hildryn4_aug', 'hildryn4'], [
['str1', (STR * 200).toFixed(0) + "/s"],
['str2', (STR * 500).toFixed(0)],
['rng', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)],
['cha1', (CHA * 25).toFixed(2) + "/s"],
['cha2', (CHA * 25).toFixed(2) + "/s"]
]);
//Hydroid
formula_loader(['hydroid', 'hydroid1'], [
['str', (STR * 150).toFixed(0) + " - " + (STR * 300).toFixed(0)],
['dur', (DUR * 5).toFixed(2) + "s - " + (DUR * 10).toFixed(2) + "s"],
['rng', (RNG * 5).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2) + " - " + (EFF * 50).toFixed(2)]
]);
formula_loader(['hydroid', 'hydroid2_aug', 'hydroid2'], [
['str', (STR * 300).toFixed(0)],
['dur', (DUR * 30).toFixed(2) + "m/s"],
['rng', (RNG * 6).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['hydroid', 'hydroid2_aug'], [
['dur', (DUR * 12).toFixed(2) + "s"],
]);
formula_loader(['hydroid', 'hydroid3_aug', 'hydroid3'], [
['str1', (STR * 25).toFixed(0) + "/s"],
['str2', (STR * 2).toFixed(2) + "%/s"],
['rng1', (Math.sqrt(RNG * 4)).toFixed(2) + "m"],
['rng2', (RNG * 15).toFixed(2) + "m"],
['eff1', (EFF * 15).toFixed(2)],
['eff2', (EFF * 5).toFixed(2)],
['eff3', (0.2 / EFF).toFixed(2) + "m"],
['cha', (CHA * 2).toFixed(2)]
]);
formula_loader(['hydroid', 'hydroid3_aug'], [
['str1', Math.min((STR * 30), 100).toFixed(2) + "%"],
['str2', Math.min((STR * 10), 100).toFixed(2) + "%"],
]);
formula_loader(['hydroid', 'hydroid4'], [
['str1', (STR * 300).toFixed(0)],
['str2', (STR * 200).toFixed(0) + "/s"],
['dur', (DUR * 20).toFixed(2) + "s"],
['rng', (RNG * 5).toFixed(2) + "m - " + (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2) + " - " + (EFF * 100).toFixed(2)]
]);
//Inaros
formula_loader(['inaros', 'inaros1'], [
['str', (STR * 150).toFixed(0) + " + " + (STR * 8).toFixed(0) + "/s"],
['dur', (DUR * 8).toFixed(2) + "s"],
['rng', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['inaros', 'inaros2'], [
['str', (STR * 125).toFixed(0) + "/s - " + (STR * 250).toFixed(0) + "/s"],
['dur', (DUR * 30).toFixed(2) + "s"],
['rng', (RNG * 50).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['inaros', 'inaros3_aug', 'inaros3'], [
['str', (STR * 500).toFixed(0) + "/s"],
['rng', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)],
['cha', (CHA * 10).toFixed(2)]
]);
formula_loader(['inaros', 'inaros3_aug'], [
['str', Math.min((STR * 50), 100).toFixed(0) + "%"]
]);
formula_loader(['inaros', 'inaros4'], [
['str', (STR * 500).toFixed(0) + "/s"],
['dur', (DUR * 15).toFixed(2) + "s"],
['rng1', (RNG * 30).toFixed(2) + "m"],
['rng2', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
//Ivara
formula_loader(['ivara', 'ivara1_aug', 'ivara1'], [
['dur1', (DUR * 12).toFixed(2) + "s"],
['dur2', (DUR * 10).toFixed(2) + "s"],
['rng1', (RNG * 2.5).toFixed(2) + "m"],
['rng2', (RNG * 20).toFixed(2) + "m"],
['rng3', (RNG * 6).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['ivara', 'ivara1_aug'], [
['str1', (STR * 100).toFixed(2) + "%"],
['str2', Math.min((STR * 100), 100).toFixed(2) + "%"],
]);
formula_loader(['ivara', 'ivara2_aug', 'ivara2'], [
['str', (STR * 5).toFixed(2) + "x"],
['dur', (1 / DUR).toFixed(2) + "x/s"],
['eff', (EFF * 25).toFixed(2)],
['cha', (CHA * 3).toFixed(2) + "/s + " + (CHA * 2).toFixed(2) + "/s\xB2"]
]);
formula_loader(['ivara', 'ivara2_aug'], [
['str1', (STR * 10).toFixed(2) + "%"],
['str2', (STR * 50).toFixed(2) + "%"],
]);
formula_loader(['ivara', 'ivara3_aug', 'ivara3'], [
['str1', (STR * 40).toFixed(2) + "%"],
['str2', Math.min((STR * 100), 100).toFixed(2) + "%"],
['dur', (2.5/DUR).toFixed(2) + "s"],
['rng', (RNG * 4).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)],
['cha', (CHA * 1).toFixed(2) + "/s - " + (CHA * 3).toFixed(2) + "/s"]
]);
formula_loader(['ivara', 'ivara3_aug'], [
['str', (STR * 25).toFixed(2) + "%"],
]);
formula_loader(['ivara', 'ivara4_aug', 'ivara4'], [
['str', (STR * 160).toFixed(0)],
['eff1', (EFF * 50).toFixed(2)],
['eff2', (EFF * 15).toFixed(2)]
]);
formula_loader(['ivara', 'ivara4_aug'], [
['rng', (RNG * 7).toFixed(2) + "m"]
]);
//Khora
formula_loader(['khora', 'khora1_aug', 'khora1'], [
['str', (STR * 300).toFixed(0)],
['rng1', (RNG * 10).toFixed(2) + "m"],
['rng2', (RNG * 5).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['khora', 'khora1_aug'], [
['str', ((STR + 3.5) * 300).toFixed(0)]
]);
formula_loader(['khora', 'khora2'], [
['dur1', (DUR * 15).toFixed(2) + "s"],
['dur2', (0.5 / DUR).toFixed(2) + "s"],
['rng1', (RNG * 30).toFixed(2) + "m"],
['rng2', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['khora', 'khora3'], [
['str1', (1 + STR * 0.15).toFixed(2) + "%"],
['str2', (STR * 350).toFixed(2)],
['str3', (STR * 50).toFixed(2) + "/s"],
['eff1', (EFF * 25).toFixed(2)],
['eff2', "≤" + (EFF * 50).toFixed(2)]
]);
formula_loader(['khora', 'khora4'], [
['str', (STR * 250).toFixed(0) + "/s"],
['dur', (DUR * 20).toFixed(2) + "s"],
['rng1', (RNG * 5).toFixed(2) + "m"],
['rng2', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
//Limbo
formula_loader(['limbo', 'limbo1_aug', 'limbo1'], [
['str', (STR * 250).toFixed(0)],
['dur', (DUR * 25).toFixed(2) + "s"],
['rng', (RNG * 35).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['limbo', 'limbo1_aug'], [
['str', Math.min((STR * 25), 100).toFixed(2) + "%"]
]);
formula_loader(['limbo', 'limbo2'], [
['dur', (DUR * 15).toFixed(2) + "s"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['limbo', 'limbo3_aug', 'limbo3'], [
['dur1', (DUR * 25).toFixed(2) + "s"],
['dur2', (DUR * 18).toFixed(2) + "s"],
['rng1', (RNG * 25).toFixed(2) + "m"],
['rng2', (RNG * 5).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['limbo', 'limbo3_aug'], [
['str', (STR * 30 * TARGET).toFixed(2) + "%"]
]);
formula_loader(['limbo', 'limbo4'], [
['str', (STR * 500).toFixed(0)],
['dur', (DUR * 30).toFixed(2) + "s"],
['rng1', (RNG * 16).toFixed(2) + "m"],
['rng2', (RNG * 5).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
//Loki
formula_loader(['loki', 'loki1'], [
['dur', (DUR * 25).toFixed(2) + "s"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['loki', 'loki2'], [
['dur', (DUR * 12).toFixed(2) + "s"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['loki', 'loki3_aug', 'loki3'], [
['rng', (RNG * 75).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['loki', 'loki3_aug'], [
['dur', (DUR * 6).toFixed(2) + "s"]
]);
formula_loader(['loki', 'loki4'], [
['str', (STR * 500).toFixed(0)],
['rng', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
//Mag
formula_loader(['mag', 'mag1'], [
['str1', (STR * 300).toFixed(0)],
['str2', Math.min(STR * 25, 100).toFixed(0) + "%"],
['rng', (RNG * 25).toFixed(2) + "s"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['mag', 'mag2_aug', 'mag2'], [
['str1', (STR * 2).toFixed(2) + "%"],
['str2', (STR * 300).toFixed(0)],
['dur', (DUR * 15).toFixed(2) + "s"],
['rng1', (RNG * 4).toFixed(2) + "m"],
['rng2', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['mag', 'mag2_aug'], [
['str', Math.min(STR * 50, 100).toFixed(2) + "%"]
]);
formula_loader(['mag', 'mag3_aug', 'mag3'], [
['str1', (STR * 400).toFixed(0)],
['str2', (STR * 2.5).toFixed(2) + "x"],
['dur', (DUR * 5).toFixed(2) + "s"],
['rng1', (RNG * 8).toFixed(2) + "m"],
['rng2', (RNG * 8 + DUR * 5 * 5.9).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['mag', 'mag3_aug'], [
['dur', (DUR * 4).toFixed(2) + "s"]
]);
formula_loader(['mag', 'mag4_aug', 'mag4'], [
['str1', (STR * 1500).toFixed(0)],
['str2', (STR * 25 * TARGET).toFixed(2)],
['rng', (RNG * 18).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
formula_loader(['mag', 'mag4_aug'], [
['str', Math.min(STR * 50, 100).toFixed(2) + "%"],
['dur', (RNG * 7).toFixed(2) + "s"]
]);
//Mesa
formula_loader(['mesa', 'mesa1'], [
['str1', (STR * 30).toFixed(2) + "%"],
['str2', (STR * 140).toFixed(0)],
['str3', (STR * 1600).toFixed(0)],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['mesa', 'mesa2_aug', 'mesa2'], [
['str', (STR * 25).toFixed(2) + "%"],
['dur', (DUR * 30).toFixed(2) + "s"],
['rng', (RNG * 16).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['mesa', 'mesa2_aug'], [
['rng', (RNG * 8).toFixed(2) + "m"],
['dur', (DUR * 7).toFixed(2) + "s"]
]);
formula_loader(['mesa', 'mesa3'], [
['str', Math.min(STR * 80, 95).toFixed(2) + "%"],
['dur', (DUR * 25).toFixed(2) + "s"],
['rng', (RNG * 11).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['mesa', 'mesa4'], [
['str', (STR * 150).toFixed(2) + "%"],
['eff', (EFF * 25).toFixed(2)],
['cha', (CHA * 15).toFixed(2) + "/s"]
]);
//Mirage
formula_loader(['mirage', 'mirage1'], [
['str', (STR * 20).toFixed(2) + "%"],
['dur', (DUR * 25).toFixed(2) + "s"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['mirage', 'mirage2_aug', 'mirage2'], [
['str', (STR * 200).toFixed(0)],
['dur1', (DUR * 18).toFixed(2) + "s"],
['dur2', (DUR * 5).toFixed(2) + "s"],
['rng1', (RNG * 40).toFixed(2) + "m"],
['rng2', (RNG * 12).toFixed(2) + "m"],
['rng3', (RNG * 8).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['mirage', 'mirage2_aug'], [
['str', (STR * 500).toFixed(0)],
]);
formula_loader(['mirage', 'mirage3_aug', 'mirage3'], [
['str1', (STR * 200).toFixed(2) + "%"],
['str2', Math.min(STR * 75, 95).toFixed(2) + "%"],
['dur', (DUR * 25).toFixed(2) + "s"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['mirage', 'mirage3_aug'], [
['rng', (RNG * 15).toFixed(2) + "m"]
]);
formula_loader(['mirage', 'mirage4'], [
['str1', (STR * 250).toFixed(0)],
['str2', (STR * 500).toFixed(0)],
['dur1', (DUR * 12).toFixed(2) + "s"],
['dur2', (DUR * 15).toFixed(2) + "s"],
['rng1', (RNG * 30).toFixed(2) + "m"],
['rng2', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)],
['cha', (CHA * 10).toFixed(2) + "/s"]
]);
//Nekros
formula_loader(['nekros', 'nekros1_aug', 'nekros1'], [
['str', (STR * 500).toFixed(0)],
['rng', (RNG * 50).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['nekros', 'nekros1_aug'], [
['str', Math.min(STR * 30, 100).toFixed(2) + "%"]
]);
formula_loader(['nekros', 'nekros2_aug', 'nekros2'], [
['str1', (STR * 20).toFixed(0)],
['str2', Math.min(STR * 20, 100).toFixed(2) + "%"],
['dur', (DUR * 25).toFixed(2) + "s"],
['rng', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['nekros', 'nekros2_aug'], [
['str', Math.min(STR * 60, 80).toFixed(2) + "%"]
]);
formula_loader(['nekros', 'nekros3_aug', 'nekros3'], [
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 10).toFixed(2)]
]);
formula_loader(['nekros', 'nekros3_aug'], [
['eff', (EFF * 10).toFixed(2)]
]);
formula_loader(['nekros', 'nekros4_aug', 'nekros4'], [
['str1', (STR * 150).toFixed(2) + "%"],
['str2', (STR * 100).toFixed(2) + "%"],
['dur', (3 / DUR).toFixed(2) + "%/s"],
['eff', (EFF * 100).toFixed(2)]
]);
formula_loader(['nekros', 'nekros4_aug'], [
['str1', (STR * 6).toFixed(2) + "%"],
['str2', Math.min(STR * 6 * 7, 90).toFixed(2) + "%"],
['rng', (RNG * 50).toFixed(2) + "m"],
]);
//Nezha
formula_loader(['nezha', 'nezha1_aug', 'nezha1'], [
['str1', (STR * 200).toFixed(0) + "/s"],
['str2', (STR * 1250).toFixed(0)],
['dur1', (DUR * 30).toFixed(2) + "s"],
['dur2', (DUR * 10).toFixed(2) + "s"],
['rng', (RNG * 6).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['nezha', 'nezha1_aug'], [
['dur', (DUR * 10).toFixed(2) + "s"],
]);
formula_loader(['nezha', 'nezha2'], [
['str1', (STR * 250).toFixed(0)],
['str2', (STR * 1000).toFixed(0)],
['str3', (STR * 100).toFixed(2) + "%"],
['dur', (DUR * 15).toFixed(2) + "s"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['nezha', 'nezha3'], [
['str1', ((1000 + 2.5 * (175 * (1 + xARMOR) + aARMOR)) * STR).toFixed(0)],
['str2', (STR * 125).toFixed(0) + "/s"],
['str3', (STR * 2.5).toFixed(2) + "%"],
['rng', (RNG * 2).toFixed(2) + "s"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['nezha', 'nezha4'], [
['str', (STR * 600).toFixed(0)],
['dur', (DUR * 12).toFixed(2) + "s"],
['rng', (RNG * 19).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
//Nidus
formula_loader(['nidus', 'nidus1_aug', 'nidus1'], [
['str', (STR * 200 * (1 + STACK)).toFixed(0)],
['rng', (RNG * 16).toFixed(2) + "m"],
['eff', (EFF * 40).toFixed(2)]
]);
formula_loader(['nidus', 'nidus1_aug'], [
['str', (STR * 120).toFixed(0) + "%"],
['dur', (DUR * 15).toFixed(2) + "s"]
]);
formula_loader(['nidus', 'nidus2_aug', 'nidus2'], [
['dur', (DUR * 7).toFixed(2) + "s"],
['rng', (RNG * 12).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['nidus', 'nidus2_aug'], [
['str', (STR * 300).toFixed(0)],
['rng', (RNG * 5).toFixed(2) + "m"]
]);
formula_loader(['nidus', 'nidus3'], [
['str1', "+" + (STR * 25).toFixed(2) + "%"],
['str2', Math.min(STR * 50, 90).toFixed(2) + "%"],
['dur', (DUR * 60).toFixed(2) + "s"],
['rng1', (RNG * 40).toFixed(2) + "m"],
['rng2', (RNG * 20).toFixed(2) + "m"]
]);
formula_loader(['nidus', 'nidus4'], [
['str1', (STR * 150 * Math.max((1 + STACK - 3), 0)).toFixed(2)], //-3 because the ability refers to the value after the cast, which is always 3 less than actual value
['str2', (STR * 20).toFixed(2) + "/s"],
['dur', (DUR * 40).toFixed(2) + "s"],
['rng', (RNG * 4).toFixed(2) + "m"]
]);
//Nova
formula_loader(['nova', 'nova1_aug', 'nova1'], [
['str', (STR * 200).toFixed(0)],
['dur1', (DUR * 6).toFixed(0)],
['dur2', Math.min((Math.round(DUR * 6) * 5), 100).toFixed(0) + "%"],
['rng', (RNG * 12).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['nova', 'nova1_aug'], [
['str1', (STR * 120).toFixed(0)],
['str2', (Math.round(DUR * 6) * STR * 120).toFixed(0)],
['rng', (RNG * 8).toFixed(2) + "m"],
]);
formula_loader(['nova', 'nova2_aug', 'nova2'], [
['str1', (STR * 200).toFixed(0)],
['str2', (STR * 10).toFixed(0)],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['nova', 'nova2_aug'], [
['rng', (RNG * 3).toFixed(2) + "m"],
]);
formula_loader(['nova', 'nova3_aug', 'nova3'], [
['dur', (DUR * 16).toFixed(2) + "s"],
['rng', (RNG * 50).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['nova', 'nova3_aug'], [
['dur', (DUR * 7).toFixed(2) + "s"]
]);
formula_loader(['nova', 'nova4'], [
['str1', (STR * 800).toFixed(0)],
['str2', Math.min((30 + (STR * 100 - 100)), 75).toFixed(2) + "%"],
['dur1', (DUR * 6).toFixed(2) + "s"],
['dur2', (5 + DUR * 6 * 5).toFixed(2) + "m"],
['dur3', (DUR * 30).toFixed(2) + "s"],
['rng', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
//Nyx
formula_loader(['nyx', 'nyx1_aug', 'nyx1'], [
['dur', (DUR * 30).toFixed(2) + "s"],
['rng', (RNG * 60).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['nyx', 'nyx1_aug'], [
['str', (STR * 500).toFixed(2) + "%"]
]);
formula_loader(['nyx', 'nyx2_aug', 'nyx2'], [
['str', Math.min((STR * 80), 100).toFixed(2) + "%"],
['dur', (DUR * 11).toFixed(2) + "s"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['nyx', 'nyx2_aug'], [
['dur', (DUR * 10).toFixed(2) + "s"]
]);
formula_loader(['nyx', 'nyx3'], [
['dur', (DUR * 25).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['nyx', 'nyx4'], [
['str1', (STR * 200).toFixed(0) + "/s"],
['str2', (STR * 1500).toFixed(0)],
['str3', (STR * 0.03).toFixed(2) + "%"],
['dur', (DUR * 8).toFixed(2) + "s"],
['rng', (RNG * 10).toFixed(2) + "m"],
['eff1', (EFF * 25).toFixed(2)],
['eff2', (EFF * 8).toFixed(2)],
['cha', (CHA * 4).toFixed(2) + "/s"],
]);
//Oberon
formula_loader(['oberon', 'oberon1_aug', 'oberon1'], [
['str1', (STR * 500).toFixed(0)],
['str2', (STR * 150).toFixed(0)],
['str3', (STR * 6).toFixed(0)],
['dur', (DUR * 12).toFixed(2) + "s"],
['rng1', (RNG * 50).toFixed(2) + "m"],
['rng2', (RNG * 12.5).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['oberon', 'oberon1_aug'], [
['str', (STR * 100).toFixed(2) + "%"],
['dur', (DUR * 40).toFixed(2) + "s"],
['rng', (RNG * 15).toFixed(2) + "m"]
]);
formula_loader(['oberon', 'oberon2_aug', 'oberon2'], [
['str1', (STR * 100).toFixed(0) + "/s"],
['str2', Math.min((STR * 15), 100).toFixed(2) + "%"],
['dur', (DUR * 20).toFixed(2) + "s"],
['rng1', (Math.min(180 + 135 * (RNG - 1), 360)).toFixed(2) + "°"],
['rng2', (15 + 11.25 * (RNG - 1)).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['oberon', 'oberon2_aug'], [
['dur', (DUR * 40).toFixed(2) + "s"],
['str', (STR * 100 * DUR * 40).toFixed(0)],
]);
formula_loader(['oberon', 'oberon3_aug', 'oberon3'], [
['str1', (4 / STR).toFixed(2) + "s"],
['str2', "+" + (STR * 200).toFixed(0)],
['str3', (STR * 125).toFixed(0)],
['str4', (STR * 40).toFixed(0) + "/s"],
['dur1', (DUR * 45).toFixed(2) + "%"],
['dur2', (DUR * 20).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)],
['cha', (CHA * (2 + 3 * TARGET)).toFixed(2) + "/s"]
]);
formula_loader(['oberon', 'oberon3_aug'], [
['str', Math.min((STR * 50), 100).toFixed(2) + "%"]
]);
formula_loader(['oberon', 'oberon4_aug', 'oberon4'], [
['str1', Math.min((STR * 30), 100).toFixed(2) + "%"],
['str2', (STR * 1250).toFixed(0)],
['str3', (STR * 625).toFixed(0)],
['dur', (DUR * 4).toFixed(2) + "s"],
['rng1', (RNG * 4).toFixed(2) + "m"],
['rng2', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
formula_loader(['oberon', 'oberon4_aug'], [
['str1', (STR * 150).toFixed(0) + "/s"],
['str2', "+" + (STR * 250).toFixed(0)],
['dur', (DUR * 10).toFixed(2) + "s"]
]);
//Octavia
formula_loader(['octavia', 'octavia1'], [
['str', (STR * 2.5).toFixed(2) + "%"],
['dur', (DUR * 20).toFixed(2) + "s"],
['rng', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['octavia', 'octavia2'], [
['str', (STR * 125).toFixed(2)],
['dur', (DUR * 20).toFixed(2) + "s"],
['rng', (RNG * 6).toFixed(2) + "m - " + (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['octavia', 'octavia3'], [
['str1', (STR * 35).toFixed(2) + "%"],
['str2', (STR * 30).toFixed(2) + "%"],
['dur1', (DUR * 20).toFixed(2) + "s"],
['dur2', (DUR * 15).toFixed(2) + "s"],
['rng', (RNG * 12).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['octavia', 'octavia4'], [
['str', (STR * 0.25).toFixed(2) + "x - " + (STR * 2).toFixed(2) + "x"],
['dur', (DUR * 30).toFixed(2) + "s"],
['rng', (RNG * 14).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
//Revenant
formula_loader(['revenant', 'revenant1'], [
['str', (STR * 1000).toFixed(0) + "/s"],
['dur1', (DUR * 30).toFixed(2) + "s"],
['dur2', (DUR * 10).toFixed(2) + "s"],
['rng1', (RNG * 25).toFixed(2) + "m"],
['rng2', (RNG * 2).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['revenant', 'revenant2'], [
['str', (Math.floor(STR * 6))],
['dur', (DUR * 5).toFixed(2) + "s"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['revenant', 'revenant3_aug', 'revenant3'], [
['str1', Math.min((STR * 8), 100).toFixed(0) + "%"],
['str2', Math.min((STR * 40), 100).toFixed(0) + "%"],
['dur', (DUR).toFixed(2) + "s"],
['rng', (RNG * 6).toFixed(2) + "s"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['revenant', 'revenant3_aug'], [
['dur', (DUR * 10).toFixed(2) + "s"]
]);
formula_loader(['revenant', 'revenant4'], [
['str', (STR * 1250).toFixed(0) + "/s - " + (STR * 2500).toFixed(0) + "/s"],
['rng', (RNG * 0.1).toFixed(2) + "m - " + (RNG * 0.2).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)],
['cha', (CHA * 20).toFixed(2) + "/s - " + (CHA * 40).toFixed(2) + "/s"],
]);
//Rhino
formula_loader(['rhino', 'rhino1_aug', 'rhino1'], [
['str', (STR * 650 * COMBO).toFixed(0)],
['dur', (DUR).toFixed(2) + "s"],
['rng1', (RNG * 12 * (1 + 0.25 * Math.min(COMBO - 1, 2))).toFixed(2) + "m"],
['rng2', (RNG * 2).toFixed(2) + "m"],
['eff', (EFF * 25 / COMBO).toFixed(2)]
]);
formula_loader(['rhino', 'rhino1_aug'], [
['str', (STR * 50 * TARGET).toFixed(2) + "%"],
['dur', (DUR * 10).toFixed(2) + "s"]
]);
formula_loader(['rhino', 'rhino2_aug', 'rhino2'], [
['str', ((1200 + (2.5 * ((190 + aARMOR) * (1 + xARMOR)) * (1 + existance(IRONCLAD_CHARGE)))) * STR).toFixed(0)],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['rhino', 'rhino2_aug'], [
['rng', (RNG * 8).toFixed(2) + "m"]
]);
formula_loader(['rhino', 'rhino3_aug', 'rhino3'], [
['str', (STR * 50).toFixed(2) + "%"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['rhino', 'rhino3_aug'], [
['str', (STR * 150).toFixed(0)],
['dur', (DUR * 6).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"]
]);
formula_loader(['rhino', 'rhino4_aug', 'rhino4'], [
['str', (STR * 800).toFixed(0)],
['dur', (DUR * 8).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
formula_loader(['rhino', 'rhino4_aug'], [
['str', (STR * 80 * TARGET).toFixed(0)]
]);
//Saryn
formula_loader(['saryn', 'saryn1_aug', 'saryn1'], [
['str1', (STR * 10).toFixed(0)],
['str2', (STR * 2).toFixed(2)],
['str3', Math.min((STR * 50), 100).toFixed(2) + "%"],
['str4', (20 / STR).toFixed(2) + "%"],
['dur', (10 / DUR).toFixed(2) + "%"],
['rng1', (RNG * 60).toFixed(2) + "m"],
['rng2', (RNG * 16).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['saryn', 'saryn1_aug'], [
['str', (STR * 100).toFixed(2) + "%"],
['dur', (DUR * 40).toFixed(2) + "s"],
['rng', (RNG * 15).toFixed(2) + "m"]
]);
formula_loader(['saryn', 'saryn2_aug', 'saryn2'], [
['str1', (STR * 500).toFixed(0)],
['str2', (STR * 400).toFixed(2)],
['str3', (STR * 1.5).toFixed(2) + "x"],
['dur1', (DUR * 10).toFixed(2) + "s"],
['dur2', (DUR * 5).toFixed(2) + "s"],
['rng', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['saryn', 'saryn2_aug'], [
['str', (STR * 50).toFixed(0) + "/s"],
]);
formula_loader(['saryn', 'saryn3_aug', 'saryn3'], [
['str1', (STR * 30).toFixed(2) + "%"],
['str2', (STR * 60).toFixed(2) + "%"],
['str3', Math.min((STR * 40), 90).toFixed(2) + "%"],
['dur', (DUR * 45).toFixed(2) + "s"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['saryn', 'saryn3_aug'], [
['str', (STR * 300).toFixed(0) + " - " + (STR * 600).toFixed(0)],
['dur', (DUR * 12).toFixed(2) + "s"],
['rng', (RNG * 5).toFixed(2) + "m"],
]);
formula_loader(['saryn', 'saryn4'], [
['str', (STR * 150).toFixed(0) + "/s - " + (STR * 600).toFixed(0) + "/s"],
['dur', (DUR * 6).toFixed(2) + "s"],
['rng', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2) + "m"]
]);
//Titania
formula_loader(['titania', 'titania1'], [
['dur', (DUR * 16).toFixed(2) + "s"],
['rng1', (RNG * 5).toFixed(2) + "m"],
['rng2', (RNG * 50).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['titania', 'titania2'], [
['str', (STR * 500).toFixed(0)],
['dur', (DUR * 12).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['titania', 'titania3_aug', 'titania3'], [
['str1', (STR * 350).toFixed(0) + "/s"],
['str2', (STR * 2500).toFixed(0)],
['dur', (DUR * 25).toFixed(2) + "s"],
['rng1', (RNG * 25).toFixed(2) + "m"],
['rng2', (RNG * 20).toFixed(2) + "m"],
['rng3', (RNG * 8).toFixed(2) + "m"],
['rng4', (RNG * 2.5).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['titania', 'titania3_aug', ], [
['str', (STR * 100).toFixed(2) + "%"]
]);
formula_loader(['titania', 'titania4_aug', 'titania4'], [
['str1', (STR * 160).toFixed(0)],
['str2', (STR * 200).toFixed(0)],
['str3', (STR * 80).toFixed(0)],
['eff', (EFF * 25).toFixed(2)],
['cha', (EFF * 5).toFixed(2) + "/s"]
]);
formula_loader(['titania', 'titania4_aug'], [
['str', (STR * 25).toFixed(0) + "% - " + (STR * 100).toFixed(0) + "%"],
['dur', (DUR * 8).toFixed(2) + "s"]
]);
//Trinity
formula_loader(['trinity', 'trinity1_aug', 'trinity1'], [
['str1', (STR * 45).toFixed(2) + "%"],
['str2', (STR * 400).toFixed(0)],
['dur', (DUR * 12).toFixed(2) + "s"],
['rng', (RNG * 100).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['trinity', 'trinity1_aug'], [
['str', (STR * 25).toFixed(2) + "%"]
]);
formula_loader(['trinity', 'trinity2'], [
['str1', (STR * 25).toFixed(0)],
['str2', (STR * 6.25).toFixed(2) + "%"],
['dur', (DUR * 9).toFixed(2) + "s"],
['rng1', (RNG * 100).toFixed(2) + "m"],
['rng2', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['trinity', 'trinity3_aug', 'trinity3'], [
['dur', (DUR * 12).toFixed(2) + "s"],
['rng', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['trinity', 'trinity3_aug'], [
['str', Math.min((STR * 45), 100).toFixed(2) + "%"]
]);
formula_loader(['trinity', 'trinity4'], [
['str1', Math.min((STR * 80), 100).toFixed(2) + "%"],
['str2', Math.min((STR * 50), 75).toFixed(2) + "%"],
['dur', (DUR * 10).toFixed(2) + "s"],
['eff', (EFF * 100).toFixed(2)]
]);
//Valkyr
formula_loader(['valkyr', 'valkyr1'], [
['str', (STR * 500 * COMBO).toFixed(0)],
['dur', (DUR).toFixed(2) + "s"],
['rng', (RNG * 75).toFixed(2) + "m"],
['eff', (EFF * 25 * (1 / COMBO)).toFixed(2)]
]);
formula_loader(['valkyr', 'valkyr2_aug', 'valkyr2'], [
['str1', (STR * 50).toFixed(2) + "%"],
['str2', Math.min((STR * 30), 75).toFixed(2) + "%"],
['dur', (DUR * 15).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['valkyr', 'valkyr2_aug'], [
['dur', (DUR * 2).toFixed(2) + "s"]
]);
formula_loader(['valkyr', 'valkyr3_aug', 'valkyr3'], [
['str1', (STR * 3.5).toFixed(2) + "x"],
['str2', (STR * 1000).toFixed(0)],
['rng', (RNG * 10).toFixed(2) + "m"],
['eff', (EFF * 5).toFixed(2)]
]);
formula_loader(['valkyr', 'valkyr3_aug'], [
['str', (STR * 200).toFixed(2) + "%"]
]);
formula_loader(['valkyr', 'valkyr4_aug', 'valkyr4'], [
['str', (STR * 250).toFixed(0)],
['eff', (EFF * 25).toFixed(2)],
['cha', (CHA * 2.5).toFixed(2) + "/s - " + (CHA * 15).toFixed(2) + "/s"]
]);
formula_loader(['valkyr', 'valkyr4_aug'], [
['rng', (RNG * 50).toFixed(2) + "m"]
]);
//Volt
formula_loader(['volt', 'volt1_aug', 'volt1'], [
['str', (STR * 200).toFixed(0)],
['rng', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['volt', 'volt1_aug'], [
['str', (STR * 100).toFixed(2) + "%"],
['dur', (DUR * 40).toFixed(2) + "s"],
['rng', (RNG * 15).toFixed(2) + "m"]
]);
formula_loader(['volt', 'volt2_aug', 'volt2'], [
['str1', (STR * 50).toFixed(2) + "%"],
['str2', (STR * 17).toFixed(2) + "%"],
['dur', (DUR * 10).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['volt', 'volt2_aug'], [
['str', (STR * 175).toFixed(0)]
]);
formula_loader(['volt', 'volt3_aug', 'volt3'], [
['dur', (DUR * 25).toFixed(2) + "s"],
['eff1', (EFF * 50).toFixed(2)],
['eff2', (4 / EFF).toFixed(2) + "m"]
]);
formula_loader(['volt', 'volt3_aug'], [
['str', (STR * 300).toFixed(2) + "%"]
]);
formula_loader(['volt', 'volt4'], [
['str', (STR * 1000).toFixed(0)],
['dur', (DUR * 6).toFixed(2) + "s"],
['rng1', (RNG * 20).toFixed(2) + "m"],
['rng2', (RNG * 8).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
//Wisp
formula_loader(['wisp', 'wisp1'], [
['str1', (STR * 300).toFixed(0)],
['str2', (STR * 30).toFixed(2) + "/s"],
['str3', (STR * 20).toFixed(2) + "%"],
['str4', (STR * 30).toFixed(2) + "%"],
['str5', (STR * 5).toFixed(0)],
['rng1', (RNG * 5).toFixed(2) + "m"],
['rng2', (RNG * 15).toFixed(2) + "m"],
['dur', (DUR * 30).toFixed(2) + "s"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['wisp', 'wisp2'], [
['dur', (DUR * 4).toFixed(2) + "s"],
['eff', (EFF * 35).toFixed(2)]
]);
formula_loader(['wisp', 'wisp3'], [
['str1', (STR * 2).toFixed(2) + "x"],
['str2', Math.min((STR * 20), 100).toFixed(2) + "/s"],
['dur', (DUR * 16).toFixed(2) + "s"],
['rng', (RNG * 15).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['wisp', 'wisp4'], [
['str', (STR * 1500).toFixed(0) + "/s"],
['rng', (RNG * 40).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)],
['cha', (EFF * 12).toFixed(2) + "/s"]
]);
//Wukong
formula_loader(['wukong', 'wukong1_aug', 'wukong1'], [
['str', (STR * 2).toFixed(2) + "x"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['wukong', 'wukong1_aug'], [
['rng', (RNG * 20).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['wukong', 'wukong2_aug', 'wukong2'], [
['str', (STR * 1).toFixed(2) + "%/m"],
['dur', (DUR * 2).toFixed(2) + "s"],
['rng', (RNG * 8).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2)]
]);
formula_loader(['wukong', 'wukong2_aug'], [
['rng', (RNG * 4).toFixed(2) + "m"],
['dur', (DUR * 14).toFixed(2) + "s"]
]);
formula_loader(['wukong', 'wukong3'], [
['str1', (STR * 7.5).toFixed(2) + "x"],
['str2', (STR * 1.5).toFixed(2) + "x"],
['dur1', (DUR * 2).toFixed(2) + "s"],
['dur2', (DUR * 25).toFixed(2) + "s"],
['rng', (RNG * 12).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2)]
]);
formula_loader(['wukong', 'wukong4_aug', 'wukong4'], [
['str', (STR * 250).toFixed(0)],
['eff', (EFF * 10).toFixed(2)],
['cha', (CHA * 5).toFixed(2) + "/s"]
]);
formula_loader(['wukong', 'wukong4_aug'], [
['str', (STR * 15).toFixed(2) + "%"],
['dur', (1 / DUR).toFixed(2) + "/s"]
]);
//Zephyr
formula_loader(['zephyr', 'zephyr1'], [
['str', (STR * 500).toFixed(0)],
['dur1', (DUR * 30).toFixed(2) + "s"],
['dur2', "≤" + (DUR * 12.5).toFixed(2) + "m"],
['rng1', (RNG * 2).toFixed(2) + "m"],
['rng2', (RNG * 7).toFixed(2) + "m"],
['eff', (EFF * 25).toFixed(2) + " - " + (EFF * 12.5).toFixed(2)]
]);
formula_loader(['zephyr', 'zephyr2'], [
['str', (STR * 500).toFixed(0)],
['rng', (RNG * 8).toFixed(2) + "m"],
['eff', (EFF * 50).toFixed(2) + " - " + (EFF * 25).toFixed(2)]
]);
formula_loader(['zephyr', 'zephyr3_aug', 'zephyr3'], [
['dur', (DUR * 20).toFixed(2) + "s"],
['rng', (RNG * 6).toFixed(2) + "m"],
['eff', (EFF * 75).toFixed(2)]
]);
formula_loader(['zephyr', 'zephyr3_aug'], [
['str1', (STR * 40).toFixed(2) + "%"],
['str2', (STR * 100).toFixed(2) + "%"]
]);
formula_loader(['zephyr', 'zephyr4'], [
['str', (STR * 120).toFixed(0)],
['dur', (DUR * 20).toFixed(2) + "s"],
['rng', (RNG * 25).toFixed(2) + "m"],
['eff', (EFF * 100).toFixed(2)]
]);
} // function update_table end
// prepares formulas for certain range of IDs and puts them inside output cells
function formula_loader(idCall, meta_array, option) {
var i, j;
if (option) { //required for warframes that have multi-state abiiities (e.g. Elemental Ward)
value_assignment(idCall, meta_array, "");
value_assignment(idCall, meta_array, "_" + option);
} else {
value_assignment(idCall, meta_array, "");
}
function value_assignment(idCall, meta_array, option) {
var idName = "#" + idCall[idCall.length - 1] + option + "_"; //LAST ELEMENT IS RELEVANT!
for (i = 0; i < idCall.length; i++) { //for every possible ID
if ($("#maximization_" + idCall[i]).length) { //If the proper ID is called in the page (e.g. maximization_ash1)
for (j = 0; j < meta_array.length; j++) { //Associate correspondig values
$(idName + meta_array[j][0]).text(meta_array[j][1]);
}
}
}
}
}
// gives a value in case there is none available
function existance(val) {
if (val) {
return val;
} else {
return 0;
}
}
// loaders
// input tables
table_loader("table_main", buildTable);
table_loader("table_armor", buildTable([
['Armor multiplier', 'xARMOR', '0'],
['Additive Armor', 'aARMOR', '0']
]));
table_loader("table_armor_target", buildTable([
['Armor multiplier', 'xARMOR', '0'],
['Additive Armor', 'aARMOR', '0'],
['Number of targets', 'TARGET', '1']
]));
table_loader("table_atlas", buildTable([
['Armor multiplier', 'xARMOR', '0'],
['Additive Armor', 'aARMOR', '0'],
['Health bonus', 'HEALTH', '0'],
['Shields bonus', 'SHIELDS', '0'],
['Combo N°', 'COMBO', '1']
]));
table_loader("table_combo", buildTable([
['Combo N°', 'COMBO', '1']
]));
table_loader("table_nidus", buildTable([
['Stack N°', 'STACK', '0']
]));
table_loader("table_rhino", buildTable([
['Armor multiplier', 'xARMOR', '0'],
['Additive Armor', 'aARMOR', '85'],
['Combo N°', 'COMBO', '1'],
['Number of targets', 'TARGET', '0']
]));
table_loader("table_rumblers", buildTable([
['Armor multiplier', 'xARMOR', '0'],
['Additive Armor', 'aARMOR', '0'],
['Health bonus', 'HEALTH', '0'],
['Shields bonus', 'SHIELDS', '0']
]));
table_loader("table_target", buildTable([
['Number of targets', 'TARGET', '1']
]));
table_loader("table_chroma", buildTable([
['Element', 'OPTION', ['Heat', 'Electric', 'Cold', 'Toxin']]
]));
table_loader("table_equinox", buildTable([
['Form', 'OPTION', ['Night', 'Day']]
]));
// Warframes
// Ash
table_loader("ash1", abilityGenerator(AshMap.shuriken));
table_loader("ash2", abilityGenerator(AshMap.smoke_screen));
table_loader("ash3", abilityGenerator(AshMap.teleport));
table_loader("ash4", abilityGenerator(AshMap.blade_storm));
table_loader("ash1_aug", augmentGenerator(AshMap, "Shuriken", "Seeking Shuriken"));
table_loader("ash3_aug", augmentGenerator(AshMap, "Teleport", "Fatal Teleport"));
table_loader("ash4_aug", augmentGenerator(AshMap, "Blade Storm", "Rising Storm"));
table_loader("ash", warframeGenerator(
AshMap,
"Shuriken",
"Seeking Shuriken",
"Smoke Screen",
"Smoke Shadow",
"Teleport",
"Fatal Teleport",
"Blade Storm",
"Rising Storm"
));
// Atlas
table_loader("atlas1", abilityGenerator(AtlasMap.landslide));
table_loader("atlas2", abilityGenerator(AtlasMap.tectonics));
table_loader("atlas3", abilityGenerator(AtlasMap.petrify));
table_loader("atlas4", abilityGenerator(AtlasMap.rumblers));
table_loader("atlas1_aug", augmentGenerator(AtlasMap, "Landslide", "Path of Statues"));
table_loader("atlas3_aug", augmentGenerator(AtlasMap, "Petrify", "Ore Gaze"));
table_loader("atlas4_aug", augmentGenerator(AtlasMap, "Rumblers", "Titanic Rumbler"));
table_loader("atlas", warframeGenerator(
AtlasMap,
"Landslide",
"Path of Statues",
"Tectonics",
"Tectonic Fracture",
"Petrify",
"Ore Gaze",
"Rumblers",
"Titanic Rumbler"
));
//Banshee
table_loader("banshee1", abilityGenerator(BansheeMap.sonic_boom));
table_loader("banshee2", abilityGenerator(BansheeMap.sonar));
table_loader("banshee3", abilityGenerator(BansheeMap.silence));
table_loader("banshee4", abilityGenerator(BansheeMap.sound_quake));
table_loader("banshee1_aug", augmentGenerator(BansheeMap, "Sonic Boom", "Sonic Fracture"));
table_loader("banshee3_aug", augmentGenerator(BansheeMap, "Silence", "Savage silence"));
table_loader("banshee4_aug", augmentGenerator(BansheeMap, "Sound Quake", "Resonating Quake"));
table_loader("banshee", warframeGenerator(
BansheeMap,
"Sonic Boom",
"Sonic Fracture",
"Sonar",
"Resonance",
"Silence",
"Savage Silence",
"Sound Quake",
"Resonating Quake"
));
//Baruuk
table_loader("baruuk1", abilityGenerator(BaruukMap.elude));
table_loader("baruuk2", abilityGenerator(BaruukMap.lull));
table_loader("baruuk3", abilityGenerator(BaruukMap.desolate_hands));
table_loader("baruuk4", abilityGenerator(BaruukMap.serene_storm));
table_loader("baruuk", warframeGenerator(
BaruukMap,
"Elude",
"",
"Lull",
"",
"Desolate Hands",
"",
"Serene Storm",
""
));
//Chroma
table_loader("chroma1", abilityGenerator(ChromaMap.spectral_scream));
table_loader("chroma3", abilityGenerator(ChromaMap.vex_armor));
table_loader("chroma4", abilityGenerator(ChromaMap.effigy));
table_loader("chroma1_aug", augmentGenerator(ChromaMap, "Spectral Scream", "Afterburn"));
table_loader("chroma3_aug", augmentGenerator(ChromaMap, "Vex Armor", "Vexing Retaliation"));
table_loader("chroma4_aug", augmentGenerator(ChromaMap, "Effigy", "Guided Effigy"));
//Ember
table_loader("ember1", abilityGenerator(EmberMap.fireball));
table_loader("ember2", abilityGenerator(EmberMap.accelerant));
table_loader("ember3", abilityGenerator(EmberMap.fire_blast));
table_loader("ember4", abilityGenerator(EmberMap.world_on_fire));
table_loader("ember1_aug", augmentGenerator(EmberMap, "Fireball", "Fireball Frenzy"));
table_loader("ember2_aug", augmentGenerator(EmberMap, "Accelerant", "Flash Accelerant"));
table_loader("ember", warframeGenerator(
EmberMap,
"Fireball",
"Fireball Frenzy",
"Accelerant",
"Flash Accelerant",
"Fire Blast",
"Fire Fright",
"World On Fire",
"Firequake"
));
//Excalibur
table_loader("excalibur1", abilityGenerator(ExcaliburMap.slash_dash));
table_loader("excalibur2", abilityGenerator(ExcaliburMap.radial_blind));
table_loader("excalibur3", abilityGenerator(ExcaliburMap.radial_javelin));
table_loader("excalibur4", abilityGenerator(ExcaliburMap.exalted_blade));
table_loader("excalibur1_aug", augmentGenerator(ExcaliburMap, "Slash Dash", "Surging Dash"));
table_loader("excalibur2_aug", augmentGenerator(ExcaliburMap, "Radial Blind", "Radial Finish"));
table_loader("excalibur3_aug", augmentGenerator(ExcaliburMap, "Radial Javelin", "Furious Javelin"));
table_loader("excalibur4_aug", augmentGenerator(ExcaliburMap, "Exalted Blade", "Chromatic Blade"));
table_loader("excalibur", warframeGenerator(
ExcaliburMap,
"Slash Dash",
"Surging Dash",
"Radial Blind",
"Radial Finish",
"Radial Javelin",
"Furious Javelin",
"Exalted Blade",
"Chromatic Blade"
));
//Frost
table_loader("frost1", abilityGenerator(FrostMap.freeze));
table_loader("frost2", abilityGenerator(FrostMap.ice_wave));
table_loader("frost3", abilityGenerator(FrostMap.snow_globe));
table_loader("frost4", abilityGenerator(FrostMap.avalanche));
table_loader("frost1_aug", augmentGenerator(FrostMap, "Freeze", "Freeze Force"));
table_loader("frost2_aug", augmentGenerator(FrostMap, "Ice Wave", "Ice Wave Impedance"));
table_loader("frost3_aug", augmentGenerator(FrostMap, "Snow Globe", "Chilling Globe"));
table_loader("frost4_aug", augmentGenerator(FrostMap, "Avalanche", "Icy Avalanche"));
table_loader("frost", warframeGenerator(
FrostMap,
"Freeze",
"Freeze Force",
"Ice Wave",
"Ice Wave Impedance",
"Snow Globe",
"Chilling Globe",
"Avalanche",
"Icy Avalanche"
));
//Gara
table_loader("gara1", abilityGenerator(GaraMap.shattered_lash));
table_loader("gara2", abilityGenerator(GaraMap.splinter_storm));
table_loader("gara3", abilityGenerator(GaraMap.spectrorage));
table_loader("gara4", abilityGenerator(GaraMap.mass_vitrify));
table_loader("gara2_aug", augmentGenerator(GaraMap, "Splinter Storm", "Mending Splinters"));
table_loader("gara", warframeGenerator(
GaraMap,
"Shattered Lash",
"",
"Splinter Storm",
"Mending Splinters",
"Spectrorage",
"Spectrosiphon",
"Mass Vitrify",
""
));
//Garuda
table_loader("garuda1", abilityGenerator(GarudaMap.dread_mirror));
table_loader("garuda2", abilityGenerator(GarudaMap.blood_altar));
table_loader("garuda3", abilityGenerator(GarudaMap.bloodletting));
table_loader("garuda4", abilityGenerator(GarudaMap.seeking_talons));
table_loader("garuda1_aug", augmentGenerator(GarudaMap, "Dread Mirror", "Dread Ward"));
table_loader("garuda", warframeGenerator(
GarudaMap,
"Dread Mirror",
"Dread Ward",
"Blood Altar",
"",
"Bloodletting",
"",
"Seeking Talons",
""
));
//Gauss
table_loader("gauss1", abilityGenerator(GaussMap.mach_rush));
table_loader("gauss2", abilityGenerator(GaussMap.kinetic_plating));
table_loader("gauss3", abilityGenerator(GaussMap.thermal_sunder));
table_loader("gauss4", abilityGenerator(GaussMap.redline));
table_loader("gauss", warframeGenerator(
GaussMap,
"Mach Rush",
"",
"Kinetic Plating",
"",
"Thermal Sunder",
"",
"Redline",
""
));
//Harrow
table_loader("harrow1", abilityGenerator(HarrowMap.condemn));
table_loader("harrow2", abilityGenerator(HarrowMap.penance));
table_loader("harrow3", abilityGenerator(HarrowMap.thurible));
table_loader("harrow4", abilityGenerator(HarrowMap.covenant));
table_loader("harrow3_aug", augmentGenerator(HarrowMap, "Thurible", "Warding Thurible"));
table_loader("harrow4_aug", augmentGenerator(HarrowMap, "Covenant", "Lasting Covenant"));
table_loader("harrow", warframeGenerator(
HarrowMap,
"Condemn",
"",
"Penance",
"",
"Thurible",
"Warding Thurible",
"Covenant",
"Lasting Covenant"
));
//Hildryn
table_loader("hildryn1", abilityGenerator(HildrynMap.balefire));
table_loader("hildryn2", abilityGenerator(HildrynMap.shield_pillage));
table_loader("hildryn3", abilityGenerator(HildrynMap.haven));
table_loader("hildryn4", abilityGenerator(HildrynMap.aegis_storm));
table_loader("hildryn", warframeGenerator(
HildrynMap,
"Balefire",
"",
"Shield Pillage",
"",
"Haven",
"",
"Aegis Storm",
""
));
//Hydroid
table_loader("hydroid1", abilityGenerator(HydroidMap.tempest_barrage));
table_loader("hydroid2", abilityGenerator(HydroidMap.tidal_surge));
table_loader("hydroid3", abilityGenerator(HydroidMap.undertow));
table_loader("hydroid4", abilityGenerator(HydroidMap.tentacle_swarm));
table_loader("hydroid2_aug", augmentGenerator(HydroidMap, "Tidal Surge", "Tidal Impunity"));
table_loader("hydroid3_aug", augmentGenerator(HydroidMap, "Undertow", "Curative Undertow"));
table_loader("hydroid", warframeGenerator(
HydroidMap,
"Tempest Barrage",
"Corroding Barrage",
"Tidal Surge",
"Tidal Impunity",
"Undertow",
"Curative Undertow",
"Tentacle Swarm",
"Pilfering Swarm"
));
//Inaros
table_loader("inaros1", abilityGenerator(InarosMap.desiccation));
table_loader("inaros2", abilityGenerator(InarosMap.devour));
table_loader("inaros3", abilityGenerator(InarosMap.sandstorm));
table_loader("inaros4", abilityGenerator(InarosMap.scarab_swarm));
table_loader("inaros1_aug", augmentGenerator(InarosMap, "Desiccation", "Desiccation's Curse"));
table_loader("inaros3_aug", augmentGenerator(InarosMap, "Sandstorm", "Elemental Sandstorm"));
table_loader("inaros4_aug", augmentGenerator(InarosMap, "Scarab Swarm", "Negation Swarm"));
table_loader("inaros", warframeGenerator(
InarosMap,
"Desiccation",
"Desiccation's Curse",
"Devour",
"",
"Sandstorm",
"Elemental Sandstorm",
"Scarab Swarm",
"Negation Swarm"
));
//Ivara
table_loader("ivara1", abilityGenerator(IvaraMap.quiver));
table_loader("ivara2", abilityGenerator(IvaraMap.navigator));
table_loader("ivara3", abilityGenerator(IvaraMap.prowl));
table_loader("ivara4", abilityGenerator(IvaraMap.artemis_bow));
table_loader("ivara1_aug", augmentGenerator(IvaraMap, "Quiver", "Empowered Quiver"));
table_loader("ivara2_aug", augmentGenerator(IvaraMap, "Navigator", "Piercing Navigator"));
table_loader("ivara3_aug", augmentGenerator(IvaraMap, "Prowl", "Infiltrate"));
table_loader("ivara4_aug", augmentGenerator(IvaraMap, "Artemis Bow", "Concentrated Arrow"));
table_loader("ivara", warframeGenerator(
IvaraMap,
"Quiver",
"Empowered Quiver",
"Navigator",
"Piercing Navigator",
"Prowl",
"Infiltrate",
"Artemis Bow",
"Concentrated Arrow"
));
//Khora
table_loader("khora1", abilityGenerator(KhoraMap.whipclaw));
table_loader("khora2", abilityGenerator(KhoraMap.ensnare));
table_loader("khora3", abilityGenerator(KhoraMap.venari));
table_loader("khora4", abilityGenerator(KhoraMap.strangledome));
table_loader("khora1_aug", augmentGenerator(KhoraMap, "Whipclaw", "Accumulating Whipclaw"));
table_loader("khora", warframeGenerator(
KhoraMap,
"Whipclaw",
"Accumulating Whipclaw",
"Ensnare",
"",
"Venari",
"Venari Bodyguard",
"Strangledome",
"Pilfering Strangledome"
));
//Limbo
table_loader("limbo1", abilityGenerator(LimboMap.banish));
table_loader("limbo2", abilityGenerator(LimboMap.stasis));
table_loader("limbo3", abilityGenerator(LimboMap.rift_surge));
table_loader("limbo4", abilityGenerator(LimboMap.cataclysm));
table_loader("limbo1_aug", augmentGenerator(LimboMap, "Banish", "Rift Haven"));
table_loader("limbo3_aug", augmentGenerator(LimboMap, "Rift Surge", "Rift Torrent"));
table_loader("limbo", warframeGenerator(
LimboMap,
"Banish",
"Rift Haven",
"Stasis",
"",
"Rift Surge",
"Rift Torrent",
"Cataclysm",
"Cataclysm Continuum"
));
//Loki
table_loader("loki1", abilityGenerator(LokiMap.decoy));
table_loader("loki2", abilityGenerator(LokiMap.invisibility));
table_loader("loki3", abilityGenerator(LokiMap.switch_teleport));
table_loader("loki4", abilityGenerator(LokiMap.radial_disarm));
table_loader("loki3_aug", augmentGenerator(LokiMap, "Switch Teleport", "Safeguard Switch"));
table_loader("loki", warframeGenerator(
LokiMap,
"Decoy",
"Savior Decoy",
"Invisibility",
"Hushed Invisibility",
"Switch Teleport",
"Safeguard Switch",
"Radial Disarm",
"Irradiating Disarm"
));
//Mag
table_loader("mag1", abilityGenerator(MagMap.pull));
table_loader("mag2", abilityGenerator(MagMap.magnetize));
table_loader("mag3", abilityGenerator(MagMap.polarize));
table_loader("mag4", abilityGenerator(MagMap.crush));
table_loader("mag2_aug", augmentGenerator(MagMap, "Magnetize", "Magnetized Discharge"));
table_loader("mag3_aug", augmentGenerator(MagMap, "Polarize", "Counter Pulse"));
table_loader("mag4_aug", augmentGenerator(MagMap, "Crush", "Fracturing Crush"));
table_loader("mag", warframeGenerator(
MagMap,
"Pull",
"Greedy Pull",
"Magnetize",
"Magnetized Discharge",
"Polarize",
"Counter Pulse",
"Crush",
"Fracturing Crush"
));
//Mesa
table_loader("mesa1", abilityGenerator(MesaMap.ballistic_battery));
table_loader("mesa2", abilityGenerator(MesaMap.shooting_gallery));
table_loader("mesa3", abilityGenerator(MesaMap.shatter_shield));
table_loader("mesa4", abilityGenerator(MesaMap.peacemaker));
table_loader("mesa2_aug", augmentGenerator(MesaMap, "Shooting Gallery", "Muzzle Flash"));
table_loader("mesa", warframeGenerator(
MesaMap,
"Ballistic Battery",
"Ballistic Bullseye",
"Shooting Gallery",
"Muzzle Flash",
"Shatter Shield",
"Staggering Shield",
"Peacemaker",
"Mesa's Waltz"
));
//Mirage
table_loader("mirage1", abilityGenerator(MirageMap.hall_of_mirrors));
table_loader("mirage2", abilityGenerator(MirageMap.sleight_of_hand));
table_loader("mirage3", abilityGenerator(MirageMap.eclipse));
table_loader("mirage4", abilityGenerator(MirageMap.prism));
table_loader("mirage2_aug", augmentGenerator(MirageMap, "Sleight Of Hand", "Explosive Legerdemain"));
table_loader("mirage3_aug", augmentGenerator(MirageMap, "Eclipse", "Total Eclipse"));
table_loader("mirage", warframeGenerator(
MirageMap,
"Hall Of Mirrors",
"Hall of Malevolence",
"Sleight Of Hand",
"Explosive Legerdemain",
"Eclipse",
"Total Eclipse",
"Prism",
""
));
//Nekros
table_loader("nekros1", abilityGenerator(NekrosMap.soul_punch));
table_loader("nekros2", abilityGenerator(NekrosMap.terrify));
table_loader("nekros3", abilityGenerator(NekrosMap.desecrate));
table_loader("nekros4", abilityGenerator(NekrosMap.shadows_of_the_dead));
table_loader("nekros1_aug", augmentGenerator(NekrosMap, "Soul Punch", "Soul Survivor"));
table_loader("nekros2_aug", augmentGenerator(NekrosMap, "Terrify", "Creeping Terrify"));
table_loader("nekros3_aug", augmentGenerator(NekrosMap, "Desecrate", "Despoil"));
table_loader("nekros4_aug", augmentGenerator(NekrosMap, "Shadows Of The Dead", "Shield Of Shadows"));
table_loader("nekros", warframeGenerator(
NekrosMap,
"Soul Punch",
"Soul Survivor",
"Terrify",
"Creeping Terrify",
"Desecrate",
"Despoil",
"Shadows Of The Dead",
"Shield of Shadows"
));
//Nezha
table_loader("nezha1", abilityGenerator(NezhaMap.fire_walker));
table_loader("nezha2", abilityGenerator(NezhaMap.blazing_chakram));
table_loader("nezha3", abilityGenerator(NezhaMap.warding_halo));
table_loader("nezha4", abilityGenerator(NezhaMap.divine_spears));
table_loader("nezha1_aug", augmentGenerator(NezhaMap, "Fire Walker", "Pyroclastic Flow"));
table_loader("nezha", warframeGenerator(
NezhaMap,
"Fire Walker",
"Pyroclastic Flow",
"Blazing Chakram",
"Reaping Chakram",
"Warding Halo",
"Safeguard",
"Divine Spears",
""
));
//Nidus
table_loader("nidus1", abilityGenerator(NidusMap.virulence));
table_loader("nidus2", abilityGenerator(NidusMap.larva));
table_loader("nidus3", abilityGenerator(NidusMap.parasitic_link));
table_loader("nidus4", abilityGenerator(NidusMap.ravenous));
table_loader("nidus1_aug", augmentGenerator(NidusMap, "Virulence", "Teeming Virulence"));
table_loader("nidus2_aug", augmentGenerator(NidusMap, "Larva", "Larva Burst"));
table_loader("nidus", warframeGenerator(
NidusMap,
"Virulence",
"Teeming Virulence",
"Larva",
"Larva Burst",
"Parasitic Link",
"",
"Ravenous",
"Insatiable"
));
//Nova
table_loader("nova1", abilityGenerator(NovaMap.null_star));
table_loader("nova2", abilityGenerator(NovaMap.antimatter_drop));
table_loader("nova3", abilityGenerator(NovaMap.worm_hole));
table_loader("nova4", abilityGenerator(NovaMap.molecular_prime));
table_loader("nova1_aug", augmentGenerator(NovaMap, "Null Star", "Neutron Star"));
table_loader("nova2_aug", augmentGenerator(NovaMap, "Antimatter Drop", "Antimatter Absorb"));
table_loader("nova3_aug", augmentGenerator(NovaMap, "Worm Hole", "Escape Velocity"));
table_loader("nova", warframeGenerator(
NovaMap,
"Null Star",
"Neutron Star",
"Antimatter Drop",
"Antimatter Absorb",
"Worm Hole",
"Escape Velocity",
"Molecular Prime",
"Molecular Fission"
));
//Nyx
table_loader("nyx1", abilityGenerator(NyxMap.mind_control));
table_loader("nyx2", abilityGenerator(NyxMap.psychic_bolts));
table_loader("nyx3", abilityGenerator(NyxMap.chaos));
table_loader("nyx4", abilityGenerator(NyxMap.absorb));
table_loader("nyx1_aug", augmentGenerator(NyxMap, "Mind Control", "Mind Freak"));
table_loader("nyx2_aug", augmentGenerator(NyxMap, "Psychic Bolts", "Pacifying Bolts"));
table_loader("nyx", warframeGenerator(
NyxMap,
"Mind Control",
"Mind Freak",
"Psychic Bolts",
"Pacifying Bolts",
"Chaos",
"Chaos Sphere",
"Absorb",
"Assimilate"
));
//Oberon
table_loader("oberon1", abilityGenerator(OberonMap.smite));
table_loader("oberon2", abilityGenerator(OberonMap.hallowed_ground));
table_loader("oberon3", abilityGenerator(OberonMap.renewal));
table_loader("oberon4", abilityGenerator(OberonMap.reckoning));
table_loader("oberon1_aug", augmentGenerator(OberonMap, "Smite", "Smite Infusion"));
table_loader("oberon2_aug", augmentGenerator(OberonMap, "Hallowed Ground", "Hallowed Eruption"));
table_loader("oberon3_aug", augmentGenerator(OberonMap, "Renewal", "Phoenix Renewal"));
table_loader("oberon4_aug", augmentGenerator(OberonMap, "Reckoning",
"Hallowed Reckoning"));
table_loader("oberon", warframeGenerator(
OberonMap,
"Smite",
"Smite Infusion",
"Hallowed Ground",
"Hallowed Eruption",
"Renewal",
"Phoenix Renewal",
"Reckoning",
"Hallowed Reckoning"
));
//Octavia
table_loader("octavia1", abilityGenerator(OctaviaMap.mallet));
table_loader("octavia2", abilityGenerator(OctaviaMap.resonator));
table_loader("octavia3", abilityGenerator(OctaviaMap.metronome));
table_loader("octavia4", abilityGenerator(OctaviaMap.amp));
table_loader("octavia", warframeGenerator(
OctaviaMap,
"Mallet",
"Partitioned Mallet",
"Resonator",
"Conductor",
"Metronome",
"",
"Amp",
""
));
//Revenant
table_loader("revenant1", abilityGenerator(RevenantMap.enthrall));
table_loader("revenant2", abilityGenerator(RevenantMap.mesmer_skin));
table_loader("revenant3", abilityGenerator(RevenantMap.reave));
table_loader("revenant4", abilityGenerator(RevenantMap.danse_macabre));
table_loader("revenant3_aug", augmentGenerator(RevenantMap, "Reave", "Blinding Reave"));
table_loader("revenant", warframeGenerator(
RevenantMap,
"Enthrall",
"",
"Mesmer Skin",
"",
"Reave",
"Blinding Reave",
"Danse Macabre",
""
));
//Rhino
table_loader("rhino1", abilityGenerator(RhinoMap.rhino_charge));
table_loader("rhino2", abilityGenerator(RhinoMap.iron_skin));
table_loader("rhino3", abilityGenerator(RhinoMap.roar));
table_loader("rhino4", abilityGenerator(RhinoMap.rhino_stomp));
table_loader("rhino1_aug", augmentGenerator(RhinoMap, "Rhino Charge", "Ironclad Charge"));
table_loader("rhino2_aug", augmentGenerator(RhinoMap, "Iron Skin", "Iron Shrapnel"));
table_loader("rhino3_aug", augmentGenerator(RhinoMap, "Roar", "Piercing Roar"));
table_loader("rhino4_aug", augmentGenerator(RhinoMap, "Rhino Stomp", "Reinforcing Stomp"));
table_loader("rhino", warframeGenerator(
RhinoMap,
"Rhino Charge",
"Ironclad Charge",
"Iron Skin",
"Iron Shrapnel",
"Roar",
"Piercing Roar",
"Rhino Stomp",
"Reinforcing Stomp"
));
//Saryn
table_loader("saryn1", abilityGenerator(SarynMap.spores));
table_loader("saryn2", abilityGenerator(SarynMap.molt));
table_loader("saryn3", abilityGenerator(SarynMap.toxic_lash));
table_loader("saryn4", abilityGenerator(SarynMap.miasma));
table_loader("saryn1_aug", augmentGenerator(SarynMap, "Spores", "Venom Dose"));
table_loader("saryn2_aug", augmentGenerator(SarynMap, "Molt", "Regenerative Molt"));
table_loader("saryn3_aug", augmentGenerator(SarynMap, "Toxic Lash", "Contagion Cloud"));
table_loader("saryn", warframeGenerator(
SarynMap,
"Spores",
"Venom Dose",
"Molt",
"Regenerative Molt",
"Toxic Lash",
"Contagion Cloud",
"Miasma",
""
));
//Titania
table_loader("titania1", abilityGenerator(TitaniaMap.spellbind));
table_loader("titania2", abilityGenerator(TitaniaMap.tribute));
table_loader("titania3", abilityGenerator(TitaniaMap.lantern));
table_loader("titania4", abilityGenerator(TitaniaMap.razorwing));
table_loader("titania3_aug", augmentGenerator(TitaniaMap, "Lantern", "Beguiling Lantern"));
table_loader("titania4_aug", augmentGenerator(TitaniaMap, "Razorwing", "Razorwing Blitz"));
table_loader("titania", warframeGenerator(
TitaniaMap,
"Spellbind",
"",
"Tribute",
"",
"Lantern",
"Beguiling Lantern",
"Razorwing",
"Razorwing Blitz"
));
//Trinity
table_loader("trinity1", abilityGenerator(TrinityMap.well_of_life));
table_loader("trinity2", abilityGenerator(TrinityMap.energy_vampire));
table_loader("trinity3", abilityGenerator(TrinityMap.link));
table_loader("trinity4", abilityGenerator(TrinityMap.blessing));
table_loader("trinity1_aug", augmentGenerator(TrinityMap, "Well Of Life", "Pool of Life"));
table_loader("trinity3_aug", augmentGenerator(TrinityMap, "Link", "Abating Link"));
table_loader("trinity", warframeGenerator(
TrinityMap,
"Well Of Life",
"Pool of Life",
"Energy Vampire",
"Vampire Leech",
"Link",
"Abating Link",
"Blessing",
""
));
//Valkyr
table_loader("valkyr1", abilityGenerator(ValkyrMap.rip_line));
table_loader("valkyr2", abilityGenerator(ValkyrMap.warcry));
table_loader("valkyr3", abilityGenerator(ValkyrMap.paralysis));
table_loader("valkyr4", abilityGenerator(ValkyrMap.hysteria));
table_loader("valkyr2_aug", augmentGenerator(ValkyrMap, "Warcry", "Eternal War"));
table_loader("valkyr3_aug", augmentGenerator(ValkyrMap, "Paralysis", "Prolonged Paralysis"));
table_loader("valkyr4_aug", augmentGenerator(ValkyrMap, "Hysteria", "Hysterical Assault"));
table_loader("valkyr", warframeGenerator(
ValkyrMap,
"Rip Line",
"Swing Line",
"Warcry",
"Eternal War",
"Paralysis",
"Prolonged Paralysis",
"Hysteria",
"Hysterical Assault"
));
//Volt
table_loader("volt1", abilityGenerator(VoltMap.shock));
table_loader("volt2", abilityGenerator(VoltMap.speed));
table_loader("volt3", abilityGenerator(VoltMap.electric_shield));
table_loader("volt4", abilityGenerator(VoltMap.discharge));
table_loader("volt1_aug", augmentGenerator(VoltMap, "Shock", "Shock Trooper"));
table_loader("volt2_aug", augmentGenerator(VoltMap, "Speed", "Shocking Speed"));
table_loader("volt3_aug", augmentGenerator(VoltMap, "Electric Shield", "Transistor Shield"));
table_loader("volt", warframeGenerator(
VoltMap,
"Shock",
"Shock Trooper",
"Speed",
"Shocking Speed",
"Electric Shield",
"Transistor Shield",
"Discharge",
"Capacitance"
));
//Wisp
table_loader("wisp1", abilityGenerator(WispMap.reservoirs));
table_loader("wisp2", abilityGenerator(WispMap.wil_o_wisp));
table_loader("wisp3", abilityGenerator(WispMap.breach_surge));
table_loader("wisp4", abilityGenerator(WispMap.sol_gate));
table_loader("wisp", warframeGenerator(
WispMap,
"Reservoirs",
"",
"Wil-O-Wisp",
"",
"Breach Surge",
"",
"Sol Gate",
""
));
//Wukong
table_loader("wukong1", abilityGenerator(WukongMap.celestial_twin));
table_loader("wukong2", abilityGenerator(WukongMap.cloud_walker));
table_loader("wukong3", abilityGenerator(WukongMap.defy));
table_loader("wukong4", abilityGenerator(WukongMap.primal_fury));
table_loader("wukong1_aug", augmentGenerator(WukongMap, "Celestial Twin", "Celestial Stomp"));
table_loader("wukong2_aug", augmentGenerator(WukongMap, "Cloud Walker", "Enveloping Cloud"));
table_loader("wukong4_aug", augmentGenerator(WukongMap, "Primal Fury", "Primal Rage"));
table_loader("wukong", warframeGenerator(
WukongMap,
"Celestial Twin",
"Celestial Stomp",
"Cloud Walker",
"Enveloping Cloud",
"Defy",
"",
"Primal Fury",
"Primal Rage"
));
//Zephyr
table_loader("zephyr1", abilityGenerator(ZephyrMap.tail_wind));
table_loader("zephyr2", abilityGenerator(ZephyrMap.airburst));
table_loader("zephyr3", abilityGenerator(ZephyrMap.turbulence));
table_loader("zephyr4", abilityGenerator(ZephyrMap.tornado));
table_loader("zephyr3_aug", augmentGenerator(ZephyrMap, "Turbulence", "Jet Stream"));
table_loader("zephyr", warframeGenerator(
ZephyrMap,
"Tail Wind",
"Target Fixation",
"Airburst",
"",
"Turbulence",
"Jet Stream",
"Tornado",
"Funnel Clouds"
));
// if the proper ID is called, it uses a function
function table_loader(idCall, func, bool) {
var idName = "#maximization_" + idCall;
if ($(idName).length) {
$(idName).html(func);
}
if (!bool) { //if present, does not call updatetable, avoid recursion in cases where Select field exists
update_table();
}
}
// generates the input table
function buildTable(additions) {
var vals = [
['Strength', 'STR', '100'],
['Range', 'RNG', '100'],
['Efficiency', 'EFF', '100'],
['Duration', 'DUR', '100']
];
if (additions != []) { //keeps base input table clean
vals = vals.concat(additions);
}
var rows = [];
var i;
for (i = 0; i < vals.length; i++) {
rows[i] = $('<tr>', {
border: 0,
append: [
$('<td>', {
text: vals[i][0] + ':',
}),
interactive_field(vals[i])
]
});
}
return $('<table>').append(rows);
// creates the interactive field according to the last value of the nested array
function interactive_field(array_check) {
if (!isNaN(array_check[2])) { // if the value is a number, create an input number field
return $('<td>', {
append: $('<input>', {
class: 'inputField',
width: 55,
min: 0,
max: 9999,
id: 'in_' + array_check[1],
type: 'number',
value: array_check[2],
on: {
input: update_table
}
})
});
} else { // otherwise create a option with values of array as options
var a;
var cont = [];
for (a = 0; a < array_check[2].length; a++) {
cont[a] = $('<option>', {
value: array_check[2][a].toLowerCase(),
text: array_check[2][a]
});
}
return $('<select>', {
id: 'in_' + array_check[1],
width: 55,
on: {
input: update_table
}
}).append(cont);
}
} // interactive_field end
} // buildTable end
// creates the entire table of a Warframe.
function warframeGenerator(map, ability1, augment1, ability2, augment2, ability3, augment3, ability4, augment4, option) {
var i = 0;
var rows = [];
var abilities = [ability1, ability2, ability3, ability4];
var augments = [augment1, augment2, augment3, augment4];
for (i = 0; i < 4; i++) {
var abilityKey = abilities[i].replace(/ /g, "_").replace(/&/g, "and").replace(/'/g, "").toLowerCase().replace(/-/g, "_").toLowerCase();
var augmentKey = augments[i].replace(/ /g, "_").replace(/&/g, "and").replace(/'/g, "").toLowerCase().replace(/-/g, "_").toLowerCase();
rows[2 * i] = $('<tr>', { //every ability/augment name goes in even rows
append: [
$('<td>', {
append: [
abilityName(abilities[i])
]
}),
$('<td>', {
append: [
augmentName(augments[i])
]
})
]
});
rows[2 * i + 1] = $('<tr>', { //every output cells goes in odd rows
valign: "top",
append: [
$('<td>', {
append: [
abilityGenerator(map[abilityKey], option)
]
}),
$('<td>', {
append: [
abilityGenerator(map[augmentKey], option)
]
})
]
});
}
return $('<table>').append(rows);
}
// creates a table with Ability and Augment
function augmentGenerator(map, ability, augment, option) {
var ability_call = ability.replace(/ /g, "_").replace(/&/g, "and").replace(/'/g, "").replace(/-/g, "_").toLowerCase();
var augment_call = augment.replace(/ /g, "_").replace(/&/g, "and").replace(/'/g, "").replace(/-/g, "_").toLowerCase();
return $('<table>', {
append: [
$('<tr>', {
append: [
abilityName(ability),
$('<td>', {
text: augment
})
]
}),
$('<tr>', {
append: [
$('<td>', {
valign: "top",
append: [
abilityGenerator(map[ability_call], option)
]
}),
$('<td>', {
valign: "top",
append: [
abilityGenerator(map[augment_call], option)
]
})
]
})
]
});
}
// Generates the graphical aspect of the output cells
function abilityGenerator(meta_array, option) {
if (meta_array == "N/A") {
return "N/A";
}
var i, j = 0;
var rows = [];
for (i = 0; i < meta_array.length; i++) {
if (!option || ((meta_array[i][0]).includes("aug") && ((meta_array[i][0]).includes(option) || (meta_array[i][0].match(/_/g).length == 2))) || (meta_array[i][0]).includes(option) || (meta_array[i][0].match(/_/g).length == 1)) {
rows[i - j] = $('<tr>', {
append: [
$('<td>', {
class: 'resultingStat',
append: [
$('<span>', {
id: meta_array[i][0],
value: 'NaN'
})
]
}),
$('<td>', {
text: meta_array[i][1]
})
]
});
} else {
j++;
}
}
return $('<table>').append(rows);
}
// creates the title a of the ability
function abilityName(name) {
var link = name.replace(/ /g, "_");
return '<span class="ability-tooltip" data-param="' + name + '" style="white-space:pre"><a href="/wiki/' + link + '">' + name + '</a></span>';
}
// (for now) identical to abilityName, creates the title of the augment. The difference should be in the tooltip if implemented
function augmentName(name) {
var link = name.replace(/ /g, "_");
return '<span class="mod-tooltip" data-param="' + name + '" style="white-space:pre"><a href="/wiki/' + link + '">' + name + '</a></span>';
}
}); // function end