<commit_before>import SPELLS from 'common/SPELLS';
import COVENANTS from 'game/shadowlands/COVENANTS';
import CoreAbilities from 'parser/core/modules/Abilities';

class Abilities extends CoreAbilities {
  spellbook() {
    const combatant = this.selectedCombatant;
    return [
      // Rotational
      {
        spell: SPELLS.ENVENOM.id,
        category: Abilities.SPELL_CATEGORIES.ROTATIONAL,
        gcd: {
          static: 1000,
        },
        buffSpellId: SPELLS.ENVENOM.id,
      },
      {
        spell: SPELLS.GARROTE.id,
        category: Abilities.SPELL_CATEGORIES.ROTATIONAL,
        // During the Subterfuge buff (from the talent), the spell has no cd
        cooldown: () => {
          if (!combatant.hasTalent(SPELLS.SUBTERFUGE_TALENT.id)) {
            return 6;
          } else {
            const hasStealth =
              combatant.hasBuff(SPELLS.SUBTERFUGE_BUFF.id) ||
              combatant.hasBuff(SPELLS.STEALTH.id) ||
              combatant.hasBuff(SPELLS.STEALTH_BUFF.id) ||
              combatant.hasBuff(SPELLS.VANISH_BUFF.id);
            return hasStealth ? 0 : 6;
          }
        },
        gcd: {
          static: 1000,
        },
        buffSpellId: SPELLS.GARROTE.id,
      },
      {
        spell: SPELLS.MUTILATE.id,
        category: Abilities.SPELL_CATEGORIES.ROTATIONAL,
        gcd: {
          static: 1000,
        },
      },
      {<commit_msg>Added missing spells to spellbook<commit_after>import SPELLS from 'common/SPELLS';
import COVENANTS from 'game/shadowlands/COVENANTS';
import CoreAbilities from 'parser/core/modules/Abilities';

class Abilities extends CoreAbilities {
  spellbook() {
    const combatant = this.selectedCombatant;
    return [
      // Rotational
      {
        spell: SPELLS.ENVENOM.id,
        category: Abilities.SPELL_CATEGORIES.ROTATIONAL,
        gcd: {
          static: 1000,
        },
        buffSpellId: SPELLS.ENVENOM.id,
      },
      {
        spell: SPELLS.GARROTE.id,
        category: Abilities.SPELL_CATEGORIES.ROTATIONAL,
        // During the Subterfuge buff (from the talent), the spell has no cd
        cooldown: () => {
          if (!combatant.hasTalent(SPELLS.SUBTERFUGE_TALENT.id)) {
            return 6;
          } else {
            const hasStealth =
              combatant.hasBuff(SPELLS.SUBTERFUGE_BUFF.id) ||
              combatant.hasBuff(SPELLS.STEALTH.id) ||
              combatant.hasBuff(SPELLS.STEALTH_BUFF.id) ||
              combatant.hasBuff(SPELLS.VANISH_BUFF.id);
            return hasStealth ? 0 : 6;
          }
        },
        gcd: {
          static: 1000,
        },
        buffSpellId: SPELLS.GARROTE.id,
      },
      {
        spell: SPELLS.SHIV.id,
        category: Abilities.SPELL_CATEGORIES.ROTATIONAL,
        gcd: {
          base: 1000,
        },
      },
      {
        spell: SPELLS.SLICE_AND_DICE.id,
        category: Abilities.SPELL_CATEGORIES.ROTATIONAL,
        gcd: {
          base: 1000,
        },
      },
      {
        spell: SPELLS.MUTILATE.id,
        category: Abilities.SPELL_CATEGORIES.ROTATIONAL,
        gcd: {
          static: 1000,
        },
      },
      {
{'fraction_non_alphanumeric': 0.10285714285714286, 'fraction_numerical': 0.012063492063492064, 'mean_word_length': 1.7762114537444933, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5390571', 'n_tokens_mistral': 1122, 'n_tokens_neox': 1078, 'n_words': 168}