class PBFieldNote
  attr_accessor :fieldeffect
  attr_accessor :text
  attr_accessor :elaboration
  attr_accessor :cogwheeltext

  def initialize(fieldeffect, text, elaboration = "", cogwheeltext = "")
    @fieldeffect = fieldeffect
    @text = text + " " # Icon at the end somehow isn't shown unless there is a space after it.
    @elaboration = elaboration
    @cogwheeltext = cogwheeltext
  end
end

def feToStringName(fieldeffect, dig1, dig2 = nil)
  return getMoveName(FIELDEFFECTS.dig(fieldeffect, dig1)) if dig1 == :naturePower
  if dig2.nil?
    return FIELDEFFECTS.dig(fieldeffect, dig1).map { |id| getMoveName(id) }.sort.uniq.join(", ")
  else
    # FIELDEFFECTS.dig(fieldeffect, dig1, dig2).map{|id| puts id}
    return FIELDEFFECTS.dig(fieldeffect, dig1, dig2).map { |id| getMoveName(id) }.sort.uniq.join(", ")
  end
end

### General syntax ########################################################################
# up by x1.5                <icon=fieldUp> <c=green>x1.5</c>
# down by 0.5               <icon=fieldDown> <c=red>x0.5</c>
# green                     <c=green></c>
# red                       <c=red></c>         (actually crimson bc funny) (hi ily)
# orange                    <c=orange></c>
# field general             <icon=field>
# field change              <icon=fieldChange>
# field up                  <icon=fieldUp>
# field down                <icon=fieldDown>
# field plus                <icon=fieldPlus>
# text-to-speech            <icon=fieldPlus,tts=\"and\">
# type boosted              PBFieldNote.new(:ELECTERRAIN,"<icon=typeELECTRIC> attacks <icon=fieldUp> <c=green>x1.5</c> when . . .","...when attacker is grounded."),
# attacks boosted           PBFieldNote.new(:ELECTERRAIN,"Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . . ",FIELDEFFECTS.dig(:ELECTERRAIN, :damageMods, 1.5)),
# attacks weakened          PBFieldNote.new(:ELECTERRAIN,"Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . . ",FIELDEFFECTS.dig(:ELECTERRAIN, :damageMods, 0.5)),

# arguments for PBFieldNote are as followed:
# 1: which field the field note belongs to
# 2: The text that's on screen explaining a field phenomenon
# 3: Elaboration on the field phenomenon if no space was left on screen (optional)
# 4: text that appears to the right which shows what stage of field it happens (optional)

def fieldIDToSym(id)
  return 0 if id == 0 || !id

  return FieldIDToSym[id]
end

def symToFieldID(id)
  return 0 if id == 0 || !id

  fieldId = {
    :ELECTERRAIN => 1,
    :GRASSY => 2,
    :MISTY => 3,
    :DARKCRYSTALCAVERN => 4,
    :CHESS => 5,
    :BIGTOP => 6,
    :BURNING => 7,
    :SWAMP => 8,
    :RAINBOW => 9,
    :CORROSIVE => 10,
    :CORROSIVEMIST => 11,
    :DESERT => 12,
    :ICY => 13,
    :ROCKY => 14,
    :FOREST => 15,
    :SUPERHEATED => 16,
    :FACTORY => 17,
    :SHORTCIRCUIT => 18,
    :WASTELAND => 19,
    :ASHENBEACH => 20,
    :WATERSURFACE => 21,
    :UNDERWATER => 22,
    :CAVE => 23,
    :GLITCH => 24,
    :CRYSTALCAVERN => 25,
    :MURKWATERSURFACE => 26,
    :MOUNTAIN => 27,
    :SNOWYMOUNTAIN => 28,
    :HOLY => 29,
    :MIRROR => 30,
    :FAIRYTALE => 31,
    :DRAGONSDEN => 32,
    :FLOWERGARDEN1 => 33,
    :FLOWERGARDEN2 => 33,
    :FLOWERGARDEN3 => 33,
    :FLOWERGARDEN4 => 33,
    :FLOWERGARDEN5 => 33,
    :STARLIGHT => 34,
    :NEWWORLD => 35,
    :INVERSE => 36,
    :PSYTERRAIN => 37,
  }[id]

  return 0 if fieldId.nil?
  return fieldId
end

def symToFieldIDRMXP # wouldn't fit lol
  return symToFieldID($game_variables[:Forced_Field_Effect])
end

def compileFieldNotes
  File.open("Scripts/" + GAMEFOLDER + "/fieldtext.rb") { |f| eval(f.read) }
  quakemovenames = PBFields::QUAKEMOVES.map { |id| getMoveName(id) }.sort.join(", ")
  all_field_notes = [

    # General notes
    PBFieldNote.new(:INDOOR, "Attacks <icon=fieldUp> <c=green>x1.3</c> when <c=orange>transforming</c> . . .", "...when transforming any field effect."),
    PBFieldNote.new(:INDOOR, "Attacks <icon=fieldUp> <c=green>x1.3</c> when <c=red>destroying</c> . . .", "...when destroying any field effect."),
    PBFieldNote.new(:INDOOR, "Amplifield Rock <icon=fieldPlus,tts=\"plus\"> <c=green>3</c> turns . . .", "...when creating or transforming any field effect."),
    PBFieldNote.new(:INDOOR, "Nature Power <icon=fieldChange> #{feToStringName(:INDOOR, :naturePower)} . . .", "...while no field effect is active."),
    PBFieldNote.new(:INDOOR, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:INDOOR, :mimicry)).upcase}> . . .", "...while no field effect is active."),
    PBFieldNote.new(:INDOOR, "Secret Power effect <icon=fieldChange> <icon=fieldParalyze> . . .", "...while no field effect is active."),
    PBFieldNote.new(:INDOOR, "Splintered Stormshards <c=red>removes</c> . . .", "...any field unless explicitly stated otherwise.\nDoes not get the field destruction damage boost."),

    # Electric Field
    PBFieldNote.new(:ELECTERRAIN, "<c=orange>\"#{FIELDEFFECTS.dig(:ELECTERRAIN, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:ELECTERRAIN, "Grounded Pokémon <icon=fieldChange,tts=\"are\"> <icon=fieldNoSleep>"),
    PBFieldNote.new(:ELECTERRAIN, "<c=green>Created</c> by . . .", "Electric Surge, Electric Terrain (5 turns), Stoked Sparksurfer, Ion Deluge, Plasma Fists (3 turns), when the attacker does not hold an Everstone."),
    PBFieldNote.new(:ELECTERRAIN, "<icon=typeELECTRIC> attacks <icon=fieldUp> <c=green>x1.5</c> when . . .", "...when attacker is grounded."),
    PBFieldNote.new(:ELECTERRAIN, "Certain attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeELECTRIC> . . .", feToStringName(:ELECTERRAIN, :typeMods, :ELECTRIC)),
    PBFieldNote.new(:ELECTERRAIN, "Focus Punch will always <c=red>fail</c>"),
    PBFieldNote.new(:ELECTERRAIN, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Charge, Eerie Impulse"),
    PBFieldNote.new(:ELECTERRAIN, "Magnet Rise lasts <c=green>8</c> turns"),
    PBFieldNote.new(:ELECTERRAIN, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:ELECTERRAIN, :damageMods, 1.5)),
    PBFieldNote.new(:ELECTERRAIN, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", feToStringName(:ELECTERRAIN, :damageMods, 2.0)),
    PBFieldNote.new(:ELECTERRAIN, "<c=green>Activates</c> Surge Surfer"),
    PBFieldNote.new(:ELECTERRAIN, "<c=green>Activates</c> Motor Drive . . .", "...each turn."),
    PBFieldNote.new(:ELECTERRAIN, "<c=red>Disables</c> Comatose"),
    PBFieldNote.new(:ELECTERRAIN, "Slow Start timer <icon=fieldChange,tts=\"increments\"> <c=green>x2</c> per turn"),
    PBFieldNote.new(:ELECTERRAIN, "Galvanize power boost <icon=fieldChange> <c=green>x1.5</c>"),
    PBFieldNote.new(:ELECTERRAIN, "Wild Charge <icon=fieldChange,tts=\"has\"> <c=green>no recoil</c>"),
    PBFieldNote.new(:ELECTERRAIN, "<c=red>Destroyed</c> by these moves . . .", feToStringName(:ELECTERRAIN, :fieldChange, :INDOOR)),
    PBFieldNote.new(:ELECTERRAIN, "Nature Power <icon=fieldChange> #{feToStringName(:ELECTERRAIN, :naturePower)}"),
    PBFieldNote.new(:ELECTERRAIN, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:ELECTERRAIN, :mimicry)).upcase}>"),
    PBFieldNote.new(:ELECTERRAIN, "Secret Power effect <icon=fieldChange> <icon=fieldParalyze>"),
    PBFieldNote.new(:ELECTERRAIN, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Speed and applies Charge to the user."),

    # Grassy Terrain
    PBFieldNote.new(:GRASSY, "<c=orange>\"#{FIELDEFFECTS.dig(:GRASSY, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:GRASSY, "Pokémon <icon=fieldPlus,tts=\"restore\"> <c=green>1/16 HP</c> when . . .", "...when grounded."),
    PBFieldNote.new(:GRASSY, "<c=green>Created</c> by . . .", "Grassy Surge, Grassy Terrain (5 turns), Bloom Doom when not in Forest or Flower Garden fields (3 turns)"),
    PBFieldNote.new(:GRASSY, "<icon=typeGRASS> attacks <icon=fieldUp> <c=green>x1.5</c> when . . .", "...when attacker is grounded."),
    PBFieldNote.new(:GRASSY, "<icon=typeFIRE> attacks <icon=fieldUp> <c=green>x1.5</c> when . . .", "...when target is grounded."),
    PBFieldNote.new(:GRASSY, "<c=green>Activates</c> Grass Pelt"),
    PBFieldNote.new(:GRASSY, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:GRASSY, :damageMods, 1.5)),
    PBFieldNote.new(:GRASSY, "Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . .", feToStringName(:GRASSY, :damageMods, 0.5)),
    PBFieldNote.new(:GRASSY, "Grass Whistle's Accuracy <icon=fieldChange> <c=green>80</c>"),
    PBFieldNote.new(:GRASSY, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Coil, Growth"),
    PBFieldNote.new(:GRASSY, "Nature's Madness damage <icon=fieldChange> <c=green>75 % HP</c>"),
    PBFieldNote.new(:GRASSY, "Floral Healing recovery <icon=fieldChange> <c=green>100 % HP</c>"),
    PBFieldNote.new(:GRASSY, "Becomes <c=orange>Burning Field</c> when . . .", "...when #{feToStringName(:GRASSY, :fieldChange, :BURNING)} is used in the absence of Rain or Water Sport."),
    PBFieldNote.new(:GRASSY, "Becomes <c=orange>Corrosive Field</c> when . . .", "...when #{feToStringName(:GRASSY, :fieldChange, :CORROSIVE)} is used."),
    PBFieldNote.new(:GRASSY, "Nature Power <icon=fieldChange> #{feToStringName(:GRASSY, :naturePower)}"),
    PBFieldNote.new(:GRASSY, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:GRASSY, :mimicry)).upcase}>"),
    PBFieldNote.new(:GRASSY, "Secret Power effect <icon=fieldChange> <icon=fieldSleep>"),
    PBFieldNote.new(:GRASSY, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Defense and applies Ingrain to the user."),

    # Misty Terrain
    PBFieldNote.new(:MISTY, "<c=orange>\"#{FIELDEFFECTS.dig(:MISTY, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:MISTY, "Grounded Pokémon <c=red>immune</c> to status"),
    PBFieldNote.new(:MISTY, "<c=green>Created</c> by . . .", "Misty Surge, Misty Terrain (5 turns), Mist (3 turns), when the attacker does not hold an Everstone."),
    PBFieldNote.new(:MISTY, "<icon=typeDRAGON> attacks <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(:MISTY, "<icon=typeFAIRY> Pokémon's Sp.Def <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:MISTY, "<c=green>Activates</c> Marvel Scale"),
    PBFieldNote.new(:MISTY, "Dry Skin slowly <c=green>restores HP</c>"),
    PBFieldNote.new(:MISTY, "Pixilate power boost <icon=fieldChange> <c=green>x1.5</c>"),
    PBFieldNote.new(:MISTY, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:MISTY, :damageMods, 1.5)),
    PBFieldNote.new(:MISTY, "Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . .", feToStringName(:MISTY, :damageMods, 0.5)),
    PBFieldNote.new(:MISTY, "Soul-Heart <icon=fieldPlus> <c=green>boosts</c> Sp.Def"),
    PBFieldNote.new(:MISTY, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Aromatic Mist, Cosmic Power"),
    PBFieldNote.new(:MISTY, "Sweet Scent <c=red>lowers</c> Def & Sp.Def"),
    PBFieldNote.new(:MISTY, "Wish recovery <icon=fieldChange> <c=green>75 % HP</c>"),
    PBFieldNote.new(:MISTY, "Aqua Ring recovery <icon=fieldChange> <c=green>1/8 HP</c>"),
    PBFieldNote.new(:MISTY, "<c=red>Destroyed</c> by these moves . . .", feToStringName(:MISTY, :fieldChange, :INDOOR)),
    PBFieldNote.new(:MISTY, "Becomes <c=orange>Corrosive Mist</c> when . . .", "...when #{feToStringName(:MISTY, :fieldCounterIncreases, [1, 2])} is used, or when one of these moves is used twice: #{feToStringName(:MISTY, :fieldCounterIncreases, [1, 1])}"),
    PBFieldNote.new(:MISTY, "<c=red>Prevents</c> use of these moves . . .", feToStringName(:MISTY, :damageMods, 0)),
    PBFieldNote.new(:MISTY, "<c=green>Activates</c> Water Compaction when . . .", "...when Pokémon is sent out."),
    PBFieldNote.new(:MISTY, "Nature Power <icon=fieldChange> #{feToStringName(:MISTY, :naturePower)}"),
    PBFieldNote.new(:MISTY, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:MISTY, :mimicry)).upcase}>"),
    PBFieldNote.new(:MISTY, "Secret Power effect <icon=fieldChange> Sp.Atk <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:MISTY, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Special Defense and applies Wish to the user."),

    # Dark Crystal Cavern
    PBFieldNote.new(:DARKCRYSTALCAVERN, "<c=orange>\"#{FIELDEFFECTS.dig(:DARKCRYSTALCAVERN, :fieldMessage)[0]}\"</c>"),
    # PBFieldNote.new(:DARKCRYSTALCAVERN,"<icon=typeDARK> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", feToStringName(:DARKCRYSTALCAVERN, :damageMods, 2.0)),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:DARKCRYSTALCAVERN, :damageMods, 1.5)),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . .", feToStringName(:DARKCRYSTALCAVERN, :damageMods, 0.5)),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "<icon=typeDARK> Pokémon's defenses <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "<icon=typeGHOST> Pokémon's defenses <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Flash's effect <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Dark Void's Accuracy <icon=fieldChange> <c=green>100</c>"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Moonlight recovery <icon=fieldChange> <c=green>75 % HP</c>"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Synthesis/Morning Sun <icon=fieldChange,tts=\"recovery changes to\"> <c=red>25 % HP</c>"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "<c=red>Prevents</c> these moves . . .", "Solar Beam, Solar Blade"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Becomes <c=orange>Crystal Cavern</c> when . . .", "...when the weather is Sunny, for as long as the Sun lasts."),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Becomes a <c=orange>Cave</c> when . . .", "...when #{feToStringName(:DARKCRYSTALCAVERN, :fieldChange, :CAVE)} is used."),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "<c=green>Enables</c> Aurora Veil"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Prism Armor <icon=fieldPlus> <c=green>lowers all damage</c> x0.75"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Shadow Shield <icon=fieldPlus> <c=green>reduces</c> damage . . .", "Shadow Shield reduces damage from all super-effective hits by 25%."),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Nature Power <icon=fieldChange> #{feToStringName(:DARKCRYSTALCAVERN, :naturePower)}"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:DARKCRYSTALCAVERN, :mimicry)).upcase}>"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Secret Power effect <icon=fieldChange> Accuracy <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:DARKCRYSTALCAVERN, "Activates <c=orange>Magical Seed</c> . . .", "Boosts Special Defense and applies Magic Coat to the user."),

    # Chess Field
    PBFieldNote.new(:CHESS, "<c=orange>\"#{FIELDEFFECTS.dig(:CHESS, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:CHESS, "Pokémon are assigned as <c=orange>Pieces</c> . . .", "...based on specific criteria. A Pokémon can only be one Piece."),
    PBFieldNote.new(:CHESS, "<c=orange>Pawn</c> - Sent out first turn of battle", "Overrides all other roles except Queen."),
    PBFieldNote.new(:CHESS, "<c=orange>Rook</c> - Highest stat is Def or Sp.Def"),
    PBFieldNote.new(:CHESS, "<c=orange>Bishop</c> - Highest stat is Atk or Sp.Atk"),
    PBFieldNote.new(:CHESS, "<c=orange>Knight</c> - Highest stat is Speed"),
    PBFieldNote.new(:CHESS, "<c=orange>Queen</c> - Final slot in party", "Overrides all roles. One per team."),
    PBFieldNote.new(:CHESS, "<c=orange>King</c> - Holds King's Rock or lowest HP", "Overrides Knight, Bishop and Rook. One per team."),
    PBFieldNote.new(:CHESS, "<c=orange>Pieces</c> gain the following effects:"),
    PBFieldNote.new(:CHESS, "<c=orange>Pawn</c> - <icon=fieldPlus,tts=\"gains\"> Focus Sash's effect"),
    PBFieldNote.new(:CHESS, "<c=orange>Rook</c> - Def and Sp.Def <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:CHESS, "<c=orange>Bishop</c> - Attack and Sp.Atk <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:CHESS, "<c=orange>Knight</c> - Deals <c=green>3x</c> damage to <c=orange>Queens</c> and . . .", "...and deals 1.25x damage when using a move in a double battle that targets both opponents."),
    PBFieldNote.new(:CHESS, "<c=orange>Queen</c> - Def, Sp.Def <icon=fieldUp,tts=\"boost\">, damage <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CHESS, "<c=orange>King</c> - All attacks <icon=fieldPlus,tts=\"gain\"> 1 priority"),
    PBFieldNote.new(:CHESS, "Certain moves <icon=fieldChange,tts=\"become\"> <c=orange>Chess Attacks</c>", "#{CHESSMOVES.map { |id| getMoveName(id) }.sort.join(", ")}"),
    PBFieldNote.new(:CHESS, "<c=orange>Chess Attacks</c> <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CHESS, "<c=orange>Chess Attacks</c> <icon=fieldPlus,tts=\"gain the\"> <icon=typeROCK>"),
    PBFieldNote.new(:CHESS, "<c=orange>Chess Attacks</c> <icon=fieldUp> <c=green>x2</c> when . . .", "...when the target has Oblivious, Simple, Unaware or Klutz, or is confused."),
    PBFieldNote.new(:CHESS, "<c=orange>Chess Attacks</c> <icon=fieldDown> <c=red>x0.5</c> when . . .", "...when the target has Adaptability, Synchronize, Anticipation or Telepathy."),
    PBFieldNote.new(:CHESS, "Trick Room lasts <c=green>8</c> turns"),
    PBFieldNote.new(:CHESS, "Queenly Majesty damage <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CHESS, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:CHESS, :damageMods, 1.5)),
    PBFieldNote.new(:CHESS, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Calm Mind, Nasty Plot"),
    PBFieldNote.new(:CHESS, "King's Shield <icon=fieldPlus,tts=\"gain\"> <c=green>protection</c> . . .", "King's Shield additionally protects from non-damaging moves."),
    PBFieldNote.new(:CHESS, "King's Shield <icon=fieldPlus> <c=green>lowers</c> Sp.Atk"),
    PBFieldNote.new(:CHESS, "<c=red>Destroyed</c> by these moves . . .", feToStringName(:CHESS, :fieldChange, :INDOOR)),
    PBFieldNote.new(:CHESS, "Nature Power <icon=fieldChange> #{feToStringName(:CHESS, :naturePower)}"),
    PBFieldNote.new(:CHESS, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:CHESS, :mimicry)).upcase}>"),
    PBFieldNote.new(:CHESS, "Secret Power effect <icon=fieldChange> Defense <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:CHESS, "Activates <c=orange>Synthetic Seed</c> . . .", "Boosts Special Attack and applies Magic Coat to the user."),

    # Big Top Arena
    PBFieldNote.new(:BIGTOP, "<c=orange>\"#{FIELDEFFECTS.dig(:BIGTOP, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:BIGTOP, "Certain moves <icon=fieldChange,tts=\"become\"> <c=orange>Striker Moves</c>", "All physical Fighting moves, #{STRIKERMOVES.map { |id| getMoveName(id) }.sort.join(", ")}"),
    PBFieldNote.new(:BIGTOP, "<c=orange>Striker Moves</c> <icon=fieldChange,tts=\"inflict\"> random damage", "Damage rolls set multipliers between x0.5 and x3."),
    PBFieldNote.new(:BIGTOP, "<c=orange>Striker Moves</c> roll <c=green>high</c> when . . .", "...when the attacker has one of these abilities: Sheer Force, Guts, Huge Power, Pure Power"),
    PBFieldNote.new(:BIGTOP, "<c=orange>Striker Moves</c> roll based on Atk stages . . .", "A boosted Attack stat increases the chance of high rolls. Lowered Attack decreases the chance of high rolls, regardless of ability."),
    PBFieldNote.new(:BIGTOP, "Acrobatics <icon=fieldChange,tts=\"is\"> always <c=green>full</c> damage"),
    PBFieldNote.new(:BIGTOP, "Sound-based moves <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:BIGTOP, "Pay Day <icon=fieldUp> <c=green>x2</c> and payout <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:BIGTOP, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:BIGTOP, :damageMods, 1.5)),
    PBFieldNote.new(:BIGTOP, "Encore lasts <c=green>6</c> turns"),
    PBFieldNote.new(:BIGTOP, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Dragon Dance, Quiver Dance, Swords Dance, Feather Dance"),
    PBFieldNote.new(:BIGTOP, "Sing's Accuracy <icon=fieldChange> <c=green>100</c>"),
    PBFieldNote.new(:BIGTOP, "Belly Drum <c=green>boosts</c> Def/Sp.Def"),
    PBFieldNote.new(:BIGTOP, "Spotlight <c=green>boosts</c> Atk/Sp.Atk . . .", "...of both the target and the user."),
    PBFieldNote.new(:BIGTOP, "Teeter Dance <icon=fieldPlus> <c=green>lowers</c> Defense"),
    PBFieldNote.new(:BIGTOP, "Lunar Dance <icon=fieldPlus> <c=green>boosts</c> all stats"),
    PBFieldNote.new(:BIGTOP, "Dancer <c=green>boosts</c> Speed and Sp.Atk . . .", "...when a Dance move is used on its own turn."),
    PBFieldNote.new(:BIGTOP, "Nature Power <icon=fieldChange> #{feToStringName(:BIGTOP, :naturePower)}"),
    PBFieldNote.new(:BIGTOP, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:BIGTOP, :mimicry)).upcase}>"),
    PBFieldNote.new(:BIGTOP, "Secret Power effect <icon=fieldChange> Sp.Def <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:BIGTOP, "Activates <c=orange>Synthetic Seed</c> . . .", "Boosts Attack and applies Helping Hand to the user."),

    # Burning Field
    PBFieldNote.new(:BURNING, "<c=orange>\"#{FIELDEFFECTS.dig(:BURNING, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:BURNING, "End of turn <icon=typeFIRE> <c=orange>damage</c> when . . .", "...when grounded and not Fire type."),
    PBFieldNote.new(:BURNING, "<c=green>Immunity</c> to <c=orange>field damage</c> when . . .", "...when inside Aqua Ring or one of these abilities is active: Flame Body, Flare Boost, Flash Fire, Heatproof, Magma Armor, Water Bubble, Water Veil"),
    PBFieldNote.new(:BURNING, "<c=orange>Field damage</c> <icon=fieldUp,tts=\"boosted\"> when . . .", "...when one of these abilities is active: Fluffy, Grass Pelt, Ice Body, Leaf Guard"),
    PBFieldNote.new(:BURNING, "<c=green>Created</c> by Grass <icon=fieldPlus,tts=\"and\"> Fire Pledge . . .", "...when used in succession, for 4 turns. These can also reset the duration of the field once it is created."),
    PBFieldNote.new(:BURNING, "<icon=typeFIRE> attacks <icon=fieldUp> <c=green>x1.5</c> when . . .", "...when attacker is grounded."),
    PBFieldNote.new(:BURNING, "<icon=typeGRASS> attacks <icon=fieldDown> <c=red>x0.5</c> when . . .", "...when target is grounded."),
    PBFieldNote.new(:BURNING, "<icon=typeICE> attacks <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(:BURNING, "<c=red>Destroyed</c> by these moves . . .", feToStringName(:BURNING, :fieldChange, :INDOOR)),
    PBFieldNote.new(:BURNING, "<c=red>Destroyed</c> by Sand and Rain"),
    PBFieldNote.new(:BURNING, "<c=green>Activates</c> certain abilities . . .", "Blaze, Flare Boost, Flash Fire"),
    PBFieldNote.new(:BURNING, "Will-O-Wisp's Accuracy <icon=fieldChange> <c=green>100</c>"),
    PBFieldNote.new(:BURNING, "Pokémon <icon=fieldChange,tts=\"are\"> <icon=fieldNoFreeze>"),
    PBFieldNote.new(:BURNING, "Smokescreen effect <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:BURNING, "Fire Spin damage <icon=fieldChange> <c=green>1/6 HP</c>"),
    PBFieldNote.new(:BURNING, "Certain attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeFIRE> . . .", feToStringName(:BURNING, :typeMods, :FIRE)),
    PBFieldNote.new(:BURNING, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:BURNING, :damageMods, 1.5)),
    PBFieldNote.new(:BURNING, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", feToStringName(:BURNING, :damageMods, 2.0)),
    PBFieldNote.new(:BURNING, "<c=green>Restores</c> <icon=typeFIRE> after Burn Up"),
    PBFieldNote.new(:BURNING, "Nature Power <icon=fieldChange> #{feToStringName(:BURNING, :naturePower)}"),
    PBFieldNote.new(:BURNING, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:BURNING, :mimicry)).upcase}>"),
    PBFieldNote.new(:BURNING, "Secret Power effect <icon=fieldChange> <icon=fieldBurn>"),
    PBFieldNote.new(:BURNING, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Attack, Special Attack and Speed, but applies Fire Spin to the user."),

    # Swamp Field
    PBFieldNote.new(:SWAMP, "<c=orange>\"#{FIELDEFFECTS.dig(:SWAMP, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:SWAMP, "Pokémon's Speed <icon=fieldDown,tts=\"lowered by one stage\"> each turn"),
    PBFieldNote.new(:SWAMP, "Pokémon <c=red>immune</c> to <c=orange>slow</c> when . . .", "...when airborne or the abilities Quick Feet or Swift Swim are active."),
    PBFieldNote.new(:SWAMP, "<c=green>Created</c> by Water <icon=fieldPlus,tts=\"and\"> Grass Pledge . . .", "...when used in succession, for 4 turns. These can also reset the duration of the field once it is created."),
    PBFieldNote.new(:SWAMP, "Ingrain <c=red>damages</c> user unless . . .", "...unless Poison or Steel type."),
    PBFieldNote.new(:SWAMP, "Dry Skin slowly <c=green>restores HP</c>"),
    PBFieldNote.new(:SWAMP, "Aqua Ring recovery <icon=fieldChange> <c=green>1/8 HP</c>"),
    PBFieldNote.new(:SWAMP, "<icon=typePOISON> attacks <icon=fieldUp> <c=green>x1.5</c> when. . .", "...when target is grounded."),
    PBFieldNote.new(:SWAMP, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:SWAMP, :damageMods, 1.5)),
    PBFieldNote.new(:SWAMP, "Certain attacks <icon=fieldDown> <c=red>x0.25</c> . . .", feToStringName(:SWAMP, :damageMods, 0.25)),
    PBFieldNote.new(:SWAMP, "Certain attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeWATER> . . .", feToStringName(:SWAMP, :typeMods, :WATER)),
    PBFieldNote.new(:SWAMP, "<c=red>Prevents</c> use of these moves . . .", feToStringName(:SWAMP, :damageMods, 0)),
    PBFieldNote.new(:SWAMP, "Sleep Powder's Accuracy <icon=fieldChange> <c=green>100</c>"),
    PBFieldNote.new(:SWAMP, "<icon=fieldSleep> Pokémon <c=red>damaged</c> each turn"),
    PBFieldNote.new(:SWAMP, "Gooey effect <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:SWAMP, "<c=green>Activates</c> Water Compaction when. . .", "...when grounded, each turn."),
    PBFieldNote.new(:SWAMP, "Strength Sap recovery <icon=fieldUp> <c=green>30 %</c>"),
    PBFieldNote.new(:SWAMP, "Nature Power <icon=fieldChange> #{feToStringName(:SWAMP, :naturePower)}"),
    PBFieldNote.new(:SWAMP, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:SWAMP, :mimicry)).upcase}>"),
    PBFieldNote.new(:SWAMP, "Secret Power effect <icon=fieldChange> Speed <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:SWAMP, "Activates <c=orange>Telluric Seed</c> . . .", "Boosts Defense and Special Defense and applies Ingrain to the user."),

    # Rainbow Field
    PBFieldNote.new(:RAINBOW, "<c=orange>\"#{FIELDEFFECTS.dig(:RAINBOW, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:RAINBOW, "Secondary effect chance <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:RAINBOW, "<c=green>Created</c> by Fire <icon=fieldPlus,tts=\"and\"> Water Pledge . . .", "...when used in succession, for 4 turns. These can also reset the duration of the field once it is created."),
    PBFieldNote.new(:RAINBOW, "<c=green>Created</c> by Sun <icon=fieldPlus,tts=\"and\"> Rain . . .", "These can also reset the duration of the field once it is created."),
    PBFieldNote.new(:RAINBOW, "Cloud Nine slowly <c=green>boosts</c> random stats"),
    PBFieldNote.new(:RAINBOW, "<c=green>Activates</c> Marvel Scale"),
    PBFieldNote.new(:RAINBOW, "Wonder Skin always <c=green>activates</c>"),
    PBFieldNote.new(:RAINBOW, "Special <icon=typeNORMAL> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:RAINBOW, "Special <icon=typeNORMAL> attacks <icon=fieldPlus,tts=\"gain\"> <icon=typeQMARKS> . . .", "Special Normal attacks gain a random type."),
    PBFieldNote.new(:RAINBOW, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:RAINBOW, :damageMods, 1.5)),
    PBFieldNote.new(:RAINBOW, "Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . .", feToStringName(:RAINBOW, :damageMods, 0.5)),
    PBFieldNote.new(:RAINBOW, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Cosmic Power, Meditate"),
    PBFieldNote.new(:RAINBOW, "Certain attacks <icon=fieldChange,tts=\"have\"> <c=green>no charge turn</c> . . .", "Solar Beam, Solar Blade"),
    PBFieldNote.new(:RAINBOW, "Wish recovery <icon=fieldChange> <c=green>75 % HP</c>"),
    PBFieldNote.new(:RAINBOW, "Nightmare and Bad Dreams <c=red>fail</c>"),
    PBFieldNote.new(:RAINBOW, "<icon=fieldSleep> Pokémon <c=green>recover</c> each turn"),
    PBFieldNote.new(:RAINBOW, "Sonic Boom damage <icon=fieldChange> <c=green>140</c>"),
    PBFieldNote.new(:RAINBOW, "<c=red>Destroyed</c> when . . .", "...when Sand or Hail are in effect, or Light That Burns The Sky is used."),
    PBFieldNote.new(:RAINBOW, "<c=green>Enables</c> Aurora Veil"),
    PBFieldNote.new(:RAINBOW, "Soul-Heart <icon=fieldPlus> <c=green>boosts</c> Sp.Def"),
    PBFieldNote.new(:RAINBOW, "Prism Armor <icon=fieldPlus> <c=green>lowers all damage</c> x0.75"),
    PBFieldNote.new(:RAINBOW, "Nature Power <icon=fieldChange> #{feToStringName(:RAINBOW, :naturePower)}"),
    PBFieldNote.new(:RAINBOW, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:RAINBOW, :mimicry)).upcase}>"),
    PBFieldNote.new(:RAINBOW, "Secret Power effect <icon=fieldChange> <icon=fieldAllStat> <icon=fieldSleep>"),
    PBFieldNote.new(:RAINBOW, "Activates <c=orange>Magical Seed</c> . . .", "Boosts Special Attack and applies Wish to the user."),

    # Corrosive Field
    PBFieldNote.new(:CORROSIVE, "<c=orange>\"#{FIELDEFFECTS.dig(:CORROSIVE, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:CORROSIVE, "Deals <icon=typePOISON> <c=orange>hazard damage</c> when . . .", "...when grounded."),
    PBFieldNote.new(:CORROSIVE, "No <c=orange>hazard damage</c> when . . .", "...when Poison or Steel type, or one of these abilities is active: Immunity, Poison Heal, Toxic Boost, Wonder Guard"),
    PBFieldNote.new(:CORROSIVE, "Ingrain <c=red>damages</c> user unless . . .", "...unless Poison or Steel type."),
    PBFieldNote.new(:CORROSIVE, "Grass Pelt <c=red>damages</c> user unless . . .", "...unless Poison or Steel type."),
    PBFieldNote.new(:CORROSIVE, "<c=green>Activates</c> certain abilities when . . .", "...when grounded, activates Poison Heal, Toxic Boost and Merciless."),
    PBFieldNote.new(:CORROSIVE, "<icon=typeGRASS> attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typePOISON>"),
    PBFieldNote.new(:CORROSIVE, "Certain attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typePOISON> . . .", feToStringName(:CORROSIVE, :typeMods, :POISON)),
    PBFieldNote.new(:CORROSIVE, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:CORROSIVE, :damageMods, 1.5)),
    PBFieldNote.new(:CORROSIVE, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", feToStringName(:CORROSIVE, :damageMods, 2.0)),
    PBFieldNote.new(:CORROSIVE, "Acid Armor's effect <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:CORROSIVE, "<c=green>Activates</c> Venom Drench"),
    PBFieldNote.new(:CORROSIVE, "<c=green>Activates</c> Venoshock"),
    PBFieldNote.new(:CORROSIVE, "Certain moves' Accuracy <icon=fieldChange> <c=green>100</c> . . .", feToStringName(:CORROSIVE, :accuracyMods, 100)),
    PBFieldNote.new(:CORROSIVE, "Grounded <icon=fieldSleep> Pokémon <c=red>damaged</c> . . .", "...unless Poison or Steel type, or one of these abilities is active: Immunity, Poison Heal, Toxic Boost, Wonder Guard"),
    PBFieldNote.new(:CORROSIVE, "Toxic Spikes <c=red>can't</c> be absorbed"),
    PBFieldNote.new(:CORROSIVE, "Becomes <c=orange>Grassy Terrain</c> when . . .", "...when #{feToStringName(:CORROSIVE, :fieldChange, :GRASSY)} is used."),
    PBFieldNote.new(:CORROSIVE, "Corrosion damage <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CORROSIVE, "Floral Healing <icon=fieldPlus,tts=\"additionally inflicts the\"> <icon=fieldPoisonStatus>"),
    PBFieldNote.new(:CORROSIVE, "Nature Power <icon=fieldChange> #{feToStringName(:CORROSIVE, :naturePower)}"),
    PBFieldNote.new(:CORROSIVE, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:CORROSIVE, :mimicry)).upcase}>"),
    PBFieldNote.new(:CORROSIVE, "Secret Power effect <icon=fieldChange> <icon=fieldPoisonStatus>"),
    PBFieldNote.new(:CORROSIVE, "Activates <c=orange>Telluric Seed</c> . . .", "Applies Baneful Bunker to the user."),

    # Corrosive Mist Field
    PBFieldNote.new(:CORROSIVEMIST, "<c=orange>\"#{FIELDEFFECTS.dig(:CORROSIVEMIST, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:CORROSIVEMIST, "All Pokémon get <icon=fieldPoisonStatus> each turn"),
    PBFieldNote.new(:CORROSIVEMIST, "Aqua Ring <c=red>damages</c> user unless . . .", "...unless Poison or Steel type."),
    PBFieldNote.new(:CORROSIVEMIST, "Dry Skin <c=red>damages</c> user unless . . .", "...unless Steel type. Poison types are healed instead."),
    PBFieldNote.new(:CORROSIVEMIST, "<c=green>Activates</c> certain abilities . . .", "Poison Heal, Toxic Boost, Merciless"),
    PBFieldNote.new(:CORROSIVEMIST, "Certain attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typePOISON> . . .", "All special Flying moves, " + feToStringName(:CORROSIVEMIST, :typeMods, :POISON)),
    PBFieldNote.new(:CORROSIVEMIST, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:CORROSIVEMIST, :damageMods, 1.5)),
    PBFieldNote.new(:CORROSIVEMIST, "Acid Armor's effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c>"),
    PBFieldNote.new(:CORROSIVEMIST, "Smokescreen effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c>"),
    PBFieldNote.new(:CORROSIVEMIST, "<c=green>Activates</c> Venom Drench"),
    PBFieldNote.new(:CORROSIVEMIST, "<c=green>Activates</c> Venoshock"),
    PBFieldNote.new(:CORROSIVEMIST, "Toxic's Accuracy <icon=fieldChange> <c=green>100</c>"),
    PBFieldNote.new(:CORROSIVEMIST, "Aftermath damage <icon=fieldChange> <c=green>50 % HP</c>"),
    PBFieldNote.new(:CORROSIVEMIST, "<icon=typeFIRE> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CORROSIVEMIST, "Corrosion damage <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CORROSIVEMIST, "Floral Healing <icon=fieldPlus,tts=\"additionally inflicts the\"> <icon=fieldPoisonStatus>"),
    PBFieldNote.new(:CORROSIVEMIST, "<c=red>Destroyed</c> by these moves . . .", feToStringName(:CORROSIVEMIST, :fieldChange, :INDOOR)),
    PBFieldNote.new(
      :CORROSIVEMIST,
      "All Pokémon <icon=fieldFaint> when . . .",
      "...when one of these moves is used in the absence of Damp: " + (PBFields::IGNITEMOVES + [:SELFDESTRUCT, :EXPLOSION]).map { |id| getMoveName(id) }.sort.join(", ") + ".\nPokémon behind applicable protect moves, or having Flash Fire are immune to the damage."
    ),
    PBFieldNote.new(:CORROSIVEMIST, "Becomes <c=orange>Corrosive Field</c> when . . .", "...when #{feToStringName(:CORROSIVEMIST, :fieldChange, :CORROSIVE)} is used."),
    PBFieldNote.new(:CORROSIVEMIST, "Becomes <c=orange>Misty Terrain</c> when . . .", "...when #{feToStringName(:CORROSIVEMIST, :fieldChange, :MISTY)} is used."),
    PBFieldNote.new(:CORROSIVEMIST, "Nature Power <icon=fieldChange> #{feToStringName(:CORROSIVEMIST, :naturePower)}"),
    PBFieldNote.new(:CORROSIVEMIST, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:CORROSIVEMIST, :mimicry)).upcase}>"),
    PBFieldNote.new(:CORROSIVEMIST, "Secret Power effect <icon=fieldChange> <icon=fieldPoisonStatus>"),
    PBFieldNote.new(:CORROSIVEMIST, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Attack and Special Attack but badly poisons the user."),

    # Desert Field
    PBFieldNote.new(:DESERT, "<c=orange>\"#{FIELDEFFECTS.dig(:DESERT, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:DESERT, "<icon=typeGROUND> Pokémon's Sp.Def <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:DESERT, "<c=green>Activates </c> certain abilities . . .", "Sand Force, Sand Rush, Sand Veil"),
    PBFieldNote.new(:DESERT, "Sun and Sand last <c=green>8</c> turns"),
    PBFieldNote.new(:DESERT, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:DESERT, :damageMods, 1.5)),
    PBFieldNote.new(:DESERT, "Sand Attack's effect <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:DESERT, "Dry Skin <c=red>damages</c> user"),
    PBFieldNote.new(:DESERT, "Sand Tomb damage <icon=fieldChange> <c=green>1/6 HP</c>"),
    PBFieldNote.new(:DESERT, "<icon=typeWATER> attacks <icon=fieldDown> <c=red>x0.5</c> when . . .", "...when attacker is grounded."),
    PBFieldNote.new(:DESERT, "<icon=typeELECTRIC> attacks <icon=fieldDown> <c=red>x0.5</c> when . . .", "...when target is grounded."),
    PBFieldNote.new(:DESERT, "Shore Up recovery <icon=fieldChange> <c=green>66 % HP</c>"),
    PBFieldNote.new(:DESERT, "Nature Power <icon=fieldChange> #{feToStringName(:DESERT, :naturePower)}"),
    PBFieldNote.new(:DESERT, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:DESERT, :mimicry)).upcase}>"),
    PBFieldNote.new(:DESERT, "Secret Power effect <icon=fieldChange> Accuracy <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:DESERT, "Activates <c=orange>Telluric Seed</c> . . .", "Boosts Defense, Special Defense and Speed, but applies Sand Tomb to the user."),

    # Icy Field
    PBFieldNote.new(:ICY, "<c=orange>\"#{FIELDEFFECTS.dig(:ICY, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:ICY, "Certain moves <c=green>boost</c> Speed when . . .", "...when attacker is grounded, these moves boost Speed: All attacking physical contact priority moves, Defense Curl, Feint, Lunge, Ice Ball, Rollout, Steamroller"),
    PBFieldNote.new(:ICY, "<icon=typeICE> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:ICY, "<icon=typeFIRE> attacks <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(:ICY, "Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . .", feToStringName(:ICY, :damageMods, 0.5)),
    PBFieldNote.new(:ICY, "<icon=typeROCK> attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeICE>"),
    PBFieldNote.new(:ICY, "<icon=typeICE> Pokémon's Defense <icon=fieldUp> <c=green>x1.5</c> when . . .", "...when Hail is up."),
    PBFieldNote.new(:ICY, "<icon=fieldBurn> damage <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(
      :ICY,
      "Becomes <c=orange>Water Surface</c> when . . .",
      "...when #{feToStringName(:ICY, :fieldCounterIncreases, [1, 2])} is used, or if Water Surface is already under the ice and #{quakemovenames} is used. Also turns into Water Surface if Scald or Steam Eruption is used twice."
    ),
    PBFieldNote.new(:ICY, "<c=green>Creates</c> a layer of spikes when . . .", "...when one of these moves is used and Water Surface isn't beneath the ice: #{quakemovenames}."),
    PBFieldNote.new(:ICY, "Hail lasts <c=green>8</c> turns"),
    PBFieldNote.new(:ICY, "<c=green>Activates</c> certain abilities . . .", "Ice Body, Snow Cloak, Slush Rush"),
    PBFieldNote.new(:ICY, "Refrigerate power boost <icon=fieldChange> <c=green>x1.5</c>"),
    PBFieldNote.new(:ICY, "<c=green>Enables</c> Aurora Veil"),
    PBFieldNote.new(:ICY, "Liquid Voice <icon=fieldChange,tts=\"type change becomes\"> <icon=typeICE>"),
    PBFieldNote.new(:ICY, "Nature Power <icon=fieldChange> #{feToStringName(:ICY, :naturePower)}"),
    PBFieldNote.new(:ICY, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:ICY, :mimicry)).upcase}>"),
    PBFieldNote.new(:ICY, "Secret Power effect <icon=fieldChange> <icon=fieldFreeze>"),
    PBFieldNote.new(:ICY, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Speed by two stages, but damages the user with Spikes."),

    # Rocky Field
    PBFieldNote.new(:ROCKY, "<c=orange>\"#{FIELDEFFECTS.dig(:ROCKY, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:ROCKY, "Pokémon can <c=orange>dodge</c> when . . .", "...when Defense is increased or Substitute is up, attacks that can be blocked by Bulletproof can be dodged behind rocks."),
    PBFieldNote.new(:ROCKY, "Missing physical contact moves <c=orange>recoil</c> . . .", "Missing a contact move causes 1/8 max HP recoil damage unless user has Rock Head."),
    PBFieldNote.new(:ROCKY, "Stealth Rock damage <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:ROCKY, "Flinched Pokémon take <c=orange>recoil</c> . . .", "...unless they have Steadfast or Sturdy."),
    PBFieldNote.new(:ROCKY, "<c=green>Prevents</c> flinches when . . .", "...when Defense is increased."),
    PBFieldNote.new(:ROCKY, "Certain attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeROCK> . . .", feToStringName(:ROCKY, :typeMods, :ROCK)),
    PBFieldNote.new(:ROCKY, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:ROCKY, :damageMods, 1.5)),
    PBFieldNote.new(:ROCKY, "<icon=typeROCK> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:ROCKY, "Rock Smash <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:ROCKY, "Rock Polish's effect <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:ROCKY, "Long Reach accuracy <icon=fieldDown> <c=red>x0.9</c>"),
    PBFieldNote.new(:ROCKY, "Nature Power <icon=fieldChange> #{feToStringName(:ROCKY, :naturePower)}"),
    PBFieldNote.new(:ROCKY, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:ROCKY, :mimicry)).upcase}>"),
    PBFieldNote.new(:ROCKY, "Secret Power effect <icon=fieldChange> Flinches"),
    PBFieldNote.new(:ROCKY, "Activates <c=orange>Telluric Seed</c> . . .", "Boosts Defense, but damages the user with Stealth Rocks."),

    # Forest Field
    PBFieldNote.new(:FOREST, "<c=orange>\"#{FIELDEFFECTS.dig(:FOREST, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:FOREST, "Effect Spore chance <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:FOREST, "<c=green>Activates</c> certain abilities . . .", "Grass Pelt, Leaf Guard, Overgrow, Swarm"),
    PBFieldNote.new(:FOREST, "<icon=typeGRASS> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:FOREST, "Special <icon=typeBUG> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:FOREST, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:FOREST, :damageMods, 1.5)),
    PBFieldNote.new(:FOREST, "Cut <icon=fieldUp> <c=green>x2</c> vs <icon=typeGRASS>"),
    PBFieldNote.new(:FOREST, "Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . .", feToStringName(:FOREST, :damageMods, 0.5)),
    PBFieldNote.new(:FOREST, "Sap Sipper slowly <c=green>restores HP</c>"),
    PBFieldNote.new(:FOREST, "Ingrain recovery <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:FOREST, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Defend Order, Growth"),
    PBFieldNote.new(:FOREST, "Heal Order recovery <icon=fieldChange> <c=green>66 % HP</c>"),
    PBFieldNote.new(:FOREST, "Sticky Web effect <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:FOREST, "Long Reach accuracy <icon=fieldDown> <c=red>x0.9</c>"),
    PBFieldNote.new(:FOREST, "Strength Sap recovery <icon=fieldUp> <c=green>30 %</c>"),
    PBFieldNote.new(:FOREST, "Nature's Madness damage <icon=fieldChange> <c=green>75 % HP</c>"),
    PBFieldNote.new(:FOREST, "Infestation damage <icon=fieldChange> <c=green>1/6 HP</c>"),
    PBFieldNote.new(:FOREST, "Forest's Curse <icon=fieldPlus,tts=\"additionally inflicts the\"> Curse effect"),
    PBFieldNote.new(:FOREST, "Becomes <c=orange>Burning Field</c> when . . .", "...when #{feToStringName(:FOREST, :fieldChange, :BURNING)} is used in the absence of Rain or Water Sport."),
    PBFieldNote.new(:FOREST, "Nature Power <icon=fieldChange> #{feToStringName(:FOREST, :naturePower)}"),
    PBFieldNote.new(:FOREST, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:FOREST, :mimicry)).upcase}>"),
    PBFieldNote.new(:FOREST, "Secret Power effect <icon=fieldChange> <icon=fieldSleep>"),
    PBFieldNote.new(:FOREST, "Activates <c=orange>Telluric Seed</c> . . .", "Applies Spiky Shield to the user."),

    # Super-Heated Field
    PBFieldNote.new(:SUPERHEATED, "<c=orange>\"#{FIELDEFFECTS.dig(:SUPERHEATED, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:SUPERHEATED, "<icon=typeFIRE> attacks <icon=fieldUp> <c=green>x1.1</c>"),
    PBFieldNote.new(:SUPERHEATED, "<icon=typeICE> attacks <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(:SUPERHEATED, "<icon=typeWATER> attacks <icon=fieldDown> <c=red>x0.9</c>"),
    PBFieldNote.new(:SUPERHEATED, "Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . .", feToStringName(:SUPERHEATED, :damageMods, 0.5)),
    PBFieldNote.new(
      :SUPERHEATED,
      "Certain moves generate <c=orange>steam</c> . . .",
      "#{feToStringName(:SUPERHEATED, :moveEffects, "@battle.fieldAccuracyDrop")} generate steam, lowering all active Pokémon's Accuracy."
    ),
    PBFieldNote.new(:SUPERHEATED, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:SUPERHEATED, :damageMods, 1.5)),
    PBFieldNote.new(:SUPERHEATED, "Becomes <c=orange>Burning Field</c> when . . .", "...when #{feToStringName(:SUPERHEATED, :fieldChange, :BURNING)} is used in the absence of Rain or Water Sport."),
    PBFieldNote.new(:SUPERHEATED, "<c=red>Destroyed</c> by these moves . . .", feToStringName(:SUPERHEATED, :fieldChange, :INDOOR)),
    PBFieldNote.new(:SUPERHEATED, "Hail is <c=red>terminated</c>"),
    PBFieldNote.new(:SUPERHEATED, "Attacks fatigue after <c=red>1</c> turn . . .", "Applies to Outrage, Petal Dance and Thrash."),
    PBFieldNote.new(:SUPERHEATED, "Nature Power <icon=fieldChange> #{feToStringName(:SUPERHEATED, :naturePower)}"),
    PBFieldNote.new(:SUPERHEATED, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:SUPERHEATED, :mimicry)).upcase}>"),
    PBFieldNote.new(:SUPERHEATED, "Secret Power effect <icon=fieldChange> <icon=fieldBurn>"),
    PBFieldNote.new(:SUPERHEATED, "Activates <c=orange>Telluric Seed</c> . . .", "Boosts Defense and applies Shell Trap to the user."),

    # Factory Field
    PBFieldNote.new(:FACTORY, "<c=orange>\"#{FIELDEFFECTS.dig(:FACTORY, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:FACTORY, "<icon=typeELECTRIC> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:FACTORY, "Motor Drive boost <icon=fieldUp,tts=\"increased to\"> <c=green>x2</c>"),
    PBFieldNote.new(:FACTORY, "Download boost <icon=fieldUp,tts=\"increased to\"> <c=green>x1.5</c>"),
    PBFieldNote.new(:FACTORY, "Technician applies up to BP <c=green>80</c>"),
    PBFieldNote.new(:FACTORY, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:FACTORY, :damageMods, 1.5)),
    PBFieldNote.new(:FACTORY, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", feToStringName(:FACTORY, :damageMods, 2.0)),
    PBFieldNote.new(:FACTORY, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Autotomize, Iron Defense, Metal Sound, Shift Gear"),
    PBFieldNote.new(:FACTORY, "Magnet Rise lasts <c=green>8</c> turns"),
    PBFieldNote.new(:FACTORY, "Becomes <c=orange>Short-Circuit</c> when . . .", "...when #{feToStringName(:FACTORY, :fieldChange, :SHORTCIRCUIT)} is used."),
    PBFieldNote.new(:FACTORY, "Gear Up effect <icon=fieldUp,tts=\"doubled\"> <c=green>x2</c>"),
    PBFieldNote.new(:FACTORY, "Galvanize power boost <icon=fieldChange> <c=green>x1.5</c>"),
    PBFieldNote.new(:FACTORY, "Steelworker power boost <icon=fieldChange> <c=green>x2</c>"),
    PBFieldNote.new(:FACTORY, "Nature Power <icon=fieldChange> #{feToStringName(:FACTORY, :naturePower)}"),
    PBFieldNote.new(:FACTORY, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:FACTORY, :mimicry)).upcase}>"),
    PBFieldNote.new(:FACTORY, "Secret Power effect <icon=fieldChange> Attack <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:FACTORY, "Activates <c=orange>Synthetic Seed</c> . . .", "Boosts Special Attack and applies Laser Focus to the user."),

    # Short-Circuit Field
    PBFieldNote.new(:SHORTCIRCUIT, "<c=orange>\"#{FIELDEFFECTS.dig(:SHORTCIRCUIT, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:SHORTCIRCUIT, "Static chance <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:SHORTCIRCUIT, "Volt Absorb slowly <c=green>restores HP</c>"),
    PBFieldNote.new(:SHORTCIRCUIT, "<c=green>Activates</c> Plus and Minus"),
    PBFieldNote.new(:SHORTCIRCUIT, "<icon=typeELECTRIC> attacks <icon=fieldChange,tts=\"inflict\"> variable damage", "Damage rolls set multipliers between x0.5 and x2 in a specific repeating pattern."),
    PBFieldNote.new(:SHORTCIRCUIT, "Certain attacks <icon=fieldUp> <c=green>x1.3</c> . . .", feToStringName(:SHORTCIRCUIT, :damageMods, 1.3)),
    PBFieldNote.new(:SHORTCIRCUIT, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:SHORTCIRCUIT, :damageMods, 1.5)),
    PBFieldNote.new(:SHORTCIRCUIT, "Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . .", feToStringName(:SHORTCIRCUIT, :damageMods, 0.5)),
    PBFieldNote.new(:SHORTCIRCUIT, "Certain attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeELECTRIC> . . .", feToStringName(:SHORTCIRCUIT, :typeMods, :ELECTRIC)),
    PBFieldNote.new(:SHORTCIRCUIT, "Becomes <c=orange>Factory Field</c> when . . .", "...when #{feToStringName(:SHORTCIRCUIT, :fieldChange, :FACTORY)} is used."),
    PBFieldNote.new(:SHORTCIRCUIT, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Flash, Metal Sound"),
    PBFieldNote.new(:SHORTCIRCUIT, "Zap Cannon's Accuracy <icon=fieldChange> <c=green>80</c>"),
    PBFieldNote.new(:SHORTCIRCUIT, "Magnet Rise lasts for <c=green>8</c> turns"),
    PBFieldNote.new(:SHORTCIRCUIT, "<c=green>Activates</c> Surge Surfer"),
    PBFieldNote.new(:SHORTCIRCUIT, "Galvanize power boost <icon=fieldChange> <c=green>x2</c>"),
    PBFieldNote.new(:SHORTCIRCUIT, "Steelworker <icon=fieldPlus,tts=\"additionally works with the\"> <icon=typeELECTRIC>"),
    PBFieldNote.new(:SHORTCIRCUIT, "Nature Power <icon=fieldChange> #{feToStringName(:SHORTCIRCUIT, :naturePower)}"),
    PBFieldNote.new(:SHORTCIRCUIT, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:SHORTCIRCUIT, :mimicry)).upcase}>"),
    PBFieldNote.new(:SHORTCIRCUIT, "Secret Power effect <icon=fieldChange> <icon=fieldParalyze>"),
    PBFieldNote.new(:SHORTCIRCUIT, "Activates <c=orange>Synthetic Seed</c> . . .", "Boosts Special Defense and applies Magnet Rise to the user."),

    # Wasteland
    PBFieldNote.new(:WASTELAND, "<c=orange>\"#{FIELDEFFECTS.dig(:WASTELAND, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(
      :WASTELAND,
      "Entry hazards are <c=orange>consumed</c> . . .",
      "Consumed hazards return at the end of the turn, returning a special effect to the side they were on:\nStealth Rocks deal type-scaling Rock damage double the normal effect to Pokémon.\nSpikes deal 33% max HP to grounded Pokémon.\nToxic Spikes deal 12.5% max HP to grounded non-Poison/Steel types, and inflict poison.\nSticky Web severely lowers Pokémon's Speed."
    ),
    PBFieldNote.new(:WASTELAND, "Certain attacks <icon=fieldUp> <c=green>x1.2</c> . . .", feToStringName(:WASTELAND, :damageMods, 1.2)),
    PBFieldNote.new(:WASTELAND, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:WASTELAND, :damageMods, 1.5)),
    PBFieldNote.new(:WASTELAND, "Certain attacks <icon=fieldDown> <c=red>x0.25</c> . . .", feToStringName(:WASTELAND, :damageMods, 0.25)),
    PBFieldNote.new(:WASTELAND, "Certain attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typePOISON> . . .", feToStringName(:WASTELAND, :typeMods, :POISON)),
    PBFieldNote.new(
      :WASTELAND,
      "Certain moves <icon=fieldPlus,tts=\"inflict a\"> <icon=fieldAllStat> . . .",
      "Acid Downpour, Gunk Shot, Octazooka, Sludge, Sludge Bomb and Sludge Wave inflict a random status unless the target has Poison or Steel type, or one of these abilities: Immunity, Poison Heal, Toxic Boost"
    ),
    PBFieldNote.new(:WASTELAND, "Certain abilities' chance <icon=fieldUp> <c=green>x2</c>", "Effect Spore, Poison Point, Stench"),
    PBFieldNote.new(:WASTELAND, "Liquid Ooze damage <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:WASTELAND, "<c=green>Activates</c> certain abilities when . . .", "...when grounded, activates Poison Heal, Toxic Boost and Merciless."),
    PBFieldNote.new(:WASTELAND, "Gooey effect <icon=fieldPlus,tts=\"additionally inflicts the\"> <icon=fieldPoisonStatus>"),
    PBFieldNote.new(:WASTELAND, "<c=green>Activates</c> Venom Drench and Venoshock"),
    PBFieldNote.new(:WASTELAND, "Spit Up <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:WASTELAND, "Swallow <icon=fieldUp> <c=green>x2</c> <icon=fieldPlus> <c=green>cures</c> when max stack"),
    PBFieldNote.new(:WASTELAND, "Leech Seed effect <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:WASTELAND, "Corrosion attacks <icon=fieldPlus,tts=\"additionally inflict a\"> <icon=fieldAllStat>"),
    PBFieldNote.new(:WASTELAND, "Nature Power <icon=fieldChange> #{feToStringName(:WASTELAND, :naturePower)}"),
    PBFieldNote.new(:WASTELAND, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:WASTELAND, :mimicry)).upcase}>"),
    PBFieldNote.new(:WASTELAND, "Secret Power effect <icon=fieldChange> <icon=fieldAllStat>"),
    PBFieldNote.new(:WASTELAND, "Activates <c=orange>Telluric Seed</c> . . .", "Boosts Attack and Special Attack and lays Stealth Rocks on both sides of the battle."),

    # Ashen Beach
    PBFieldNote.new(:ASHENBEACH, "<c=orange>\"#{FIELDEFFECTS.dig(:ASHENBEACH, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:ASHENBEACH, "Certain attacks stir up <c=orange>ash</c> . . .", "All special Flying attacks, Fire Spin, Leaf Tornado, Razor Wind, Twister and Whirlpool stir up ash, lowering all active Pokémon's Accuracy."),
    PBFieldNote.new(:ASHENBEACH, "<icon=typeFIGHTING> Pokémon or Pokémon with . . .", " ...with Inner Focus can't get confused."),
    PBFieldNote.new(:ASHENBEACH, "Accuracy/Evasion <c=red>ignored</c> when . . .", "...when the target does not have Unnerve, and one of these abilities is active: Inner Focus, Own Tempo, Pure Power, Sand Veil, Steadfast"),
    PBFieldNote.new(:ASHENBEACH, "<c=green>Activates</c> certain abilities . . .", "Sand Force, Sand Rush, Sand Veil"),
    PBFieldNote.new(:ASHENBEACH, "Zen Mode <c=green>always active</c>"),
    PBFieldNote.new(:ASHENBEACH, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Calm Mind, Kinesis, Meditate, Sand Attack"),
    PBFieldNote.new(:ASHENBEACH, "Sand lasts <c=green>8</c> turns"),
    PBFieldNote.new(:ASHENBEACH, "Psych-Up <icon=fieldPlus> <c=green>cures</c> status"),
    PBFieldNote.new(:ASHENBEACH, "Focus Energy's effect <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:ASHENBEACH, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", feToStringName(:ASHENBEACH, :damageMods, 2.0)),
    PBFieldNote.new(:ASHENBEACH, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:ASHENBEACH, :damageMods, 1.5)),
    PBFieldNote.new(:ASHENBEACH, "Certain attacks <icon=fieldUp> <c=green>x1.3</c> . . .", feToStringName(:ASHENBEACH, :damageMods, 1.3)),
    PBFieldNote.new(:ASHENBEACH, "Psychic <icon=fieldUp> <c=green>x1.2</c>"),
    PBFieldNote.new(:ASHENBEACH, "Strength <icon=fieldChange> <icon=typeFIGHTING>/<icon=typePSYCHIC>"),
    PBFieldNote.new(:ASHENBEACH, "Sand Tomb <icon=fieldPlus> <c=green>lowers</c> Accuracy"),
    PBFieldNote.new(:ASHENBEACH, "Water Compaction <icon=fieldPlus> <c=green>boosts</c> Sp.Def"),
    PBFieldNote.new(:ASHENBEACH, "Focus Blasts's Accuracy <icon=fieldChange> <c=green>90</c>"),
    PBFieldNote.new(:ASHENBEACH, "Shore Up recovery <icon=fieldChange> <c=green>100 % HP</c>"),
    PBFieldNote.new(:ASHENBEACH, "Shell Bell recovery <icon=fieldChange> <c=green>25 %</c> damage dealt"),
    PBFieldNote.new(:ASHENBEACH, "Nature Power <icon=fieldChange> #{feToStringName(:ASHENBEACH, :naturePower)}"),
    PBFieldNote.new(:ASHENBEACH, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:ASHENBEACH, :mimicry)).upcase}>"),
    PBFieldNote.new(:ASHENBEACH, "Secret Power effect <icon=fieldChange> Accuracy <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:ASHENBEACH, "Activates <c=orange>Telluric Seed</c> . . .", "Applies Focus Energy to the user."),

    # Water Surface
    PBFieldNote.new(:WATERSURFACE, "<c=orange>\"#{FIELDEFFECTS.dig(:WATERSURFACE, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:WATERSURFACE, "Speed <icon=fieldDown> <c=red>x0.75</c> unless <icon=typeWATER> or . . .", "...unless Water type, airborne, or the abilities Surge Surfer or Swift Swim are active."),
    PBFieldNote.new(:WATERSURFACE, "<c=red>Prevents</c> <icon=typeGROUND> attacks"),
    PBFieldNote.new(:WATERSURFACE, "Spikes/Toxic Spikes <c=red>terminated</c>"),
    PBFieldNote.new(:WATERSURFACE, "Dive lasts <c=green>1</c> turn"),
    PBFieldNote.new(:WATERSURFACE, "Water Veil <icon=fieldPlus> <c=green>cures</c> status"),
    PBFieldNote.new(:WATERSURFACE, "<c=green>Activates</c> certain abilities when . . .", "...when grounded, activates Hydration, Schooling, Surge Surfer, Swift Swim, Torrent, and Water Compaction each turn."),
    PBFieldNote.new(:WATERSURFACE, "Splash <icon=fieldPlus> <c=green>lowers</c> Accuracy"),
    PBFieldNote.new(:WATERSURFACE, "Aqua Ring recovery <icon=fieldChange> <c=green>1/8 HP</c>"),
    PBFieldNote.new(:WATERSURFACE, "Certain abilities <c=green>restore HP</c> . . .", "Dry Skin, Water Absorb"),
    PBFieldNote.new(:WATERSURFACE, "Shore Up <icon=fieldChange> <icon=typeWATER>"),
    PBFieldNote.new(:WATERSURFACE, "Shore Up <c=green>activates</c> Water Compaction"),
    PBFieldNote.new(:WATERSURFACE, "Whirlpool damage <icon=fieldChange> <c=green>1/6 HP</c>"),
    PBFieldNote.new(:WATERSURFACE, "Whirlpool <icon=fieldPlus> confuses target"),
    PBFieldNote.new(:WATERSURFACE, "<icon=typeWATER> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:WATERSURFACE, "<icon=typeELECTRIC> attacks <icon=fieldUp> <c=green>x1.5</c> when . . .", "...when target is grounded."),
    PBFieldNote.new(:WATERSURFACE, "<icon=typeFIRE> attacks <icon=fieldDown> <c=red>x0.5</c> when . . .", "...when target is grounded."),
    PBFieldNote.new(:WATERSURFACE, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:WATERSURFACE, :damageMods, 1.5)),
    PBFieldNote.new(:WATERSURFACE, "Becomes <c=orange>Underwater</c> when . . .", "...when #{feToStringName(:WATERSURFACE, :fieldChange, :UNDERWATER)} is used."),
    PBFieldNote.new(:WATERSURFACE, "Becomes <c=orange>Icy Field</c> when . . .", "...when #{feToStringName(:WATERSURFACE, :fieldChange, :ICY)} is used."),
    PBFieldNote.new(:WATERSURFACE, "Becomes <c=orange>Murkwater</c> when . . .", "...when Acid Downpour is used, or Sludge Wave is used twice."),
    PBFieldNote.new(:WATERSURFACE, "Nature Power <icon=fieldChange> #{feToStringName(:WATERSURFACE, :naturePower)}"),
    PBFieldNote.new(:WATERSURFACE, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:WATERSURFACE, :mimicry)).upcase}>"),
    PBFieldNote.new(:WATERSURFACE, "Secret Power effect <icon=fieldChange> Speed <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:WATERSURFACE, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Special Defense and applies Aqua Ring to the user."),

    # Underwater
    PBFieldNote.new(:UNDERWATER, "<c=orange>\"#{FIELDEFFECTS.dig(:UNDERWATER, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:UNDERWATER, "Speed <icon=fieldDown> <c=red>x0.5</c> unless <icon=typeWATER> or . . .", "...unless Water type, or the abilities Swift Swim or Steelworker are active."),
    PBFieldNote.new(:UNDERWATER, "<c=red>Prevents</c> <icon=typeFIRE> attacks"),
    PBFieldNote.new(:UNDERWATER, "<c=red>Prevents</c> all weather"),
    PBFieldNote.new(:UNDERWATER, "<c=red>Prevents</c> generated fields"),
    PBFieldNote.new(:UNDERWATER, "<c=red>Prevents</c> field removal"),
    PBFieldNote.new(:UNDERWATER, "<icon=typeWATER> attacks <icon=fieldChange,tts=\"change to\"> x1 vs <icon=typeWATER>"),
    PBFieldNote.new(:UNDERWATER, "Physical damage <icon=fieldDown> <c=red>x0.5</c> unless . . .", "...unless attack is Water type or user has Steelworker or Swift Swim."),
    PBFieldNote.new(:UNDERWATER, "End of turn <icon=typeWATER> <c=orange>damage</c> when . . .", "...when Pokémon is weak to Water and does not have Swift Swim."),
    PBFieldNote.new(:UNDERWATER, "<c=orange>Field damage</c> <icon=fieldRedUp> when . . .", "...when the abilities Magma Armor or Flame Body are active."),
    PBFieldNote.new(:UNDERWATER, "Dive lasts <c=green>1</c> turn"),
    PBFieldNote.new(:UNDERWATER, "Water Veil <icon=fieldPlus> <c=green>cures</c> status"),
    PBFieldNote.new(:UNDERWATER, "<c=green>Activates</c> certain abilities . . .", "Hydration, Schooling, Surge Surfer, Swift Swim, Torrent and Water Compaction each turn."),
    PBFieldNote.new(:UNDERWATER, "Aqua Ring recovery <icon=fieldChange> <c=green>1/8 HP</c>"),
    PBFieldNote.new(:UNDERWATER, "Certain abilities <c=green>restore HP</c> . . .", "Dry Skin, Water Absorb"),
    PBFieldNote.new(:UNDERWATER, "Whirlpool damage <icon=fieldChange> <c=green>1/6 HP</c>"),
    PBFieldNote.new(:UNDERWATER, "Whirlpool <icon=fieldPlus> confuses target"),
    PBFieldNote.new(:UNDERWATER, "<icon=typeGROUND> attacks <icon=fieldPlus,tts=\"gain\"> <icon=typeWATER>"),
    PBFieldNote.new(:UNDERWATER, "<icon=typeWATER> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:UNDERWATER, "<icon=typeELECTRIC> attacks <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:UNDERWATER, "<icon=typeELECTRIC> attacks <icon=fieldPlus> <c=green>never miss</c>"),
    PBFieldNote.new(:UNDERWATER, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:UNDERWATER, :damageMods, 1.5)),
    PBFieldNote.new(:UNDERWATER, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", feToStringName(:UNDERWATER, :damageMods, 2.0)),
    PBFieldNote.new(:UNDERWATER, "Becomes <c=orange>Water Surface</c> when . . .", "...when #{feToStringName(:UNDERWATER, :fieldChange, :WATERSURFACE)} is used."),
    PBFieldNote.new(:UNDERWATER, "Becomes <c=orange>Murkwater</c> when . . .", "...when Acid Downpour is used, or Sludge Wave is used twice, KOing all non-Poison or Steel type Pokémon."),
    PBFieldNote.new(:UNDERWATER, "Nature Power <icon=fieldChange> #{feToStringName(:UNDERWATER, :naturePower)}"),
    PBFieldNote.new(:UNDERWATER, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:UNDERWATER, :mimicry)).upcase}>"),
    PBFieldNote.new(:UNDERWATER, "Secret Power effect <icon=fieldChange> Attack <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:UNDERWATER, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Speed and applies Soak to the user."),

    # Cave
    PBFieldNote.new(:CAVE, "<c=orange>\"#{FIELDEFFECTS.dig(:CAVE, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:CAVE, "<icon=typeGROUND> attacks hit <icon=typeFLYING>/Levitate"),
    PBFieldNote.new(
      :CAVE,
      "All Pokémon <icon=fieldfaint> when . . .",
      "...when #{feToStringName(:CAVE, :moveEffects, "@battle.caveCollapse(basemove, user)")} is used twice. Pokémon using Endure, or having Sturdy may survive with 1 HP from full health. Pokémon with Battle Armor and Shell Armor take 50% damage. Pokémon with Prism Armor or Solid Rock take 33% damage. Pokémon behind applicable protect moves, or having Bulletproof or Rock Head are immune to the damage."
    ),
    PBFieldNote.new(:CAVE, "Fly and Bounce last 1 turn"),
    PBFieldNote.new(:CAVE, "<c=red>Prevents</c> Sky Drop"),
    PBFieldNote.new(:CAVE, "Stealth Rock damage <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:CAVE, "<icon=typeROCK> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CAVE, "<icon=typeFLYING> attacks <icon=fieldDown> <c=red>x0.5</c> when . . .", "...when non-contact."),
    PBFieldNote.new(:CAVE, "Sound-based moves <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CAVE, "Rock Tomb <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CAVE, "Becomes <c=orange>Crystal Cavern</c> when . . .", "...when #{feToStringName(:CAVE, :fieldChange, :CRYSTALCAVERN)} is used."),
    PBFieldNote.new(:CAVE, "Nature Power <icon=fieldChange> #{feToStringName(:CAVE, :naturePower)}"),
    PBFieldNote.new(:CAVE, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:CAVE, :mimicry)).upcase}>"),
    PBFieldNote.new(:CAVE, "Secret Power effect <icon=fieldChange> Flinches"),
    PBFieldNote.new(:CAVE, "Activates <c=orange>Telluric Seed</c> . . .", "Boosts Defense by two stages but damages the user with Stealth Rocks."),

    # Glitch Field
    PBFieldNote.new(:GLITCH, "<c=orange>\"#{FIELDEFFECTS.dig(:GLITCH, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:GLITCH, "Type attacks <icon=fieldChange,tts=\"are\"> always Physical . . .", "Normal, Fighting, Poison, Ground, Flying, Bug, Rock, Ghost."),
    PBFieldNote.new(:GLITCH, "Type attacks <icon=fieldChange,tts=\"are\"> always Special . . .", "Fire, Water, Grass, Electric, Ice, Psychic, Dragon."),
    PBFieldNote.new(:GLITCH, "Special attacks <c=orange>calculate</c> on . . .", "Special attacks, for both the attacker and defender, calculate off of the higher stat between Special Attack and Special Defense."),
    PBFieldNote.new(:GLITCH, "<icon=typeDARK>, <icon=typeSTEEL>, <icon=typeFAIRY,tts=\"and Fairy type\"> moves <icon=fieldChange> <icon=typeNORMAL>"),
    PBFieldNote.new(
      :GLITCH,
      "The type chart is <c=orange>altered</c> . . .",
      "Dragon always deals neutral damage.\nBug hits Poison types super-effectively.\nIce hits Fire types neutrally.\nGhost cannot hit Psychic types.\nPoison hits Bug types super-effectively."
    ),
    PBFieldNote.new(:GLITCH, "Critical hit chance <icon=fieldUp,tts=\"increased\"> when . . .", "...when the attacker's base Speed is higher than the target's."),
    PBFieldNote.new(:GLITCH, "Rage <c=red>locks</c> user into itself"),
    PBFieldNote.new(:GLITCH, "Recharge moves don't have to <c=green>recharge</c> . . .", "...when the move knocks out a Pokémon."),
    PBFieldNote.new(:GLITCH, "<icon=typePSYCHIC> attacks <icon=fieldUp> <c=green>x1.2</c>"),
    PBFieldNote.new(:GLITCH, "Blizzard's Accuracy <icon=fieldChange> <c=green>90</c>"),
    PBFieldNote.new(:GLITCH, "Metronome <c=green>selects</c> attacks . . .", "...selects attacks of 70 base power or higher only."),
    PBFieldNote.new(:GLITCH, "Self-KO attacks <c=green>halve</c> target's Defense"),
    PBFieldNote.new(:GLITCH, "RKS System <icon=fieldChange> <icon=typeQMARKS>"),
    PBFieldNote.new(:GLITCH, "<c=green>Created</c> by Conversion <icon=fieldPlus,tts=\"and\"> Conversion2 . . .", "...when used in succession, for 5 turns. These can also reset the duration of the field once it is created."),
    PBFieldNote.new(:GLITCH, "Nature Power <icon=fieldChange> #{feToStringName(:GLITCH, :naturePower)}"),
    PBFieldNote.new(:GLITCH, "Camouflage <icon=fieldChange> <icon=typeQMARKS>"),
    PBFieldNote.new(:GLITCH, "Secret Power effect <icon=fieldChange> Speed <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:GLITCH, "Activates <c=orange>Synthetic Seed</c> . . .", "Boosts Defense and makes the user ???-type."),

    # Crystal Cavern
    PBFieldNote.new(:CRYSTALCAVERN, "<c=orange>\"#{FIELDEFFECTS.dig(:CRYSTALCAVERN, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:CRYSTALCAVERN, "<icon=typeROCK> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CRYSTALCAVERN, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:CRYSTALCAVERN, :damageMods, 1.5)),
    PBFieldNote.new(
      :CRYSTALCAVERN,
      "Certain attacks <icon=fieldPlus,tts=\"gain an\"> extra type . . .",
      "Rock Type attacks, as well as Judgment, Multi-Attack, Prismatic Laser, Rock Climb and Strength, gain a sequential typing between Fire, Water, Grass and Psychic in that repeating pattern."
    ),
    PBFieldNote.new(:CRYSTALCAVERN, "Stealth Rock <icon=fieldPlus,tts=\"gains an\"> extra type . . .", "Each occurrence of Stealth Rock damage gains an extra damage type from the same repeating pattern as the attacks above."),
    PBFieldNote.new(:CRYSTALCAVERN, "<icon=typeDRAGON> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:CRYSTALCAVERN, "Certain attacks <icon=fieldUp> <c=green>x1.3</c> . . .", feToStringName(:CRYSTALCAVERN, :damageMods, 1.3)),
    PBFieldNote.new(:CRYSTALCAVERN, "Becomes <c=orange>Dark Crystal Cavern</c> when . . .", "...when #{feToStringName(:CRYSTALCAVERN, :fieldChange, :DARKCRYSTALCAVERN)} is used."),
    PBFieldNote.new(:CRYSTALCAVERN, "Becomes a <c=orange>Cave</c> when . . .", "...when #{feToStringName(:CRYSTALCAVERN, :fieldChange, :CAVE)} is used."),
    PBFieldNote.new(:CRYSTALCAVERN, "Rock Polish <icon=fieldPlus> <c=green>boosts</c> Atk/Sp.Atk"),
    PBFieldNote.new(:CRYSTALCAVERN, "<c=green>Enables</c> Aurora Veil"),
    PBFieldNote.new(:CRYSTALCAVERN, "Prism Armor <icon=fieldPlus> <c=green>lowers all damage</c> x0.75"),
    PBFieldNote.new(:CRYSTALCAVERN, "Nature Power <icon=fieldChange> #{feToStringName(:CRYSTALCAVERN, :naturePower)}"),
    PBFieldNote.new(:CRYSTALCAVERN, "Camouflage <icon=fieldChange> variable type . . .", "Camouflage and Mimicry choose one of Fire, Water, Grass or Psychic typings in that repeating pattern."),
    PBFieldNote.new(:CRYSTALCAVERN, "Secret Power effect <icon=fieldChange> random status . . .", "Secret Power may choose a random status between Burn, Freeze, Sleep or Confusion."),
    PBFieldNote.new(:CRYSTALCAVERN, "Activates <c=orange>Magical Seed</c> . . .", "Boosts Special Attack and applies Magic Coat to the user."),

    # Murkwater Surface
    PBFieldNote.new(:MURKWATERSURFACE, "<c=orange>\"#{FIELDEFFECTS.dig(:MURKWATERSURFACE, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:MURKWATERSURFACE, "Speed <icon=fieldDown> <c=red>x0.75</c> unless <icon=typeWATER> or . . .", "...unless Water type, airborne, or the abilities Surge Surfer or Swift Swim are active."),
    PBFieldNote.new(:MURKWATERSURFACE, "End of turn <icon=typePOISON> <c=orange>damage</c> when . . .", "...when grounded, and not Poison or Steel type."),
    PBFieldNote.new(:MURKWATERSURFACE, "<c=green>Immunity</c> to field <c=orange>damage</c> when . . .", "...when one of the following abilities is active: Immunity, Poison Heal, Toxic Boost, Wonder Guard"),
    PBFieldNote.new(:MURKWATERSURFACE, "<c=orange>Field damage</c> <icon=fieldRedUp> when . . .", "...when Pokémon is underwater (x4) or has one of the following abilities (x2): Dry Skin, Flame Body, Magma Armor, Water Absorb"),
    PBFieldNote.new(:MURKWATERSURFACE, "Certain abilities <c=green>restore HP</c> when . . .", "...when grounded and Poison type, Dry Skin and Water Absorb slowly restore HP."),
    PBFieldNote.new(:MURKWATERSURFACE, "<c=green>Activates</c> certain abilities when . . .", "...when grounded, activates Merciless, Poison Heal, Schooling, Surge Surfer, Swift Swim, Toxic Boost and Water Compaction each turn."),
    PBFieldNote.new(:MURKWATERSURFACE, "<c=red>Prevents</c> <icon=typeGROUND> attacks"),
    PBFieldNote.new(:MURKWATERSURFACE, "Spikes/Toxic Spikes <c=red>terminated</c>"),
    PBFieldNote.new(:MURKWATERSURFACE, "Shore Up <c=green>activates</c> Water Compaction"),
    PBFieldNote.new(:MURKWATERSURFACE, "<icon=typeWATER> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:MURKWATERSURFACE, "<icon=typeWATER> attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typePOISON>"),
    PBFieldNote.new(:MURKWATERSURFACE, "<icon=typePOISON> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:MURKWATERSURFACE, "<icon=typeELECTRIC> attacks <icon=fieldUp> <c=green>x1.3</c> when . . .", "...when opponent is grounded."),
    PBFieldNote.new(:MURKWATERSURFACE, "Sludge Wave <icon=fieldPlus,tts=\"gains the\"> <icon=typeWATER>"),
    PBFieldNote.new(:MURKWATERSURFACE, "Certain attacks <icon=fieldChange,tts=\"change to\"> <icon=typeWATER> / <icon=typePOISON>", "Mud Bomb, Mud Shot, Mud-Slap, Thousand Waves, Shore Up"),
    PBFieldNote.new(:MURKWATERSURFACE, "Smack Down <icon=fieldPlus,tts=\"gains the\"> <icon=typePOISON>"),
    PBFieldNote.new(:MURKWATERSURFACE, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:MURKWATERSURFACE, :damageMods, 1.5)),
    PBFieldNote.new(:MURKWATERSURFACE, "Gooey effect <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:MURKWATERSURFACE, "Stench chance <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:MURKWATERSURFACE, "Acid Armor's effect <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:MURKWATERSURFACE, "<c=green>Activates</c> Venoshock"),
    PBFieldNote.new(:MURKWATERSURFACE, "<c=green>Activates</c> Venom Drench"),
    PBFieldNote.new(:MURKWATERSURFACE, "Liquid Ooze <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:MURKWATERSURFACE, "Becomes <c=orange>Water Surface</c> when . . .", "...when #{feToStringName(:MURKWATERSURFACE, :fieldChange, :WATERSURFACE)} is used."),
    PBFieldNote.new(:MURKWATERSURFACE, "Becomes <c=orange>Icy Field</c> when . . .", "...when #{feToStringName(:MURKWATERSURFACE, :fieldChange, :ICY)} is used."),
    PBFieldNote.new(:MURKWATERSURFACE, "Nature Power <icon=fieldChange> #{feToStringName(:MURKWATERSURFACE, :naturePower)}"),
    PBFieldNote.new(:MURKWATERSURFACE, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:MURKWATERSURFACE, :mimicry)).upcase}>"),
    PBFieldNote.new(:MURKWATERSURFACE, "Secret Power effect <icon=fieldChange> <icon=fieldPoisonStatus>"),
    PBFieldNote.new(:MURKWATERSURFACE, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Speed and applies Aqua Ring, but poisons the user."),

    # Mountain
    PBFieldNote.new(:MOUNTAIN, "<c=orange>\"Adieu to disappointment and spleen,\"</c>", "What are men to rocks and mountains?"),
    PBFieldNote.new(:MOUNTAIN, "Tailwind lasts <c=green>6</c> turns"),
    PBFieldNote.new(:MOUNTAIN, "Tailwind <icon=fieldPlus,tts=\"additionally kicks up\"> Strong Winds"),
    PBFieldNote.new(:MOUNTAIN, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:MOUNTAIN, :damageMods, 1.5)),
    PBFieldNote.new(
      :MOUNTAIN,
      "Certain attacks <icon=fieldPlus,tts=\"are additionally\"> <icon=fieldUp> <c=green>x1.5</c> when . . .",
      "...when Strong Winds are active, further boosts all special Flying attacks, as well as Fairy Wind, Gust, Icy Wind, Ominous Wind, Razor Wind, Silver Wind, Twister"
    ),
    PBFieldNote.new(:MOUNTAIN, "Sun lasts <c=green>8</c> turns"),
    PBFieldNote.new(:MOUNTAIN, "Thunder <c=green>never misses</c>"),
    PBFieldNote.new(:MOUNTAIN, "Becomes <c=orange>Snowy Mountain</c> when . . .", "...when #{feToStringName(:MOUNTAIN, :fieldChange, :SNOWYMOUNTAIN)} is used, or it has been hailing for 3 turns."),
    PBFieldNote.new(:MOUNTAIN, "<icon=typeFLYING> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:MOUNTAIN, "<icon=typeROCK> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:MOUNTAIN, "Long Reach damage <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:MOUNTAIN, "<c=green>Activates</c> Gale Wings when windy"),
    PBFieldNote.new(:MOUNTAIN, "Aerilate power boost <icon=fieldChange> <c=green>x1.5</c>"),
    PBFieldNote.new(:MOUNTAIN, "Nature Power <icon=fieldChange> #{feToStringName(:MOUNTAIN, :naturePower)}"),
    PBFieldNote.new(:MOUNTAIN, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:MOUNTAIN, :mimicry)).upcase}>"),
    PBFieldNote.new(:MOUNTAIN, "Secret Power effect <icon=fieldChange> Flinches"),
    PBFieldNote.new(:MOUNTAIN, "Activates <c=orange>Telluric Seed</c> . . .", "Boosts Attack by two stages, but lowers Accuracy."),

    # Snowy Mountain
    PBFieldNote.new(:SNOWYMOUNTAIN, "<c=orange>\"The snow glows white on the mountain\"</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Tailwind lasts <c=green>6</c> turns"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Tailwind <icon=fieldPlus,tts=\"additionally kicks up\"> Strong Winds"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "<icon=typeROCK> attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeICE>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "<icon=typeICE> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "<icon=typeROCK> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "<icon=typeFLYING> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Icy Wind <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "<icon=typeFIRE> attacks <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "<icon=typeICE> Pokémon's Defense <icon=fieldUp> <c=green>x1.5</c> when . . .", "...when Hail is up."),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:SNOWYMOUNTAIN, :damageMods, 1.5)),
    PBFieldNote.new(
      :SNOWYMOUNTAIN,
      "Certain attacks <icon=fieldPlus,tts=\"are additionally\"> <icon=fieldUp> <c=green>x1.5</c> when . . .",
      "...when Strong Winds are active, further boosts all special Flying attacks, as well as Fairy Wind, Gust, Icy Wind, Ominous Wind, Razor Wind, Silver Wind, Twister"
    ),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Certain attacks <icon=fieldDown> <c=red>x0.5</c> . . .", feToStringName(:SNOWYMOUNTAIN, :damageMods, 0.5)),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Sun and Hail last for <c=green>8</c> turns"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Thunder <c=green>never misses</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "<c=green>Activates</c> certain abilities . . .", "Ice Body, Slush Rush, Snow Cloak"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Refrigerate power boost <icon=fieldChange> <c=green>x1.5</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Becomes a <c=orange>Mountain</c> when . . .", "...when #{feToStringName(:SNOWYMOUNTAIN, :fieldChange, :MOUNTAIN)} is used."),
    PBFieldNote.new(:SNOWYMOUNTAIN, "<c=green>Activates</c> Gale Wings when windy"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "<c=green>Enables</c> Aurora Veil"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Long Reach damage <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Aerilate power boost <icon=fieldChange> <c=green>x1.5</c>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Nature Power <icon=fieldChange> #{feToStringName(:SNOWYMOUNTAIN, :naturePower)}"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:SNOWYMOUNTAIN, :mimicry)).upcase}>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Secret Power effect <icon=fieldChange> <icon=fieldFreeze>"),
    PBFieldNote.new(:SNOWYMOUNTAIN, "Activates <c=orange>Telluric Seed</c> . . .", "Boosts Special Attack by two stages, but lowers Accuracy."),

    # Holy Field
    PBFieldNote.new(:HOLY, "<c=orange>\"#{FIELDEFFECTS.dig(:HOLY, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:HOLY, "The type chart is <c=orange>altered</c> . . .", "Normal-type attacks hit Ghost and Dark type Pokémon for super-effective damage."),
    PBFieldNote.new(:HOLY, "<icon=typeGHOST> attacks <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(:HOLY, "Special <icon=typeDARK> attacks <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(:HOLY, "Special <icon=typeFAIRY> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:HOLY, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:HOLY, :damageMods, 1.5)),
    PBFieldNote.new(:HOLY, "Certain attacks <icon=fieldUp> <c=green>x1.3</c> . . .", feToStringName(:HOLY, :damageMods, 1.3)),
    PBFieldNote.new(:HOLY, "<icon=typePSYCHIC> attacks <icon=fieldUp> <c=green>x1.2</c>"),
    PBFieldNote.new(:HOLY, "<icon=typeDRAGON> attacks <icon=fieldUp> <c=green>x1.2</c>"),
    PBFieldNote.new(:HOLY, "Special <icon=typeNORMAL> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:HOLY, "Justified effect <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:HOLY, "Wish recovery <icon=fieldChange> <c=green>75 % HP</c>"),
    PBFieldNote.new(:HOLY, "<c=red>Prevents</c> Cursed Body"),
    PBFieldNote.new(:HOLY, "<c=green>Lifts</c> Curse each turn"),
    PBFieldNote.new(:HOLY, "Allies <c=green>avoid</c> damage from . . .", "Allies avoid damage from their partners' moves."),
    PBFieldNote.new(:HOLY, "Miracle Eye <icon=fieldPlus> <c=green>boosts</c> Sp.Atk"),
    PBFieldNote.new(:HOLY, "Cosmic Power's effect <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:HOLY, "Nature's Madness damage <icon=fieldChange> <c=green>66 % HP</c>"),
    PBFieldNote.new(:HOLY, "RKS System <icon=fieldChange> <icon=typeDARK>"),
    PBFieldNote.new(:HOLY, "<c=red>Destroyed</c> by these moves . . .", feToStringName(:HOLY, :fieldChange, :INDOOR)),
    PBFieldNote.new(:HOLY, "Nature Power <icon=fieldChange> #{feToStringName(:HOLY, :naturePower)}"),
    PBFieldNote.new(:HOLY, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:HOLY, :mimicry)).upcase}>"),
    PBFieldNote.new(:HOLY, "Secret Power effect <icon=fieldChange> Sp.Atk <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:HOLY, "Activates <c=orange>Magical Seed</c> . . .", "Boosts Special Attack and applies Magic Coat to the user."),

    # Mirror Field
    PBFieldNote.new(:MIRROR, "<c=orange>\"Mirror, mirror on the field . . .\"</c>", "Who shalt this fractured power wield?"),
    PBFieldNote.new(:MIRROR, "Critical hit rate <icon=fieldUp,tts=\"increased\"> when . . .", "The critical hit rate is increased by one stage for each of the attacker's Evasion/Accuracy buffs, and the target's Evasion/Accuracy de-buffs."),
    PBFieldNote.new(:MIRROR, "Certain attacks <c=orange>reflect</c> when . . .", "Special, non-contact, non-OHKO, single target attacks will always hit targets with raised evasion."),
    PBFieldNote.new(
      :MIRROR,
      "Certain attacks <icon=fieldUp> <c=green>x2</c> when . . .",
      "Bubble Beam, Charge Beam, Fleur Cannon, Hyper Beam, Ice Beam, Moongeist Beam, Origin Pulse, Psybeam, Solar Beam and Tri-Attack are boosted when hitting targets with raised evasion."
    ),
    PBFieldNote.new(:MIRROR, "Missing physical moves <c=orange>recoil</c> . . .", "Missing a physical contact move causes 1/4 max HP recoil damage. Also Evasion is lowered by one stage if it's raised."),
    PBFieldNote.new(:MIRROR, "Certain abilities <c=green>boost</c> Evasion . . .", "Color Change, Illusion, Magic Bounce, Sand Veil, Snow Cloak and Tangled Feet boost Evasion when switched in."),
    PBFieldNote.new(:MIRROR, "Certain items <c=green>boost</c> Evasion . . .", "Bright Powder and Lax Incense boost Evasion when switched in."),
    PBFieldNote.new(:MIRROR, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> and . . .", "...and never miss: #{feToStringName(:MIRROR, :damageMods, 1.5)}"),
    PBFieldNote.new(:MIRROR, "Illuminate <icon=fieldPlus> <c=green>lowers</c> Accuracy . . .", "Illuminate lowers opponents' Accuracy on switch-in."),
    PBFieldNote.new(:MIRROR, "Certain abilities <c=green>boost</c> Accuracy . . .", "Keen Eye and Compound Eyes raise Accuracy on switch-in. They additionally apply Laser Focus."),
    PBFieldNote.new(:MIRROR, "Certain items <c=green>boost</c> Accuracy . . .", "Wide Lens and Zoom Lens raise Accuracy on switch-in. They additionally apply Laser Focus."),
    PBFieldNote.new(:MIRROR, "Magic Bounce <icon=fieldPlus> <icon=fieldUp,tts=\"boosts\"> Evasion when . . .", "...when an attack is successfully bounced."),
    PBFieldNote.new(:MIRROR, "Screens last <c=green>8</c> turns"),
    PBFieldNote.new(:MIRROR, "<c=green>Enables</c> Aurora Veil"),
    PBFieldNote.new(:MIRROR, "Screens <icon=fieldPlus> <icon=fieldUp,tts=\"boost\"> Evasion"),
    PBFieldNote.new(:MIRROR, "Mirror Coat <icon=fieldPlus> <c=green>boosts</c> stats . . .", "Mirror Coat increases Evasion, Defense and Special Defense on successful use."),
    PBFieldNote.new(:MIRROR, "Mirror Move <icon=fieldPlus> <c=green>boosts</c> stats . . .", "Mirror Move increases Accuracy, Attack and Special Attack on successful use."),
    PBFieldNote.new(:MIRROR, "Mirror Shot <icon=fieldUp> <c=green>x2</c> and . . .", "...and never misses and always lowers target's Accuracy."),
    PBFieldNote.new(:MIRROR, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Double Team, Flash"),
    PBFieldNote.new(
      :MIRROR,
      "<c=red>Destroyed</c> by these moves and . . .",
      "...and damages all active Pokémon for 1/2 max HP: #{feToStringName(:MIRROR, :fieldChange, :INDOOR)}.\nPokémon behind applicable protect moves, or having Shell Armor or Battle Armor are immune to the shatter damage."
    ),
    PBFieldNote.new(:MIRROR, "Nature Power <icon=fieldChange> #{feToStringName(:MIRROR, :naturePower)}"),
    PBFieldNote.new(:MIRROR, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:MIRROR, :mimicry)).upcase}>"),
    PBFieldNote.new(:MIRROR, "Secret Power effect <icon=fieldChange> Evasion <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:MIRROR, "Activates <c=orange>Synthetic Seed</c> . . .", "Boosts Evasion and applies Magic Coat to the user."),

    # Fairy Tale Field
    PBFieldNote.new(:FAIRYTALE, "<c=orange>\"#{FIELDEFFECTS.dig(:FAIRYTALE, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:FAIRYTALE, "<icon=typeFAIRY> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:FAIRYTALE, "<icon=typeSTEEL> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:FAIRYTALE, "<icon=typeDRAGON> attacks <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:FAIRYTALE, "<icon=typeSTEEL> attacks <icon=fieldUp> <c=green>x2</c> vs <icon=typeDRAGON>"),
    PBFieldNote.new(:FAIRYTALE, "<icon=typeFIRE> attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeDRAGON>"),
    PBFieldNote.new(:FAIRYTALE, "Certain abilities <icon=fieldPlus> <icon=fieldUp,tts=\"boost\"> Defense . . .", "Battle Armor, Power of Alchemy and Shell Armor boost Defense upon switching in."),
    PBFieldNote.new(:FAIRYTALE, "Certain abilities <icon=fieldPlus> <icon=fieldUp,tts=\"boost\"> Sp.Def . . .", "Magic Guard, Magic Bounce and Power of Alchemy boost Special Defense upon switching in."),
    PBFieldNote.new(:FAIRYTALE, "Magician <icon=fieldPlus> <icon=fieldUp,tts=\"boosts\"> Sp.Atk . . .", "Magician boosts Special Attack upon switching in."),
    PBFieldNote.new(:FAIRYTALE, "Fairy Aura Pokémon <icon=fieldPlus> <c=green>never miss</c>"),
    PBFieldNote.new(:FAIRYTALE, "<c=green>Activates</c> Marvel Scale"),
    PBFieldNote.new(:FAIRYTALE, "Certain attacks <icon=fieldChange,tts=\"change to\"> <icon=typeSTEEL> . . .", "Cut, Sacred Sword, Secret Sword, Slash"),
    PBFieldNote.new(:FAIRYTALE, "Stance Change <c=orange>alters</c> stats . . .", "Pokémon with Stance Change start with boosted Defense, and then boost and lower Attack and Defense by one stage when switching between respective forms."),
    PBFieldNote.new(:FAIRYTALE, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:FAIRYTALE, :damageMods, 1.5)),
    PBFieldNote.new(:FAIRYTALE, "Draining Kiss <icon=fieldUp> <c=green>x2</c>"),
    PBFieldNote.new(:FAIRYTALE, "Certain attacks <icon=fieldPlus> <c=green>boost</c> stats . . .", "Crafty Shield and Flower Shield boost the user's Defense and Special Defense."),
    PBFieldNote.new(:FAIRYTALE, "King's Shield <icon=fieldPlus,tts=\"gain\"> <c=green>protection</c> . . .", "King's Shield additionally protects from non-damaging moves."),
    PBFieldNote.new(:FAIRYTALE, "King's Shield <icon=fieldPlus> <c=green>lowers</c> Sp.Atk"),
    PBFieldNote.new(:FAIRYTALE, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Acid Armor, Noble Roar, Swords Dance"),
    PBFieldNote.new(:FAIRYTALE, "Certain attacks <icon=fieldPlus> <c=green>cure</c> Sleep", "Draining Kiss, Sweet Kiss"),
    PBFieldNote.new(:FAIRYTALE, "Wish recovery <icon=fieldChange> <c=green> 75 % HP</c>"),
    PBFieldNote.new(:FAIRYTALE, "Healing Wish <icon=fieldPlus> <c=green>boosts</c> stats . . .", "Healing Wish boosts the recipient's Attack and Special Attack."),
    PBFieldNote.new(:FAIRYTALE, "Miracle Eye <icon=fieldPlus> <c=green>boosts</c> Sp.Atk"),
    PBFieldNote.new(:FAIRYTALE, "Forest's Curse <icon=fieldPlus,tts=\"additionally inflicts the\"> Curse effect"),
    PBFieldNote.new(:FAIRYTALE, "Floral Healing recovery <icon=fieldChange> <c=green>100 % HP</c>"),
    PBFieldNote.new(:FAIRYTALE, "Queenly Majesty damage <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:FAIRYTALE, "Soul-Heart <icon=fieldPlus> <c=green>boosts</c> Sp.Def"),
    PBFieldNote.new(:FAIRYTALE, "Nature Power <icon=fieldChange> #{feToStringName(:FAIRYTALE, :naturePower)}"),
    PBFieldNote.new(:FAIRYTALE, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:FAIRYTALE, :mimicry)).upcase}>"),
    PBFieldNote.new(:FAIRYTALE, "Secret Power effect <icon=fieldChange> <icon=fieldSleep>"),
    PBFieldNote.new(:FAIRYTALE, "Activates <c=orange>Magical Seed</c> . . .", "Applies King's Shield to the user."),

    # Dragon's Den
    PBFieldNote.new(:DRAGONSDEN, "<c=orange>\"#{FIELDEFFECTS.dig(:DRAGONSDEN, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:DRAGONSDEN, "<icon=typeDRAGON> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:DRAGONSDEN, "<icon=typeFIRE> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:DRAGONSDEN, "<icon=typeWATER> attacks <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(:DRAGONSDEN, "<icon=typeICE> attacks <icon=fieldDown> <c=red>x0.5</c>"),
    PBFieldNote.new(:DRAGONSDEN, "<icon=typeDRAGON> Pokémon's defenses <icon=fieldUp> <c=green>x1.3</c>"),
    PBFieldNote.new(:DRAGONSDEN, "<c=green>Activates</c> Marvel Scale"),
    PBFieldNote.new(:DRAGONSDEN, "Multiscale <icon=fieldPlus,tts=\"gains\"> <c=green>protection</c> . . .", "Multiscale additionally annulls user's Dragon type's weaknesses at all times."),
    PBFieldNote.new(
      :DRAGONSDEN,
      "Shed Skin <icon=fieldPlus,tts=\"gains\"> <c=green>recovery</c> and . . . ",
      "Shed Skin heals 25% HP on activation, and boosts Speed and Special Attack by one stage each while lowering Defense and Special Defense by one stage each.\nAlways activates."
    ),
    PBFieldNote.new(:DRAGONSDEN, "Certain attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeFIRE> . . .", "#{feToStringName(:DRAGONSDEN, :typeMods, :FIRE)}"),
    PBFieldNote.new(:DRAGONSDEN, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", (FIELDEFFECTS.dig(:DRAGONSDEN, :damageMods, 2.0) - [:PAYDAY]).map { |id| getMoveName(id) }.sort.uniq.join(", ")),
    PBFieldNote.new(:DRAGONSDEN, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:DRAGONSDEN, :damageMods, 1.5)),
    PBFieldNote.new(:DRAGONSDEN, "Pay Day <icon=fieldUp> <c=green>x2</c> and payout <icon=fieldUp,tts=\"boosted\">"),
    PBFieldNote.new(:DRAGONSDEN, "Magma Storm damage <icon=fieldChange> <c=green>1/6 HP</c>"),
    PBFieldNote.new(:DRAGONSDEN, "Magma Armor <icon=fieldPlus> <c=green>boosts</c> stats . . .", "Magma Armor boosts Defense and Special Defense upon switching in."),
    PBFieldNote.new(:DRAGONSDEN, "Magma Armor <icon=fieldPlus,tts=\"grants\"> <icon=typeFIRE> <c=red>immunity</c>"),
    PBFieldNote.new(:DRAGONSDEN, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Dragon Dance, Noble Roar"),
    PBFieldNote.new(:DRAGONSDEN, "Becomes a <c=orange>Cave</c> when . . .", "...when Glaciate, Hydro Vortex, Oceanic Operetta or Subzero Slammer is used, or when Muddy Water, Sparkling Aria or Surf is used twice."),
    PBFieldNote.new(:DRAGONSDEN, "Nature Power <icon=fieldChange> #{feToStringName(:DRAGONSDEN, :naturePower)}"),
    PBFieldNote.new(:DRAGONSDEN, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:DRAGONSDEN, :mimicry)).upcase}>"),
    PBFieldNote.new(:DRAGONSDEN, "Secret Power effect <icon=fieldChange> <icon=fieldBurn>"),
    PBFieldNote.new(:DRAGONSDEN, "Activates <c=orange>Elemental Seed</c> . . .", "Boosts Special Attack and applies Flash Fire's power boost to the user."),

    # Flower Garden Field
    PBFieldNote.new(:FLOWERGARDEN4, "<c=orange>\"#{FIELDEFFECTS.dig(:FLOWERGARDEN1, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "<c=orange>Grows</c> from <c=orange>Stage 1</c> to <c=orange>Stage 5</c>"),
    PBFieldNote.new(
      :FLOWERGARDEN4,
      "Certain attacks <c=orange>grow</c> 1 <c=orange>Stage</c> . . .",
      "#{feToStringName(:FLOWERGARDEN1, :fieldChange, :FLOWERGARDEN2)}.\nAdditionally, these abilities grow the field one stage on switch-in: Drizzle, Drought, Flower Gift, Flower Veil"
    ),
    PBFieldNote.new(:FLOWERGARDEN4, "#{feToStringName(:FLOWERGARDEN3, :fieldChange, :FLOWERGARDEN2)} <c=red>reduces</c> <c=orange>Stage</c> by 1", "", "<c=ffb347>2</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "<c=green>Activates</c> certain abilities . . .", "Flower Gift, Swarm", "<c=7CFC00>1</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Rototiller's effect <icon=fieldUp,tts=\"boosted\">", "", "<c=7CFC00>1</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Rototiller <icon=fieldPlus> <c=green>boosts</c> stats . . .", "Rototiller also boosts user's Attack and Special Attack.", "<c=7CFC00>1</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Growth's effect <icon=fieldUp,tts=\"boosted\"> . . .", "Increases (x2,x3) at Stages (1,3)", "<c=7CFC00>1</c>,<c=ec5800>3</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Cut <icon=fieldUp> <c=green>x1.5</c>", "", "<c=ffb347>2</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Cut <icon=fieldUp> <c=green>x2</c> vs <icon=typeGRASS>", "", "<c=ffb347>2</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "<c=green>Activates</c> certain abilities . . .", "Harvest, Leaf Guard", "<c=ffb347>2</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Flower Shield <icon=fieldPlus> <c=green>boosts</c> stats . . .", "Flower Shield also boosts Special Defense and the user's Defense and Special Defense.", "<c=ffb347>2</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Certain moves' Accuracy <icon=fieldChange> <c=green>85</c>", "Poison Powder, Sleep Powder, Stun Spore", "<c=ffb347>2</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Flower Veil <icon=fieldPlus> <c=green>reduces</c> damage . . .", "Flower Veil passively reduces damage to the user and allied Grass types by 25%.", "<c=ec5800>3</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Becomes a <c=orange>Burning Field</c> when . . .", "#{feToStringName(:FLOWERGARDEN3, :fieldChange, :BURNING)} is used in the absence of Rain or Water Sport.", "<c=ec5800>3</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Sweet Scent <icon=fieldPlus> <c=green>lowers</c> defenses", "", "<c=ec5800>3</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "<icon=typeFIRE> attacks <icon=fieldUp> <c=green>x1.5</c>", "", "<c=ec5800>3</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Flower Shield's effect <icon=fieldUp,tts=\"boosted\">", "", "<c=ec5800>3</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "<c=green>Activates</c> Chlorophyll", "", "<c=ff2800>4</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Grass type's weaknesses are <c=green>annulled</c>", "", "<c=ff2800>4</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Certain attacks <c=green>hit all</c> opposing", "Petal Blizzard, Petal Dance and all powder moves hit both opposing Pokémon at Stage 5.", "<c=ff00ff>5</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "<icon=typeGRASS> attacks <icon=fieldUp,tts=\"boosted\"> . . .", "Grass-type attacks increase in base power (x1.1,x1.3,x1.5,x2) at Stages (2,3,4,5).", "<c=ffb347>2</c>-<c=ff00ff>5</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "<icon=typeBUG> attacks <icon=fieldUp,tts=\"boosted\"> . . .", "Bug-type attacks increase in base power (x1.5,x2) at Stages (2,4).", "<c=ffb347>2</c>,<c=ff2800>4</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Swarm's effect <icon=fieldUp,tts=\"boosted\"> . . .", "Swarm increases Bug-type attacks' power by (x1.8,x2) at Stages (3,5).", "<c=ec5800>3</c>,<c=ff00ff>5</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "<c=green>Activates</c> Overgrow when . . .", "Overgrow activates at (66% HP, any HP amount) at Stages (2,3).", "<c=ffb347>2</c>,<c=ec5800>3</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Overgrow's effect <icon=fieldUp,tts=\"boosted\"> . . .", "Overgrow increases Grass-type attacks' power by (x1.8,x2) at Stages (4,5).", "<c=ff2800>4</c>,<c=ff00ff>5</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Sweet Scent's effect <icon=fieldUp,tts=\"boosted\"> . . .", "At Stage 3 and later, Sweet Scent additionally lowers Defense and Special Defense. Sweet Scent's effect increases (x2,x3) at Stages (4,5).", "<c=ff2800>4</c>,<c=ff00ff>5</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Ingrain's effect <icon=fieldUp,tts=\"boosted\"> . . .", "Ingrain's effect increases (x2,x4) at Stages (2,4).", "<c=ffb347>2</c>,<c=ff2800>4</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Certain attacks <icon=fieldUp,tts=\"boosted\"> . . .", "Fleur Cannon, Petal Blizzard and Petal Dance are boosted (x1.2,x1.5) at Stages (3,4).", "<c=ec5800>3</c>,<c=ff2800>4</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Infestation damage <icon=fieldUp,tts=\"boosted\"> . . .", "Infestation deals (1/6,1/4,1/3) max HP damage per turn at Stages (3,4,5).", "<c=ec5800>3</c>-<c=ff00ff>5</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Floral Healing recovery <icon=fieldChange> <c=green>100 % HP</c>", "", "<c=ec5800>3</c>+"),
    PBFieldNote.new(:FLOWERGARDEN4, "Acid Downpour <c=red>resets</c> to <c=orange>Stage 1</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Nature Power <icon=fieldChange> Growth", "", "<c=7CFC00>1</c>-<c=ff2800>4</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Nature Power <icon=fieldChange> Petal Blizzard", "", "<c=ff00ff>5</c>"),
    PBFieldNote.new(:FLOWERGARDEN4, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:FLOWERGARDEN1, :mimicry)).upcase}>"),
    PBFieldNote.new(
      :FLOWERGARDEN4,
      "Secret Power effect <icon=fieldChange> Stats <icon=fieldDown,tts=\"lowered by one stage\"> . . .", "Secret Power may lower Evasion. At Stage 3 and later it additionally lowers Defense and Special Defense. At Stage 5 this effect increases x2.",
      "<c=7CFC00>1</c> <c=ec5800>3</c> <c=ff00ff>5</c> "
    ),
    PBFieldNote.new(:FLOWERGARDEN4, "Activates <c=orange>Synthetic Seed</c> . . .", "Boosts Special Defense and applies Ingrain to the user, and makes the field grow 1 Stage."),

    # Starlight Arena
    PBFieldNote.new(:STARLIGHT, "<c=orange>\"#{FIELDEFFECTS.dig(:STARLIGHT, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:STARLIGHT, "<c=red>Destroyed</c> when . . .", "...when Light That Burns The Sky is used."),
    PBFieldNote.new(:STARLIGHT, "Weather <c=red>stops</c> boosts . . .", "When weather is up, the field power boosts to moves and types aren't applied."),
    PBFieldNote.new(:STARLIGHT, "<icon=typePSYCHIC> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:STARLIGHT, "<icon=typeFAIRY> attacks <icon=fieldUp> <c=green>x1.3</c>"),
    PBFieldNote.new(:STARLIGHT, "<icon=typeDARK> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:STARLIGHT, "<icon=typeDARK> attacks <icon=fieldPlus,tts=\"gain the\"> <icon=typeFAIRY>"),
    PBFieldNote.new(:STARLIGHT, "Victory Star damage <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:STARLIGHT, "Geomancy <icon=fieldChange,tts=\"has\"> <c=green>no charge turn</c>"),
    PBFieldNote.new(:STARLIGHT, "<c=green>Activates</c> Marvel Scale"),
    PBFieldNote.new(:STARLIGHT, "Illuminate <icon=fieldPlus> <c=green>boosts</c> Sp.Atk . . .", "Illuminate boosts Special Attack by two stages upon switching in."),
    PBFieldNote.new(:STARLIGHT, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:STARLIGHT, :damageMods, 1.5)),
    PBFieldNote.new(:STARLIGHT, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", feToStringName(:STARLIGHT, :damageMods, 2.0)),
    PBFieldNote.new(:STARLIGHT, "Doom Desire <icon=fieldUp> <c=green>x4</c> and <icon=fieldPlus,tts=\"gains the\"> <icon=typeFIRE>"),
    PBFieldNote.new(:STARLIGHT, "Certain attacks <icon=fieldChange,tts=\"change to\"> <icon=typeFAIRY> . . .", "Solar Beam, Solar Blade"),
    PBFieldNote.new(:STARLIGHT, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Cosmic Power, Flash"),
    PBFieldNote.new(:STARLIGHT, "Wish recovery <icon=fieldChange> <c=green>75 % HP</c>"),
    PBFieldNote.new(:STARLIGHT, "Certain attacks <icon=fieldPlus> <c=green>boost</c> stats . . .", "Healing Wish and Lunar Dance boost the recipient's Attack and Special Attack."),
    PBFieldNote.new(:STARLIGHT, "Moonlight recovery <icon=fieldChange> <c=green>75 % HP</c>"),
    PBFieldNote.new(:STARLIGHT, "<c=green>Enables</c> Aurora Veil"),
    PBFieldNote.new(:STARLIGHT, "Shadow Shield <icon=fieldPlus> <c=green>reduces</c> damage . . .", "Shadow Shield reduces damage from all super-effective hits by 25%."),
    PBFieldNote.new(:STARLIGHT, "Nature Power <icon=fieldChange> #{feToStringName(:STARLIGHT, :naturePower)}"),
    PBFieldNote.new(:STARLIGHT, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:STARLIGHT, :mimicry)).upcase}>"),
    PBFieldNote.new(:STARLIGHT, "Secret Power effect <icon=fieldChange> Sp.Def <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:STARLIGHT, "Activates <c=orange>Magical Seed</c> . . .", "Boosts Special Attack and applies Wish to the user."),

    # New World
    PBFieldNote.new(:NEWWORLD, "<c=orange>\"From darkness, from stardust . . .\"</c>", "From memories of eons past and visions yet to come..."),
    PBFieldNote.new(:NEWWORLD, "Certain abilities change type . . .", "Multitype and RKS System randomly select a new type each turn."),
    PBFieldNote.new(:NEWWORLD, "Speed <icon=fieldDown> <c=red>x0.75</c> when grounded"),
    PBFieldNote.new(:NEWWORLD, "Airborne Pokémon's defenses <icon=fieldDown> <c=red>x0.9</c>"),
    PBFieldNote.new(:NEWWORLD, "<c=red>Prevents</c> all weather"),
    PBFieldNote.new(:NEWWORLD, "<c=red>Prevents</c> generated fields"),
    PBFieldNote.new(:NEWWORLD, "<c=red>Prevents</c> field removal"),
    PBFieldNote.new(:NEWWORLD, "<icon=typeDARK> attacks <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:NEWWORLD, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:NEWWORLD, :damageMods, 1.5)),
    PBFieldNote.new(:NEWWORLD, "Certain attacks <icon=fieldUp> <c=green>x2</c> . . .", feToStringName(:NEWWORLD, :damageMods, 2.0)),
    PBFieldNote.new(:NEWWORLD, "Certain attacks <icon=fieldDown> <c=red>x0.25</c> . . .", feToStringName(:NEWWORLD, :damageMods, 0.25)),
    PBFieldNote.new(:NEWWORLD, "Fissure <c=red>fails</c>"),
    PBFieldNote.new(:NEWWORLD, "Doom Desire <icon=fieldUp> <c=green>x4</c> and <icon=fieldPlus,tts=\"gains the\"> <icon=typeFIRE>"),
    PBFieldNote.new(:NEWWORLD, "Heart Swap <icon=fieldPlus,tts=\"additionally inflicts the\"> Pain Split effect"),
    PBFieldNote.new(:NEWWORLD, "Victory Star damage <icon=fieldUp> <c=green>x1.5</c>"),
    PBFieldNote.new(:NEWWORLD, "Dark Void's Accuracy <icon=fieldChange> <c=green>85</c>"),
    PBFieldNote.new(:NEWWORLD, "Lunar Dance <icon=fieldPlus> <c=green>boosts</c> all stats"),
    PBFieldNote.new(:NEWWORLD, "Certain moves' effect <icon=fieldChange> <c=green>8</c> turns", "Trick Room, Magic Room, Wonder Room"),
    PBFieldNote.new(:NEWWORLD, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Cosmic Power, Flash"),
    PBFieldNote.new(:NEWWORLD, "Moonlight recovery <icon=fieldChange> <c=green>75 % HP</c>"),
    PBFieldNote.new(:NEWWORLD, "Becomes <c=orange>Starlight Arena</c> when . . .", "...when Geomancy is used, or when Gravity is used for as long as Gravity lasts."),
    PBFieldNote.new(:NEWWORLD, "Nature's Madness damage <icon=fieldChange> <c=green>1/2 max HP</c>"),
    PBFieldNote.new(:NEWWORLD, "Guardian of Alola damage <icon=fieldChange> <c=green>3/4 max HP</c>"),
    PBFieldNote.new(:NEWWORLD, "Shadow Shield <icon=fieldPlus> <c=green>reduces</c> damage . . .", "Shadow Shield reduces damage from all super-effective hits by 25%."),
    PBFieldNote.new(:NEWWORLD, "Nature Power <icon=fieldChange> #{feToStringName(:NEWWORLD, :naturePower)}"),
    PBFieldNote.new(:NEWWORLD, "Camouflage <icon=fieldChange> random type"),
    PBFieldNote.new(:NEWWORLD, "Secret Power effect <icon=fieldChange> All stats <icon=fieldDown,tts=\"lowered by one stage\">"),
    PBFieldNote.new(:NEWWORLD, "Activates <c=orange>Magical Seed</c> . . .", "Boosts all stats, but makes the user recharge."),

    # Inverse Field
    PBFieldNote.new(:INVERSE, "<c=orange>\"#{FIELDEFFECTS.dig(:INVERSE, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:INVERSE, "The type chart is <c=orange> inverted</c>"),
    PBFieldNote.new(:INVERSE, "<c=green>Created</c> by Topsy-Turvy when . . .", "Created by Topsy-Turvy for 3 turns when the attacker does not hold an Everstone."),
    PBFieldNote.new(:INVERSE, "Nature Power <icon=fieldChange> #{feToStringName(:INVERSE, :naturePower)}"),
    PBFieldNote.new(:INVERSE, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:INVERSE, :mimicry)).upcase}>"),
    PBFieldNote.new(:INVERSE, "Secret Power effect <icon=fieldChange> Confuses"),
    PBFieldNote.new(:INVERSE, "Activates <c=orange>Magical Seed</c> . . .", "Boosts all stats, but makes the user recharge."),

    # Psychic Field
    PBFieldNote.new(:PSYTERRAIN, "<c=orange>\"#{FIELDEFFECTS.dig(:PSYTERRAIN, :fieldMessage)[0]}\"</c>"),
    PBFieldNote.new(:PSYTERRAIN, "Priority attacks <c=red>fail</c> when . . .", "...when used on grounded targets."),
    PBFieldNote.new(:PSYTERRAIN, "<c=green>Created</c> by . . .", "Psychic Surge, Psychic Terrain, Genesis Supernova (5 turns)"),
    PBFieldNote.new(:PSYTERRAIN, "<icon=typePSYCHIC> attacks <icon=fieldUp> <c=green>x1.5</c> when . . .", "...when attacker is grounded."),
    PBFieldNote.new(:PSYTERRAIN, "Certain attacks <icon=fieldUp> <c=green>x1.5</c> . . .", feToStringName(:PSYTERRAIN, :damageMods, 1.5)),
    PBFieldNote.new(:PSYTERRAIN, "Pure Power boost <icon=fieldChange> Sp.Atk"),
    PBFieldNote.new(:PSYTERRAIN, "Anticipation <icon=fieldPlus> <c=green>boosts</c> Sp.Atk . . .", "Anticipation boosts Special Attack by two stages upon switching in."),
    PBFieldNote.new(:PSYTERRAIN, "Telepathy <c=green>boosts</c> Speed <c=green>x2</c>"),
    PBFieldNote.new(:PSYTERRAIN, "Certain stat moves' effect <icon=fieldUp,tts=\"boosted\"> <c=green>+1</c> . . .", "Calm Mind, Cosmic Power, Kinesis, Meditate, Nasty Plot"),
    PBFieldNote.new(:PSYTERRAIN, "Certain attacks <icon=fieldPlus> <c=green>boost</c> Sp.Atk . . .", "Meditate, Mind Reader, Miracle Eye, Psych Up boost Special Attack by two stages."),
    PBFieldNote.new(:PSYTERRAIN, "Hypnosis' Accuracy <icon=fieldChange> <c=green>90</c>"),
    PBFieldNote.new(:PSYTERRAIN, "Kinesis <icon=fieldPlus> <icon=fieldUp,tts=\"boosts\"> Attack/Sp.Atk"),
    PBFieldNote.new(:PSYTERRAIN, "Telekinesis <icon=fieldPlus> <icon=fieldDown> Defense/Sp.Def . . .", "Telekinesis decreases opponent's Defense and Special Defense by two stages."),
    PBFieldNote.new(:PSYTERRAIN, "Certain moves' effect <icon=fieldChange> <c=green>8</c> turns", "Gravity, Magic Room, Trick Room, Wonder Room"),
    PBFieldNote.new(:PSYTERRAIN, "Shattered Psyche <icon=fieldPlus> confuses"),
    PBFieldNote.new(:PSYTERRAIN, "Nature Power <icon=fieldChange> #{feToStringName(:PSYTERRAIN, :naturePower)}"),
    PBFieldNote.new(:PSYTERRAIN, "Camouflage <icon=fieldChange> <icon=type#{getTypeName(FIELDEFFECTS.dig(:PSYTERRAIN, :mimicry)).upcase}>"),
    PBFieldNote.new(:PSYTERRAIN, "Secret Power effect <icon=fieldChange> Confuses"),
    PBFieldNote.new(:PSYTERRAIN, "Activates <c=orange>Magical Seed</c> . . .", "Boosts Special Attack by two stages, but confuses the user.")

  ]
  File.open("Data/fieldnotes.dat", "wb") { |file|
    Marshal.dump(all_field_notes, file)
  }
end
