Skip to content

Battle_Forms.json

Unariginal edited this page Sep 4, 2026 · 1 revision

Battle_Forms.json

Configures the Feature values behind Pokémon that change form mid-battle for reasons other than Mega Evolution, Dynamax, or Terastallization — weather-reactive forms (Castform, Cherrim), stance changes (Aegislash), and other in-battle form swaps (Minior, Mimikyu, Greninja's Ash form, Wishiwashi, Morpeko, Palafin, Eiscue, Cramorant, Darmanitan, Xerneas, Terapagos, Meloetta). Located at GenesisForms/battle_forms.json.

Note

This file only maps each form change to the Cobblemon Feature that gets applied — it does not control what causes the switch. The trigger condition (weather changing, an ability activating, a stance-changing move being used, an item being eaten, etc.) is handled by showdown. You can rename the Feature values used, but you cannot use this file to change when a swap happens or add a trigger to a Pokémon that doesn't already have one built in.

📄 Full default file
{
  "aegislash_stance": {
    "species": "aegislash",
    "default_form": {
      "feature_name": "stance_forme",
      "feature_value": "shield"
    },
    "forms": {
      "blade": {
        "feature_name": "stance_forme",
        "feature_value": "blade"
      }
    }
  },
  "minior_shield": {
    "species": "minior",
    "default_form": {
      "feature_name": "meteor_shield",
      "feature_value": "core"
    },
    "forms": {
      "meteor": {
        "feature_name": "meteor_shield",
        "feature_value": "meteor"
      }
    }
  },
  "castform_forecast": {
    "species": "castform",
    "default_form": {
      "feature_name": "forecast_form",
      "feature_value": "normal"
    },
    "forms": {
      "sunny": {
        "feature_name": "forecast_form",
        "feature_value": "sunny"
      },
      "rainy": {
        "feature_name": "forecast_form",
        "feature_value": "rainy"
      },
      "snowy": {
        "feature_name": "forecast_form",
        "feature_value": "snowy"
      }
    }
  },
  "wishiwashi_schooling": {
    "species": "wishiwashi",
    "default_form": {
      "feature_name": "schooling_form",
      "feature_value": "solo"
    },
    "forms": {
      "school": {
        "feature_name": "schooling_form",
        "feature_value": "school"
      }
    }
  },
  "mimikyu_disguise": {
    "species": "mimikyu",
    "default_form": {
      "feature_name": "disguise_form",
      "feature_value": "disguised"
    },
    "forms": {
      "busted": {
        "feature_name": "disguise_form",
        "feature_value": "busted"
      }
    }
  },
  "greninja_ash": {
    "species": "greninja",
    "default_form": {
      "feature_name": "battle_bond",
      "feature_value": "bond"
    },
    "forms": {
      "ash": {
        "feature_name": "battle_bond",
        "feature_value": "ash"
      }
    }
  },
  "cherrim_blossom": {
    "species": "cherrim",
    "default_form": {
      "feature_name": "blossom_form",
      "feature_value": "overcast"
    },
    "forms": {
      "sunshine": {
        "feature_name": "blossom_form",
        "feature_value": "sunshine"
      }
    }
  },
  "morpeko_hunger": {
    "species": "morpeko",
    "default_form": {
      "feature_name": "hunger_mode",
      "feature_value": "full_belly"
    },
    "forms": {
      "hangry": {
        "feature_name": "hunger_mode",
        "feature_value": "hangry"
      }
    }
  },
  "palafin_dolphin": {
    "species": "palafin",
    "default_form": {
      "feature_name": "dolphin_form",
      "feature_value": "zero"
    },
    "forms": {
      "hero": {
        "feature_name": "dolphin_form",
        "feature_value": "hero"
      }
    }
  },
  "eiscue_head": {
    "species": "eiscue",
    "default_form": {
      "feature_name": "penguin_head",
      "feature_value": "ice_face"
    },
    "forms": {
      "noice": {
        "feature_name": "penguin_head",
        "feature_value": "noice"
      }
    }
  },
  "cramorant_missile": {
    "species": "cramorant",
    "default_form": {
      "feature_name": "missile_form",
      "feature_value": "none"
    },
    "forms": {
      "gulping": {
        "feature_name": "missile_form",
        "feature_value": "gulping"
      },
      "gorging": {
        "feature_name": "missile_form",
        "feature_value": "gorging"
      }
    }
  },
  "darmanitan_blazing": {
    "species": "darmanitan",
    "default_form": {
      "feature_name": "blazing_mode",
      "feature_value": "standard"
    },
    "forms": {
      "zen": {
        "feature_name": "blazing_mode",
        "feature_value": "zen"
      }
    }
  },
  "xerneas_life": {
    "species": "xerneas",
    "default_form": {
      "feature_name": "life_mode",
      "feature_value": "neutral"
    },
    "forms": {
      "active": {
        "feature_name": "life_mode",
        "feature_value": "active"
      }
    }
  },
  "terapagos_tera": {
    "species": "terapagos",
    "default_form": {
      "feature_name": "tera_form",
      "feature_value": "normal"
    },
    "forms": {
      "terastal": {
        "feature_name": "tera_form",
        "feature_value": "terastal"
      }
    }
  },
  "meloetta_song": {
    "species": "meloetta",
    "default_form": {
      "feature_name": "song_forme",
      "feature_value": "aria"
    },
    "forms": {
      "pirouette": {
        "feature_name": "song_forme",
        "feature_value": "pirouette"
      }
    }
  }
}

Top Level

Field Type Description
<battle_form_id> object A single battle-form definition, keyed by its own unique ID (e.g. aegislash_stance, castform_forecast). The ID is only used internally — for event lookups (see below) and as the map key — and isn't shown to players.

Battle Form Object

Field Type Description
species string The species this entry applies to. Compared against the Pokémon's Showdown ID when detecting a form swap mid-battle, and against its species name when reverting the form back to default on battle end.
default_form object The Feature (feature_name/feature_value) applied when the Pokémon reverts to its baseline form — normally on leaving battle (fainting is the one exception; a fainted Pokémon keeps its last battle form rather than being reset).
forms object Map of <form_name> → Feature (feature_name/feature_value), one entry per non-default form this species can switch into during battle. <form_name> (e.g. "blade", "sunny", "ash") is the internal form identifier GenesisForms' battle-event code checks for per species — it is not free-form; it has to match the name the hardcoded trigger logic for that Pokémon actually looks up (see the caveat below).

Each default_form/forms entry shares the same two-field shape:

Field Type Description
feature_name string The Cobblemon species feature written to switch the Pokémon into (or out of) this form.
feature_value string The value written to feature_name.

Warning

Because the trigger logic that decides when to look up a given <form_name> (e.g. weather turning sunny for Castform, Aegislash using a stance-changing move) is hardcoded per species rather than data-driven, you can safely reword the feature_name/feature_value pairs to match your own custom Features, but you cannot rename the forms keys ("blade", "sunny", "ash", etc.) or add brand-new keys and expect them to be reachable — nothing will ever look them up. This file is fine-tuning what an existing hardcoded form swap applies, not a general-purpose form-change trigger system.

See Also

  • Events — the form_changes.battle_forms events section (particles, glow, scale animations played when a battle form changes or reverts).
  • Config.json — general GenesisForms settings.
  • How-It-Works — the full mechanical explanation of how each battle form's trigger actually works in-game.

Config Files

─ items/accessories/Accessories.json

─ items/bag_items/Max_Items.json

─ items/bag_items/Tera_Shards.json

─ items/held_items/Held_Battle_Items.json

─ items/held_items/Held_Form_Items.json

─ items/held_items/Z_Crystals.json

─ items/key_items/Fusion_Items.json

─ items/key_items/Key_Form_Items.json

─ items/key_items/Possession_Items.json

Clone this wiki locally