Skip to content

Sequential Innate Skills

Sleys edited this page Sep 14, 2026 · 1 revision

Sequential Innate Skills are designed for combat abilities that execute a predefined sequence of animations.

Unlike Simple Innate Skills, which execute a single animation, Sequential Innate Skills contain an ordered list of animations. Each activation advances through the list and executes the corresponding animation.

For example, a skill can define three animations:

Activation 1 → Animation 1
Activation 2 → Animation 2
Activation 3 → Animation 3

This makes Sequential Innate Skills useful for attacks that progressively chain into different animations.


📁 File Locations & Loading Methods

Depending on whether you want users to be able to modify the skills locally or bundle them inside your mod, choose one of the following paths:

⚙️ Option A: Local Config Folder

Use this path if you want the setup to be easily accessible and editable by servers or pack developers.

  • Path: .minecraft/config/epicfight_edp/innate_skill_builder/sequential_innate_skill/*.json
  • ⚠️ Rule: You MUST explicitly declare the modid field inside the JSON when using this folder.

📦 Option B: In-Jar (Bundled Data-Driven)

Use this path to ship skills natively pre-configured inside your mod jar or data-driven setup.

  • Path: data_driven/<your_modid>/innate_skill_builder/sequential_innate_skill/*.json
  • 💡 Rule: The modid field can be safely omitted inside the JSON because the directory's namespace acts as the fallback namespace automatically.

📄 JSON Structure & Schema

{
  "modid": "epicfight",
  "name": "sequential_impact",

  "sequential_list": [
    {
      "animation": "epicfight:biped/skill/rushing_tempo1",
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 1.2,
          "armor_negation": 20.0,
          "impact": 1.6,
          "stun_type": "long"
        }
      ]
    },
    {
      "animation": "epicfight:biped/skill/rushing_tempo2",
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 1.4,
          "armor_negation": 20.0,
          "impact": 1.6,
          "stun_type": "long"
        }
      ]
    },
    {
      "animation": "epicfight:biped/skill/rushing_tempo3",
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 1.8,
          "armor_negation": 20.0,
          "impact": 1.6,
          "stun_type": "long"
        }
      ]
    }
  ]
}

📋 Parameters & Field Definitions

Field Type Description
modid String The target mod namespace used to register the skill.
name String Unique internal identifier for your custom innate skill.
sequential_list Array Ordered list of animations executed by the skill.
disableTooltipProperties Boolean Prevents animation properties from being displayed in the tooltip.
tooltip Array Optional list of custom tooltip components.

⚔️ Sequential List

The sequential_list field contains the animations that make up the skill sequence.

Each entry contains an animation and its corresponding combat properties.

"sequential_list": [
  {
    "animation": "epicfight:biped/skill/rushing_tempo1",
    "properties": [
      {
        "max_strikes": 1.0,
        "damage_multiplier": 1.2,
        "armor_negation": 20.0,
        "impact": 1.6,
        "stun_type": "long"
      }
    ]
  }
]

The order of the entries determines the order in which the animations are executed.

For example:

sequential_list
      │
      ├── [0] rushing_tempo1
      │
      ├── [1] rushing_tempo2
      │
      └── [2] rushing_tempo3

The skill therefore executes:

Activation
    │
    ▼
rushing_tempo1
    │
    ▼
rushing_tempo2
    │
    ▼
rushing_tempo3

🔢 Sequence Order

The position of an animation inside sequential_list determines its position in the sequence.

The first entry is executed first, followed by the second, third, and so on.

[0] → [1] → [2] → [3] → ...

For example:

"sequential_list": [
  {
    "animation": "example:attack_1"
  },
  {
    "animation": "example:attack_2"
  },
  {
    "animation": "example:attack_3"
  }
]

produces:

Activation 1 → attack_1
Activation 2 → attack_2
Activation 3 → attack_3

The sequence is therefore controlled entirely by the order of the JSON entries.


⚔️ Combat Properties Matrix

Each animation in the sequence can define its own animation phase properties.

Property Type Description
max_strikes Float Maximum number of targets/entities that can be hit in a single sweep.
damage_multiplier Float Raw base attack damage scaling factor.
armor_negation Float Percentage value of the victim's armor ignored during damage calculations.
impact Float Stagger intensity and hit-reaction strength forced onto the target.
stun_type String The visual/mechanical stun state applied on hit.
extra_damage Boolean Allows the ability's damage to scale with the Sweeping Edge enchantment.
swing_sound Resource Location Sound played while swinging.
hit_sound Resource Location Sound played when hitting an entity.
particle Resource Location Hit particle spawned on impact.

Each sequence entry can therefore have different combat properties.

For example:

Animation 1 → Damage × 1.2
Animation 2 → Damage × 1.4
Animation 3 → Damage × 1.8

This allows later attacks in a sequence to become progressively stronger or otherwise behave differently.


💥 Valid Hit Stun Types

When defining your stun_type string value, use any of the following standard identifiers:

  • short
  • long
  • hold
  • knockback
  • neutralize
  • fall
  • none

📐 Animation Phase Properties

The properties array of each sequence entry corresponds to the phases of that animation.

{
  "animation": "epicfight:biped/skill/rushing_tempo1",
  "properties": [
    {
      "max_strikes": 1.0,
      "damage_multiplier": 1.2,
      "armor_negation": 20.0,
      "impact": 1.6,
      "stun_type": "long"
    }
  ]
}

For animations containing multiple phases, multiple property entries can be provided:

Animation
│
├── Phase 0 → properties[0]
├── Phase 1 → properties[1]
├── Phase 2 → properties[2]
└── ...

Only as many property entries as there are available animation phases are applied.

This allows every animation in the sequence to define its own phase-specific combat behavior.


📋 Tooltip (Optional)

The tooltip array defines a list of text components displayed in the skill description.

Each entry is resolved independently and can represent a key binding, localized text, or a dynamically calculated numeric value.

Components are rendered in the order they appear in the array.

Supported Component Types

1. key_binding

Displays the currently assigned key for the specified key mapping.

{
  "argTargetType": "key_binding",
  "translatableKey": "key.mouse.right",
  "colorKey": "aqua"
}

2. scripted_text

Displays a translatable text component.

{
  "argTargetType": "scripted_text",
  "translatableKey": "example.skill.description",
  "colorKey": "gold"
}

3. damage_operation

Displays a numeric value that can be calculated from either a fixed base value or the attack damage of the held item.

{
  "argTargetType": "damage_operation",
  "baseValue": 10.0,
  "operation": "multiplication",
  "modifier": 1.5,
  "format": "%.1f",
  "colorKey": "red"
}

📋 Component Properties

Property Required Description
argTargetType Yes Type of component to render.
translatableKey Depends Translation key or keybinding identifier used by the component.
colorKey No Text color applied to the rendered component.
baseValue No Base numeric value used by damage_operation.
operation No Mathematical operation applied to the value.
modifier No Operand used by the selected operation.
format No Java format string used to display numeric values.

💥 Supported Operations

The following operations are available for damage_operation.

Operation Result
addition base + modifier
subtract base - modifier
multiplication base * modifier
division base / modifier

If baseValue is omitted, the component uses the attack damage of the provided item stack as its starting value.

This allows tooltip values to scale dynamically with weapon attributes.


📋 Disable Tooltip Properties

The disableTooltipProperties field prevents the automatic animation phase properties from being displayed in the skill tooltip.

"disableTooltipProperties": true

By default:

"disableTooltipProperties": false

When disabled, custom tooltip components can still be used.

This is useful when the skill requires a fully customized tooltip rather than automatically displaying its animation properties.


🔄 Sequential Execution

Sequential Innate Skills are intended to be used as a chain of independent animation executions.

For example, the following configuration:

"sequential_list": [
  {
    "animation": "example:attack_1"
  },
  {
    "animation": "example:attack_2"
  },
  {
    "animation": "example:attack_3"
  }
]

can be visualized as:

┌───────────────┐
│   Activation  │
└───────┬───────┘
        │
        ▼
┌───────────────┐
│    attack_1   │
└───────┬───────┘
        │
   next activation
        │
        ▼
┌───────────────┐
│    attack_2   │
└───────┬───────┘
        │
   next activation
        │
        ▼
┌───────────────┐
│    attack_3   │
└───────────────┘

This makes it possible to construct multi-step attacks while keeping every step independently configurable.


💡 Example: Progressive Attack

A common use case is an attack sequence where each animation becomes progressively stronger.

{
  "modid": "epicfight",
  "name": "sequential_impact",

  "sequential_list": [
    {
      "animation": "epicfight:biped/skill/rushing_tempo1",
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 1.2,
          "armor_negation": 20.0,
          "impact": 1.6,
          "stun_type": "long"
        }
      ]
    },
    {
      "animation": "epicfight:biped/skill/rushing_tempo2",
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 1.4,
          "armor_negation": 20.0,
          "impact": 1.6,
          "stun_type": "long"
        }
      ]
    },
    {
      "animation": "epicfight:biped/skill/rushing_tempo3",
      "properties": [
        {
          "max_strikes": 1.0,
          "damage_multiplier": 1.8,
          "armor_negation": 20.0,
          "impact": 1.6,
          "stun_type": "long"
        }
      ]
    }
  ]
}

The resulting sequence is:

rushing_tempo1
Damage × 1.2
      │
      ▼
rushing_tempo2
Damage × 1.4
      │
      ▼
rushing_tempo3
Damage × 1.8

EF: Extended Datapacks

📦 Data

🧰 Core

👁️ Visuals

⚔️ Combat

🗝️ Skill Builder

🛠️ Innate Builder

🗡️ Animation Operations

⚙️ Third-Party

Clone this wiki locally