<commit_before>import SPELLS from 'common/SPELLS';
import { SpellLink } from 'interface';
import PreparationRule from 'parser/shadowlands/modules/features/Checklist/PreparationRule';
import Checklist from 'parser/shared/modules/features/Checklist';
import {
  AbilityRequirementProps,
  ChecklistProps,
} from 'parser/shared/modules/features/Checklist/ChecklistTypes';
import GenericCastEfficiencyRequirement from 'parser/shared/modules/features/Checklist/GenericCastEfficiencyRequirement';
import Requirement from 'parser/shared/modules/features/Checklist/Requirement';
import Rule from 'parser/shared/modules/features/Checklist/Rule';

const ElementalShamanChecklist = ({ combatant, castEfficiency, thresholds }: ChecklistProps) => {
  const AbilityRequirement = (props: AbilityRequirementProps) => (
    <GenericCastEfficiencyRequirement
      castEfficiency={castEfficiency.getCastEfficiencyForSpellId(props.spell)}
      {...props}
    />
  );

  return (
    <Checklist>
      <Rule
        name="Use core abilities as often as possible"
        description={
          <>
            Using your core abilities as often as possible can help raise your dps significantly.
            Some help more than others, but as a general rule of thumb you should be looking to use
            most of your damaging abilities and damage cooldowns as often as possible, unless you
            need to save them for a priority burst phase that is coming up soon.{' '}
            <a
              href="https://stormearthandlava.com/guide/general/priority_list.html"
              target="_blank"
              rel="noopener noreferrer"
            >
              More info.
            </a>
          </>
        }
      >
        {combatant.hasTalent(SPELLS.ASCENDANCE_TALENT_ELEMENTAL.id) && (
          <AbilityRequirement spell={SPELLS.ASCENDANCE_TALENT_ELEMENTAL.id} />
        )}
        {combatant.hasTalent(SPELLS.STORM_ELEMENTAL_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.FIRE_ELEMENTAL.id} />
        )}
        {combatant.hasTalent(SPELLS.STORM_ELEMENTAL_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.STORM_ELEMENTAL_TALENT.id} />
        )}
        {combatant.hasTalent(SPELLS.ICEFURY_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.ICEFURY_TALENT.id} />
        )}
        {combatant.hasTalent(SPELLS.STORMKEEPER_TALENT_ELEMENTAL.id) && (
          <AbilityRequirement spell={SPELLS.STORMKEEPER_TALENT_ELEMENTAL.id} />
        )}
        {combatant.hasTalent(SPELLS.LIQUID_MAGMA_TOTEM_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.LIQUID_MAGMA_TOTEM_TALENT.id} />
        )}
        {combatant.hasTalent(SPELLS.ELEMENTAL_BLAST_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.ELEMENTAL_BLAST_TALENT.id} />
        )}
      </Rule>
      <Rule
        name="Minimize Downtime"
        description={<commit_msg>fix typo with Fire Ele abilityrequirement on Ele Sham checklist<commit_after>import SPELLS from 'common/SPELLS';
import { SpellLink } from 'interface';
import PreparationRule from 'parser/shadowlands/modules/features/Checklist/PreparationRule';
import Checklist from 'parser/shared/modules/features/Checklist';
import {
  AbilityRequirementProps,
  ChecklistProps,
} from 'parser/shared/modules/features/Checklist/ChecklistTypes';
import GenericCastEfficiencyRequirement from 'parser/shared/modules/features/Checklist/GenericCastEfficiencyRequirement';
import Requirement from 'parser/shared/modules/features/Checklist/Requirement';
import Rule from 'parser/shared/modules/features/Checklist/Rule';

const ElementalShamanChecklist = ({ combatant, castEfficiency, thresholds }: ChecklistProps) => {
  const AbilityRequirement = (props: AbilityRequirementProps) => (
    <GenericCastEfficiencyRequirement
      castEfficiency={castEfficiency.getCastEfficiencyForSpellId(props.spell)}
      {...props}
    />
  );

  return (
    <Checklist>
      <Rule
        name="Use core abilities as often as possible"
        description={
          <>
            Using your core abilities as often as possible can help raise your dps significantly.
            Some help more than others, but as a general rule of thumb you should be looking to use
            most of your damaging abilities and damage cooldowns as often as possible, unless you
            need to save them for a priority burst phase that is coming up soon.{' '}
            <a
              href="https://stormearthandlava.com/guide/general/priority_list.html"
              target="_blank"
              rel="noopener noreferrer"
            >
              More info.
            </a>
          </>
        }
      >
        {combatant.hasTalent(SPELLS.ASCENDANCE_TALENT_ELEMENTAL.id) && (
          <AbilityRequirement spell={SPELLS.ASCENDANCE_TALENT_ELEMENTAL.id} />
        )}
        {!combatant.hasTalent(SPELLS.STORM_ELEMENTAL_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.FIRE_ELEMENTAL.id} />
        )}
        {combatant.hasTalent(SPELLS.STORM_ELEMENTAL_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.STORM_ELEMENTAL_TALENT.id} />
        )}
        {combatant.hasTalent(SPELLS.ICEFURY_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.ICEFURY_TALENT.id} />
        )}
        {combatant.hasTalent(SPELLS.STORMKEEPER_TALENT_ELEMENTAL.id) && (
          <AbilityRequirement spell={SPELLS.STORMKEEPER_TALENT_ELEMENTAL.id} />
        )}
        {combatant.hasTalent(SPELLS.LIQUID_MAGMA_TOTEM_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.LIQUID_MAGMA_TOTEM_TALENT.id} />
        )}
        {combatant.hasTalent(SPELLS.ELEMENTAL_BLAST_TALENT.id) && (
          <AbilityRequirement spell={SPELLS.ELEMENTAL_BLAST_TALENT.id} />
        )}
      </Rule>
      <Rule
        name="Minimize Downtime"
        description={
{'fraction_non_alphanumeric': 0.09878027830269713, 'fraction_numerical': 0.0, 'mean_word_length': 2.949796472184532, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 37, 'https://': 2, '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': '5449643', 'n_tokens_mistral': 1866, 'n_tokens_neox': 1797, 'n_words': 310}