These guys are weird. The hammer-wielding variant has some of the most complex AI I've dealt with so far—it combines several different techniques for accomplishing the same goals and its combos end up being much harder to trace as a result—but when you boil it all down, the combos actually end up fairly easy to map out. Take a look:


Grave Warden Duelist (Hammer) combo chart

I'm making these charts for the Fextralife wiki, so my primary goal is to make the combos comprehensible rather than comprehensive. Grave Warden Duelist has tons of different animations for various different types of hammer swings which can be invoked at different points in its combos. Some of these have checks that say "don't do this attack if it's been done in the last X seconds", effectively introducing a cooldown; some can only happen once per combo by virtue of the fact that they're only ever called from the "start a combo" function; and some are part of a pool of attacks that all share a single combo counter that doesn't allow further attacks once it gets too high.

I don't want to expose all of that complexity to someone who's just trying to figure out when it's safe to attack or parry, so once I created the first draft of the chart I started merging paths. Usually I'll only merge if two paths are fully indistinguishable from a player's perspective, but for this guy I was worried that having a bunch of counterclockwise hammer swing nodes with once- or twice-per-combo limits would be too confusing. So I traced exactly how many times that could happen maximum (4 as it happens) and included that instead. The result is a much simpler chart that still represents the AI's behavior fairly accurately.

Axe-Wielder

Grave Warden Duelist (Axe) combo chart

The axe-wielding duelist's actual combos are drop-dead simple. The vast majority of its attacks are one-and-done heavy hitters, just a single attack or a linear sequence of attacks before he goes back to idle mode. There's only one real combo, and even then the branching is limited to a couple places. Although I can tell from the logic that it shares a lineage with the Hammer-wielder, I have to assume the two AI files were forked fairly early on given how different they are.

What makes this guy so strange is the way it handles parriability. From Software games are usually very careful to make enemies comprehensible to players. Even if they're fearsomely difficult, they follow their own internal logic that can be learned and eventually mastered. A skill-intensive mechanic like parrying takes a lot of practice to get the timing right and careful observation to tell what can be parried and when, but once you understand for example that Margit is parryable when he uses his cane but not his spectral weapons, parrying becomes a breeze.

The Axe Duelist doesn't work that way. Its axe attacks are parryable or not seemingly arbitrarily, following no rhyme or reason. There are a number of pairs of nearly-identical animations where one has parriable frames and the other doesn't. One of those pairs can even come out from its idle state! Pragmatically, this probably means that the best parry strategy is "don't", but to help stubborn players I added a special highlight for the specific nodes that could be parried.


You must log in to comment.

in reply to @nex3's post:

it's actually just a Lua script. you gotta do some legwork to unpack it from the executable and decompile it, but once that's done you can just read through it and see what it does...... with a lot of caveats about how it uses totally undocumented APIs and relies heavily on opaque integer IDs