Triggevent is a comprehensive addon for FFXIV that provides cooldown and multi-target DoT tracking, easy triggers, a titan jail plugin, and more.
The events tab is where you can go to see everything that has happened since opening the program and connecting to ACT (or since opening a replay):
Here, you see lines roughly equivalent to what you’d see in ACT, but in a more human-readable format.
Note that if you are playing a replay, it will not play through the events until you tell it to do so via the “Play” button at the top, or the “Play to Next Matching” button.
From left to right, the columns are:
AbilityUsed
and /Used|Cast|TTS/
would both be acceptable.0x1001ABCD
)./regex/
, a base 10 ID (e.g. 185
), or a hex ID (0xB9
).The freeform field supports Groovy expressions. To use it, first click the “Show/Hide Freeform” button, then enter a query in the box that appears below.
Here are some examples:
event.damage
- filter to only events that dealt damageevent.damage > 10000
- filter to only events that dealt damage in excess of 10,000event instanceof HasStatusEffect
- filter to only events associated with an abilityevent.damage && event.target.isThePlayer()
- filter to damaging events against yourselfYou can also use the Groovy tab to define a filter function, then reference it. For example, make a new script, check the “Run on Startup” box, put this in, then save and run it:
def isNpc(XivCombatant combatant) {
return combatant.type == CombatantType.NPC || combatant.type == CombatantType.FAKE || combatant.isEnvironment()
}
globals.noPlayerAbilities = event -> {
if ((event instanceof HasAbility || event instanceof HasStatusEffect) && event instanceof HasSourceEntity) {
if (!isNpc(event.source)) {
return false
}
}
if (event instanceof StatusEffectList && !isNpc(event.target)) {
return false
}
if (event instanceof TickEvent) {
return false
}
if ((event instanceof HasTargetEntity || event instanceof HasSourceEntity) && event.target.type == CombatantType.PET) {
return false
}
if (event instanceof StatusEffectList && (event.target.name == null || event.target.name.isEmpty())) {
return false
}
return true
}
Now, you’ll be able to use noPlayerAbilities(event)
(or noPlayerAbilities event
as a filter).
This will filter out most player-initiated actions, as well as actions involving a pet (which would otherwise be considered an NPC).
To poke around with a particular event in order to make filters for it, right click it and select “Save As Temp Variable”.
Then, in the Groovy scratch console, run a script with nothing but that variable name:
The list at the bottom will show you all the properties you can use on that events.
You can poke further into these:
Now, armed with this knowledge, let’s filter to only damaging abilities that hit players who were standing on the East side of the arena (the center is typically 100,100):