Epic Fight:BK's Mob Attack Patterns
==============================
WHAT THIS MOD DOES
-------------------
Lets you assign any mob to a specific Epic Fight movesets archtypes. In the config
file you write a line like:
minecraft:pillager = soldier 80, brave_soldier 10, moon_knight 10
...naming the mob and which moveset(s) it can spawn with, each with a
percentage/share of how often it rolls that one. The mob then fights using attack animations, footwork, and combos --
instead of the default combat AI.
HOW TO USE IT
-------------
1. Open config(bks_mobs.toml) and, under [presets], write one line per mob:
<mob id> = <moveset> <share>, <moveset> <share>, ...
A moveset written with no number is worth 1 share. Shares don't need to
add up to 100 -- "soldier 80, brave_soldier 10, moon_knight 10" and
"soldier 8, brave_soldier 1, moon_knight 1" mean the same odds.
2. Save and restart.
The mod already ships with some mobs assigned by default (vindicators,
pillagers, piglins, husks, wither skeletons) -- edit or clear those lines
to assign your own.
Optional mods:
- Epic Fight: BK's Armaments -- if installed, you would gain access to movesets of Boss weapons though weapon skill.
- Epic Fight Poise addon -- if installed, combat becames far more immersive.
==================================================================
THE MOVESETS -- DECISION TREES
==================================================================
Below is the full combat logic behind every moveset: what a mob considers
at each range, how often it picks each option, and the rules that shape
the order things come out in.
HOW TO READ THESE TREES
------------------------
- RANGE is the distance in blocks to the target. Each moveset splits it
into BANDS; bands overlap slightly on purpose, and inside an overlap the
mob flips a coin between the two bands' tables.
- Some movesets (Knight, Moon Knight) roll in two steps: first a TIER by
the tier's own odds, then an OPTION inside that tier by the option's own
odds. A move's real frequency is (tier chance) x (its share of the
tier). Other movesets (Soldier, Brave Soldier, Wallaxeman) have just one
tier, so the percentages shown ARE the real odds.
- An arrow ( -> ) is a SCRIPTED sequence: once picked, it plays straight
through in that order, no further rolls until it is done.
- "Circling" and "walking" END the current combo -- picking one is how a
string of attacks stops.
- Cooldowns are per move (or per named group) and run independently.
- If an option gets filtered out by an order rule or its own cooldown, its
share is handed to whatever is LEFT in its tier (the rest re-balance to
fill the gap). This matters: a heavily-gated move can end up far rarer
than its written number if the gate blocks it most of the time.
- Past a moveset's listed max range, the mob stops rolling entirely and
just closes the distance on foot.
-----------------------------------------------------------------
KNIGHT (default: vindicator)
-----------------------------------------------------------------
Fixed tier odds at EVERY band: Very High 55% / High 25% / Medium 15% / Small 5%
BAND: Small quarters (0 - 2 blocks)
Very High (55%)
30% -> Auto chain (1-2 swings, alternating)
10% -> Stomp [cooldown 8s]
60% -> Circle 0.75s [cooldown 4s]
High (25%)
40% -> Poke
30% -> Downward Strike -> Heavy [cooldown 10s]
30% -> Crucible -> Rush [cooldown 10s]
Medium (15%)
20% -> Heavy [cooldown 10s]
30% -> Downward Strike [cooldown 10s]
30% -> Crucible [cooldown 10s]
20% -> Rush [cooldown 10s]
BAND: Medium distance (1.9 - 4.5 blocks)
Very High (55%)
50% -> Circle 0.75s [cooldown 4s]
50% -> Auto chain (1-2 swings)
High (25%)
40% -> Poke
20% -> Circle 3s [cooldown 10s]
15% -> Downward Strike -> Heavy [cooldown 10s]
15% -> Rush [cooldown 4s]
10% -> Crucible -> Rush [cooldown 10s]
Medium (15%)
50% -> Heavy [cooldown 10s]
50% -> Stomp [cooldown 8s]
Small (5%)
50% -> Dash [cooldown 4s]
50% -> Heavy Dash [cooldown 4s]
BAND: Long distance (4.4 - 5.5 blocks)
Very High (55%)
50% -> Auto chain (1-2 swings)
50% -> Circle 0.75s [cooldown 4s]
High (25%)
30% -> Heavy Dash [cooldown 6s]
30% -> Dash [cooldown 6s]
20% -> Impaling Thrust [cooldown 10s]
20% -> Circle 1.5s [cooldown 10s]
Medium (15%)
100% -> Rush [cooldown 4s]
Small (5%)
100% -> Crucible -> Rush [cooldown 10s]
BAND: Very long distance (5.4 - 7 blocks) -- one flat tier, always answers
30% -> Dash [cooldown 4s]
20% -> Heavy Dash [cooldown 4s]
20% -> Impaling Thrust [cooldown 10s]
40% -> Walk toward target, 0.5s
REACTION TO BEING HIT (close/medium range only):
70% Ignore
15% Stomp [cooldown 8s]
5% Crucible [cooldown 10s]
10% Crucible -> Rush [cooldown 10s]
ORDER RULES:
- Auto chains may follow anything, including another auto chain (a
forced breather circle caps a run at about 6 swings).
- Dash never follows Auto2. Heavy never follows Auto2 or Dash.
- Poke almost never follows Auto1 (only 1 roll in 10 lets it through).
- Rush never follows Rush.
-----------------------------------------------------------------
SOLDIER (default: pillager, piglin)
-----------------------------------------------------------------
One flat tier per band -- the percentages below are the real odds.
No reaction table: he does not answer being hit with anything scripted.
BAND: Small quarters (0 - 2 blocks)
30% -> Auto1
20% -> Auto2
10% -> Auto3
5% -> Poke
5% -> Downward Strike
30% -> Circle 0.75s
BAND: Medium distance (1.5 - 4.5 blocks)
30% -> Auto1
20% -> Auto2
15% -> Auto3
10% -> Downward Strike
5% -> Heavy Dash
15% -> Circle 0.75s
5% -> Poke
BAND: Long distance (3 - 5.5 blocks)
80% -> Circle 1.5s
10% -> Heavy Dash
10% -> Poke
ORDER RULES:
- The same auto never plays twice in a row.
- Auto1 additionally stays locked out for 2 seconds after itself or
Auto3 -- the pause that stops him leading with the same swing every
time.
- Poke ends the string outright (no follow-up roll); everything else
keeps the combo going.
FOOTWORK: holds orbit at 3-4 blocks; only corrects course once outside a
2.5-4.5 band. Roughly a third of soldiers also carry a crossbow, drawing
it at range and switching to melee close up (set in the config, not the
tree).
-----------------------------------------------------------------
BRAVE SOLDIER (default: husk)
-----------------------------------------------------------------
One flat tier per band.
BAND: Small quarters (0 - 2 blocks)
20% -> Auto1
10% -> Auto2 -> Auto3
5% -> Auto2
10% -> Stomp [cooldown 12s]
40% -> Circle 0.75s
5% -> Downward Strike
5% -> Downward Strike -> Heavy
5% -> Heavy
BAND: Medium distance (1.9 - 4.5 blocks)
20% -> Auto1
15% -> Auto2 -> Auto3
10% -> Auto2
5% -> Stomp [cooldown 12s]
30% -> Circle 0.75s
5% -> Downward Strike
5% -> Downward Strike -> Heavy
5% -> Heavy
5% -> Dash
BAND: Long distance (4.4 - 7 blocks)
20% -> Dash
80% -> Circle 0.75s
REACTION TO BEING HIT (within 4.5 blocks):
85% Ignore
15% Stomp [cooldown 12s]
ORDER RULES:
- Auto1 opens a string; it stays locked out for 2 seconds after itself
or Auto3.
- Auto2 never plays twice in a row. (Auto3 is only ever reached as the
back half of "Auto2 -> Auto3" -- it is never rolled on its own.)
FOOTWORK: holds orbit at 3-4 blocks; only corrects course once outside a
2.5-4.5 band. Circling takes 30-40% of every roll at every range -- he
reads as wary rather than relentless.
-----------------------------------------------------------------
MOON KNIGHT (default: rare pillager roll)
-----------------------------------------------------------------
A powerstanced dual-wielder. Her bands use their own tier splits (not the
Knight's fixed 55/25/15/5), and two of her tiers share the same "phrase
book" of combo options.
PHRASE BOOK (shared by the Close and Mid bands' second tier):
15% -> Upward Cross -> Cross Down [cooldown 3s]
10% -> Right Cross -> Cross Down [cooldown 3s]
5% -> Left Upward Slash -> Right Cross -> Cross Down [cooldown 3s]
10% -> Flurry [cooldown 3s]
10% -> Basic Slash -> Spin [cooldown 3s]
10% -> Preult -> Demise [cooldown 3s]
10% -> Preult [cooldown 3s]
5% -> Left Upward Slash -> Right Cross -> Preult [cooldown 3s]
10% -> Backstep [cooldown 4s]
10% -> Heavy [cooldown 3s]
BAND: Point blank (0 - 1.5 blocks)
Tier "High chance" (80%)
20% -> Dash-right step -> Dash-right slash [cooldown 4s]
20% -> Dash-left step -> Dash-left stab [cooldown 4s]
15% -> Circle 0.75s [cooldown 4s]
30% -> Backstep [cooldown 4s]
Tier "Phrase book" (20%) -- see above
BAND: Mid range (1.4 - 5 blocks)
Tier "Dash-heavy" (70%)
35% -> Dash-right step -> Dash-right slash [cooldown 4s]
35% -> Dash-left step -> Dash-left stab [cooldown 4s]
15% -> Circle 0.75s [cooldown 4s]
Tier "Phrase book" (30%) -- see above
BAND: Far (4.9 - 7 blocks) -- one flat tier, always answers
20% -> Dash-right step -> Dash-right slash [cooldown 4s]
20% -> Dash-left step -> Dash-left stab [cooldown 4s]
30% -> Circle 0.75s
No reaction table -- being hit does not interrupt her.
ORDER RULES:
- Right Cross only follows the Dash-right slash or the Left Upward
Slash.
- Cross Down only follows Right Cross or Upward Cross.
- A dash never follows the OPPOSITE dash's finisher within 2 seconds
(right after left-stab, or left after right-slash).
- A rolled Circle never follows either dash finisher (the forced
breather circle below is the one exception).
- A dash-step flows straight into its paired strike with no room to
change your mind -- they are written as one sequence.
BREATHER: after a 2-piece combo, 50% chance she is forced into a
2-second circle; after 3 or more pieces, always. Circling itself never
counts toward the piece total.
FOOTWORK: holds orbit at 3-5 blocks (the widest of any moveset); only
corrects course once outside a 1.5-6.5 band.
-----------------------------------------------------------------
WALLAXEMAN (default: wither skeleton)
-----------------------------------------------------------------
The simplest tree in the mod -- no order rules at all, because his two
attack "options" are already fully scripted strings; there is nothing
looser left to gate.
BAND: Small quarters (0 - 2.5 blocks) -- a flat hand, every option equal
20% -> Circle 0.75s
20% -> Auto1 -> Auto2 -> Auto1
20% -> Auto2 -> Auto1
20% -> Dash
20% -> Jump Heavy
BAND: Medium distance (2.4 - 4 blocks) -- identical flat hand
20% -> Circle 0.75s
20% -> Auto1 -> Auto2 -> Auto1
20% -> Auto2 -> Auto1
20% -> Dash
20% -> Jump Heavy
BAND: Long distance (3.9 - 6.5 blocks)
60% -> Circle 0.75s
20% -> Jump Heavy
20% -> Dash
No order rules, no reaction table, no cooldowns anywhere in his tree.
BREATHER: after just a 2-piece combo he is ALWAYS forced into a circle --
a piece earlier than every other moveset.
NOTES:
- Every move he plays carries light grit -- brief stun immunity and
(with the poise addon) bonus poise and hyper-armor -- for as long as
the clip runs.
FOOTWORK: holds orbit at 3-4 blocks; only corrects course once outside a
2.5-4.5 band.

