UNPKG

borderlands2

Version:

Borderlands 2 weapon damage and DPS calculation library

103 lines (82 loc) 2.41 kB
export enum EffectType { Pimpernel = 'Pimpernel', ActionSkill = 'ActionSkill', Crippled = 'Crippled', ShieldDepleted = 'ShieldDepleted', Health = 'Health', MetalStorm = 'MetalStorm', Onslaught = 'Onslaught', Battlefront = 'Battlefront', Ambush = 'Ambush', RisingSh0t = 'RisingSh0t', DeathMark = 'DeathMark', } // This would treat effects a binary states...but effects could vary // health can be a %, pimpernel can stack crit shots class Multiplier { public value: number = 1 public getValue(): number { return this.value } public setValue(value: number): void { this.value = value } } class PercentageMultiplier extends Multiplier { } class RangeMultiplier extends Multiplier { public max: number public step: number constructor(max: number, step: number = 1) { super() this.max = max this.step = step } } export abstract class Effect { public multiplier: Multiplier = new Multiplier() protected abstract effectType: EffectType public getEffectType(): EffectType { return this.effectType } } export class PimpernelEffect extends Effect { protected effectType = EffectType.Pimpernel public multiplier: Multiplier = new RangeMultiplier(7) } export class ShieldDepletedEffect extends Effect { protected effectType = EffectType.ShieldDepleted } export class ActionSkillEffect extends Effect { protected effectType = EffectType.ActionSkill } export class CrippledEffect extends Effect { protected effectType = EffectType.Crippled } export class HealthEffect extends Effect { protected effectType = EffectType.Health public multiplier: Multiplier = new PercentageMultiplier() constructor(health?: number) { super() if(health != undefined) this.multiplier.setValue(health) } } export class MetalStormEffect extends Effect { protected effectType = EffectType.MetalStorm } export class OnslaughtEffect extends Effect { protected effectType = EffectType.Onslaught } export class BattlefrontEffect extends Effect { protected effectType = EffectType.Battlefront } export class AmbushEffect extends Effect { protected effectType = EffectType.Ambush } export class RisingSh0tEffect extends Effect { protected effectType = EffectType.RisingSh0t public multiplier: Multiplier = new RangeMultiplier(5) } export class DeathMarkEffect extends Effect { protected effectType = EffectType.DeathMark }