UNPKG

borderlands2

Version:

Borderlands 2 weapon damage and DPS calculation library

191 lines 6.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var build_1 = require("./domain/build/object/build"); var class_1 = require("./domain/build/value_object/class"); var elemental_effect_1 = require("./domain/weapon/value_object/elemental_effect"); var manufacturer_1 = require("./domain/weapon/value_object/manufacturer"); var type_1 = require("./domain/weapon/value_object/type"); var table_printer_1 = require("./domain/utilities/service/table_printer"); var stat_type_1 = require("./domain/build/value_object/stat_type"); var commando_1 = require("./domain/build/object/skills/commando"); var class_mod_1 = require("./domain/gear/object/class_mod"); var red_text_1 = require("./domain/build/object/red_text"); var elemental_damage_coefficients_1 = require("./domain/enemy/value_object/elemental_damage_coefficients"); var context_1 = require("./domain/context"); var domain_1 = require("./domain"); var gear_type_1 = require("./domain/gear/object/gear_type"); // TODO: Other class skills...tried this, gunzerker broke me // TODO: weapons need attributes like grenade reloads // EDIT: grenade reloads are based on remaining ammo...so calculating // this damage would be a one off value? magazine size minus one? // TODO: calculate things like explosive AR where there is no bullet damage :( var badassRanking = [{ type: stat_type_1.StatType.GunDamage, value: 0.084 }, { type: stat_type_1.StatType.FireRate, value: 0.084 }, { type: stat_type_1.StatType.ReloadSpeed, value: 0.087 }, { type: stat_type_1.StatType.CritHitDamage, value: 0.084 }, { type: stat_type_1.StatType.ElementalEffectChance, value: 0.091 }, { type: stat_type_1.StatType.ElementalEffectDamage, value: 0.087 }, { type: stat_type_1.StatType.GrenadeDamage, value: 0.087 }]; var relic = new domain_1.Gear(gear_type_1.GearType.Relic, [{ type: stat_type_1.StatType.GunDamage, value: 0.181 }, { type: stat_type_1.StatType.FireRate, value: 0.49 }], domain_1.WeaponTypeDecorator(type_1.Type.Pistol)); var classModA = new class_mod_1.ClassMod([], [ new commando_1.Battlefront(4) ]); var classModB = new class_mod_1.ClassMod([{ type: stat_type_1.StatType.ReloadSpeed, value: 0.22 }, { type: stat_type_1.StatType.FireRate, value: 0.25 }], [ new commando_1.Ranger(3), new commando_1.Impact(2), ]); var skillsA = [ new commando_1.Pressure(5), new commando_1.Impact(5), //new Battlefront(5), new commando_1.Ready(4), ]; var build = new build_1.Build(class_1.Class.Commando, skillsA); var weapons = [{ name: 'Potential Thinking', manufacturer: manufacturer_1.Manufacturer.Hyperion, type: type_1.Type.Shotgun, damage: 2906, pellets: 6, fireRate: 4, reloadSpeed: 3.9, magazineSize: 10, elementalChance: 0.08, elementalDps: 2499.1, elementalEffect: elemental_effect_1.ElementalEffect.Shock, }, { name: 'Redundant Spiker', manufacturer: manufacturer_1.Manufacturer.Maliwan, type: type_1.Type.Pistol, damage: 11179, pellets: 2, fireRate: 2.8, reloadSpeed: 1.5, magazineSize: 35, elementalChance: 0.216, elementalEffect: elemental_effect_1.ElementalEffect.Slag, ammoPerShot: 4, isEtech: true }, { name: 'Practical Lady Fist', manufacturer: manufacturer_1.Manufacturer.Hyperion, type: type_1.Type.Pistol, damage: 4946, fireRate: 4.6, reloadSpeed: 2.0, magazineSize: 25, redText: red_text_1.RedTextEnum.LadyFist, }, { name: 'Flynt\'s Tinderbox', manufacturer: manufacturer_1.Manufacturer.Bandit, type: type_1.Type.Pistol, damage: 6430, fireRate: 3.3, reloadSpeed: 3.0, magazineSize: 48, ammoPerShot: 2, elementalChance: 0.258, elementalDps: 4604.4, elementalEffect: elemental_effect_1.ElementalEffect.Incendiary, redText: red_text_1.RedTextEnum.GoodForStartingFires }, { name: 'Tactical Hornet', manufacturer: manufacturer_1.Manufacturer.Dahl, type: type_1.Type.Pistol, damage: 9723, fireRate: 12.5, reloadSpeed: 2, magazineSize: 23, elementalChance: 0.15, elementalDps: 4604.4, elementalEffect: elemental_effect_1.ElementalEffect.Corrosive, }, { name: 'Slippery Root', manufacturer: manufacturer_1.Manufacturer.Torgue, type: type_1.Type.AssaultRifle, damage: 7093, fireRate: 4.6, reloadSpeed: 3.1, magazineSize: 21, elementalEffect: elemental_effect_1.ElementalEffect.Explosive }, { name: 'Guileless SubMalevolent Grace', manufacturer: manufacturer_1.Manufacturer.Maliwan, type: type_1.Type.SubmachineGun, damage: 4394, fireRate: 8, reloadSpeed: 3.2, magazineSize: 27, elementalChance: 0.125, elementalDps: 4327.1, elementalEffect: elemental_effect_1.ElementalEffect.Incendiary }, { name: 'Skorry Bratchny', manufacturer: manufacturer_1.Manufacturer.Vladof, type: type_1.Type.SniperRifle, damage: 11720, fireRate: 5.2, reloadSpeed: 3.1, magazineSize: 12, elementalChance: 0.3, elementalDps: 3605.9, elementalEffect: elemental_effect_1.ElementalEffect.Incendiary, }, { name: 'Skookum Muckamuck', manufacturer: manufacturer_1.Manufacturer.Jakobs, type: type_1.Type.SniperRifle, damage: 30479, fireRate: 2.6, reloadSpeed: 4, magazineSize: 8, }, { name: 'Gentleman\'s Corinthian', manufacturer: manufacturer_1.Manufacturer.Maliwan, type: type_1.Type.SniperRifle, damage: 15271, fireRate: 1.1, reloadSpeed: 4.2, magazineSize: 5, elementalChance: 0.375, elementalDps: 3606.1, elementalEffect: elemental_effect_1.ElementalEffect.Corrosive, dealsBonusElementalDamage: true }]; var gameMode = elemental_damage_coefficients_1.GameModeEnum.TrueVaultHunterMode; var contexts = [new context_1.Context(build, undefined, classModA, relic, undefined, badassRanking, [ //new HealthEffect(1) //new CrippledEffect() ], gameMode)]; contexts.forEach(function (context) { var tps = new table_printer_1.TablePrinterService(context, weapons); tps.printWeaponSummary(); //tps.printCategoryMaximums() }); //# sourceMappingURL=playthrough_example.js.map