import * as OtherInputs from '../core/components/other_inputs.js'; import { IndividualSimUI, registerSpecConfig } from '../core/individual_sim_ui.js'; import { Player } from '../core/player.js'; import { APLRotation } from '../core/proto/apl.js'; import { Class, Debuffs, Faction, IndividualBuffs, PartyBuffs, Race, RaidBuffs, Spec, Stat, TristateEffect } from '../core/proto/common.js'; import { Stats } from '../core/proto_utils/stats.js'; import { getSpecIcon, specNames } from '../core/proto_utils/utils.js'; // import * as ShamanInputs from './inputs.js'; import * as Presets from './presets.js'; const SPEC_CONFIG = registerSpecConfig(Spec.SpecRestorationShaman, { cssClass: 'restoration-shaman-sim-ui', cssScheme: 'shaman', // List any known bugs / issues here and they'll be shown on the site. knownIssues: [], warnings: [], // All stats for which EP should be calculated. epStats: [Stat.StatIntellect, Stat.StatSpirit, Stat.StatSpellPower, Stat.StatSpellCrit, Stat.StatSpellHaste, Stat.StatMP5], // Reference stat against which to calculate EP. I think all classes use either spell power or attack power. epReferenceStat: Stat.StatSpellPower, // Which stats to display in the Character Stats section, at the bottom of the left-hand sidebar. displayStats: [ Stat.StatHealth, Stat.StatMana, Stat.StatIntellect, Stat.StatSpirit, Stat.StatSpellPower, Stat.StatSpellCrit, Stat.StatSpellHaste, Stat.StatMP5, ], displayPseudoStats: [], defaults: { // Default equipped gear. gear: Presets.DefaultGear.gear, // Default EP weights for sorting gear in the gear picker. epWeights: Stats.fromMap({ [Stat.StatIntellect]: 0.22, [Stat.StatSpirit]: 0.05, [Stat.StatSpellPower]: 1, [Stat.StatSpellCrit]: 0.67, [Stat.StatSpellHaste]: 1.29, [Stat.StatMP5]: 0.08, }), // Default consumes settings. consumes: Presets.DefaultConsumes, // Default talents. talents: Presets.RaidHealingTalents.data, // Default spec-specific settings. specOptions: Presets.DefaultOptions, // Default raid/party buffs settings. raidBuffs: RaidBuffs.create({ arcaneBrilliance: true, divineSpirit: true, giftOfTheWild: TristateEffect.TristateEffectImproved, moonkinAura: true, }), partyBuffs: PartyBuffs.create({}), individualBuffs: IndividualBuffs.create({ blessingOfKings: true, blessingOfWisdom: 2, }), debuffs: Debuffs.create({ faerieFire: true, judgementOfWisdom: true, }), }, // IconInputs to include in the 'Player' section on the settings tab. playerIconInputs: [], // Buff and Debuff inputs to include/exclude, overriding the EP-based defaults. includeBuffDebuffInputs: [], excludeBuffDebuffInputs: [], // Inputs to include in the 'Other' section on the settings tab. otherInputs: { inputs: [OtherInputs.TankAssignment], }, customSections: [], encounterPicker: { // Whether to include 'Execute Duration (%)' in the 'Encounter' section of the settings tab. showExecuteProportion: false, }, presets: { // Preset talents that the user can quickly select. talents: [Presets.RaidHealingTalents, Presets.TankHealingTalents], rotations: [], // Preset gear configurations that the user can quickly select. gear: [Presets.DefaultGear], }, autoRotation: (_player: Player): APLRotation => { return APLRotation.create(); }, raidSimPresets: [ { spec: Spec.SpecRestorationShaman, tooltip: specNames[Spec.SpecRestorationShaman], defaultName: 'Restoration', iconUrl: getSpecIcon(Class.ClassShaman, 2), talents: Presets.RaidHealingTalents.data, specOptions: Presets.DefaultOptions, consumes: Presets.DefaultConsumes, defaultFactionRaces: { [Faction.Unknown]: Race.RaceUnknown, [Faction.Alliance]: Race.RaceUnknown, [Faction.Horde]: Race.RaceOrc, }, defaultGear: { [Faction.Unknown]: {}, [Faction.Alliance]: { 1: Presets.DefaultGear.gear, }, [Faction.Horde]: { 1: Presets.DefaultGear.gear, }, }, }, ], }); export class RestorationShamanSimUI extends IndividualSimUI { constructor(parentElem: HTMLElement, player: Player) { super(parentElem, player, SPEC_CONFIG); } }