borderlands2
Version:
Borderlands 2 weapon damage and DPS calculation library
191 lines • 6.81 kB
JavaScript
"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