New Addon: PDL Tracker

Eorzea Time
 
 
 
Language: JP EN FR DE
Version 3.1
New Items
3248 users online
Forum » Windower » General » New Addon: PDL Tracker
New Addon: PDL Tracker
 Bahamut.Cypan
Offline
Server: Bahamut
Game: FFXI
User: Cypan
By Bahamut.Cypan 2026-08-11 19:58:37
Link | Quote | Reply
 
TL;DR

  • What it is: a small draggable Windower window showing a live cRatio estimate against your current target. Green = you're past your pDIF cap, so PDL+ gear is doing something. White = you're under it, so attack/WSD gear wins.

  • What problem it solves: it tells you which side of the cap you're on, and both answers are useful.

    • Under the cap: you need more attack or more defense down to get there, and PDL+ is a dead stat until you do.
    • At or past it: more attack buys you nothing, and PDL+ is where the damage is.
    • PDL+ raises the pDIF cap, not your pDIF, so "always wear PDL" and "never wear PDL" are both wrong; the answer flips fight to fight.

  • Why it's not just a gear question: once defense down is stacked, you're often running more attack than the fight needs. That changes:

    • which roll you want (Chaos vs. Samurai, Rogue's, Miser's)
    • which indi is worth casting (Fury may be doing nothing)
    • what a job is actually contributing (a Dancer's Box Step can move pDIF more than an attack buff)
    • whether PDL+ is your real upgrade for that content

  • How it gets the number:

    • your actual attack, read from the game's char-stats packets, so buffs, gear, rolls, and food are all baked in
    • the target's defense, bounded by an automatic /check and re-checked when your attack shifts
    • the full defense ledger: Dia, steps, Frailty, WS and JA debuffs, Blue Magic, pet moves, bolt procs, and the other direction too, meaning mob self-buffs and mob-cast Protect
    • your threshold, from the pDIF cap of the weapon you actually have equipped, plus Damage Limit traits, lifted while Aria is up

  • What it doesn't do: swap your gear. It measures and displays; the toggles stay yours.

  • Accuracy, honestly: solid on regular mobs, weakest on NMs (many can't be gauged, so they fall back to a static anchor you set). Details in the limitations section below.

  • Install: drop the folder in Windower/addons/ and run //lua load pdltracker. No configuration required, no other addons needed.



Why it matters past which WS set you wear

pDIF is a ratio. Attack buffs raise the numerator; defense down lowers the denominator, and reductions to a denominator that's already small scale harder than piling on more attack. Stack Dia, Frailty, and steps on a target and the party is frequently running far more attack than the fight actually needs, with no way to see it.

That surplus is a decision problem, not just a gear problem:

  • Roll selection. If Chaos isn't buying anything, Samurai, Rogue's, or Miser's is free damage or utility instead.

  • Indi/geo choice. Fury may be the wrong indi when the defense side is already carrying the ratio.

  • Job composition and role value. A Dancer's Box Step can move pDIF more than an attack buff can, once defense down is stacked. That reframes what certain jobs are contributing.

  • Gear. Whether PDL+ is your actual upgrade, or dead weight for the content you're doing.



PDL+ raises the pDIF cap, not your pDIF. Under the cap it's a dead stat, so "always wear PDL in WS" and "never wear PDL in WS" are both wrong: the right answer flips depending on the mob's defense, your buffs, and what the party has landed on it. Most of us end up eyeballing all of the above.

A lot of this came out of long-running discussions with friends about buff selection and party composition, where the sticking point was always the same. The theory is easy to agree on, but nobody has a number in front of them mid-fight. The point of putting a live one on screen is to let those calls be made from data instead of habit, and to open up strategies that get dismissed because nobody can see when the attack side is already solved.

How it decides

  • Reads your actual attack from the game's char-stats packets, buffs, gear, rolls, and food included, because it's the server's own number rather than a model. Before the first packet lands it falls back to a buff model (Chaos Roll by rolled number, Minuets identified per cast with Soul Voice detection, party DRK bonus); the status line shows cal~ while estimating and cal once it's measured.

  • Auto-issues /check once per mob and converts the defense verdict ("defends well against your attacks", etc.) into bounds on the mob's base defense, then re-checks on its own when your attack changes materially. "Impossible to gauge" NMs fall back to a static anchor you can set.

  • Tracks the defense ledger in both directions: Dia (Light Shot aware), Box Step daze level, Armor Break, Full Break, Shell Crusher, Tachi: Ageha, and Angon with TP-scaled durations, Frailty (Sylvie-entrust aware, and nerfed automatically on Sheol Gaol bosses), Blue Magic, pet moves, and bolt procs. On the other side it tracks mob self-buffs like Scissor Guard, Harden Shell, and Water Wall, plus mob-cast Protect and Protectra as flat defense. Wear-offs and dispels clear it; effects it can't see wear off get duration fallbacks.

  • Knows your threshold: reads the weapon you actually have equipped and takes the pDIF cap for that weapon's skill (bg-wiki's cap table: 1H 3.25, H2H and great katana 3.5, 2H 3.75, scythe 4.0), adds your Damage Limit trait from main job plus a qualifying sub, subtracts the randomizer offset, and lifts the whole thing while Aria of Passion is up (Soul Voice doubling detected). Swap a WAR from axe to great axe mid-session and the threshold follows the weapon.



Install

Drop the PDLTracker folder into Windower/addons/ and run //lua load pdltracker. No configuration needed, since it starts on your first engaged target. Drag the window wherever you like; //pdl save pins it there.

Download: PDL Tracker on GitHub

Commands
Code
//pdl            toggle the window
//pdl save       save the window position
//pdl base <n>   static anchor ratio for unchecked / ITG mobs (default 1.10)
//pdl atk <n>    your buffless attack, used for the fallback scale (default 1500)
//pdl status     echo the full decomposition for your current target
//pdl debug      packet tracing on/off


What it is honest about

It's an estimate, not a damage simulator, and the defense side is where the error lives.

  • Regular mobs: good. /check bounds the mob's defense, and re-checking as your attack changes tightens it. If a mob starts "defends well" and drops to "low defense" mid-fight as your debuffs land, that transition is real information and the estimate gets sharper.

  • NMs: weakest case. Many are impossible to gauge, so they fall back to a static anchor (//pdl base <n>). A curated defense table for the NMs people actually fight (Odyssey V-tier, Sortie bosses, Gaol) would fix this, and it's the next thing I want to build. Field numbers welcome.

  • Level correction isn't modeled. Fighting well above or below your level shifts pDIF in ways this doesn't account for; endgame content is the intended use case.

  • Multi-hit and crit-heavy cases aren't separated out: the window works off the non-crit cap, so a build leaning hard on crits is reading a conservative number.

  • A few inputs are documented assumptions rather than hard data. Defense-up and defense-down are combined additively, mob self-buff durations are estimated (the wiki says they scale with the mob's TP, which we can't see), and player-cast Dia III duration assumes some enfeebling-duration gear. Values come from bg-wiki where bg-wiki documents them, and anything undocumented is defaulted in the direction that errs toward not swapping early.



If you find a case where the window disagrees with your parses, I want to hear about it. //pdl status prints the whole decomposition (attack, mode, defense-down total, threshold), and that output is usually enough to tell which term is wrong. Corrections on the data tables are welcome too.

Credit where it's due: the debuff-tracking approach owes a lot to Xathe's Debuffed, and the pDIF math is bg-wiki's plus a pile of community testing. Share it freely.

Cypan (Bahamut)
[+]
Offline
Posts: 376
By Genoxd 2026-08-11 20:14:46
Link | Quote | Reply
 
Hi AI bot.
This isn't going to work for so many reasons that I'm not going to list them out.

Instead 1 question: obviously ignoring NMs, how do you know the pDif without knowing the targets defense? /check isn't accurate unless you're doing the work go find out the mobs defense. So your confidence, and brushing this under the rug saying it's not accurate, seems to be a crazy understatement.
[+]
 Bahamut.Cypan
Offline
Server: Bahamut
Game: FFXI
User: Cypan
By Bahamut.Cypan 2026-08-11 20:16:47
Link | Quote | Reply
 
Hi,

Feel free to share a table of all mob defense and NM defense and I'll give you more accuracy.
Offline
Posts: 376
By Genoxd 2026-08-11 20:20:40
Link | Quote | Reply
 
Hi, some of these exist in various Excel sheets, the wikis, and forum posts.
[+]
 Bahamut.Cypan
Offline
Server: Bahamut
Game: FFXI
User: Cypan
By Bahamut.Cypan 2026-08-11 20:25:02
Link | Quote | Reply
 
Cool, cool. Now I wonder why you didn't open with productive feedback like sharing some of those if you were aware of them.
Offline
Posts: 376
By Genoxd 2026-08-11 21:21:49
Link | Quote | Reply
 
Because this is a cool idea.
Unfortunately this one screams "I asked AI to make this idea and this is what it spit out".

I'm actually all for people using AI to generate these. Lots of good ideas. It's not enough to just ask AI to do a thing and trust that it does it though which is what I feel happened here.

The reason I shut it down immediately is not because it's slightly wrong about pDif or the estimates it will give. It's flat out not even close to an accurate number.

For this to provide value it would need to do a check at the start of the fight. If you get low defense then it would need to iteratively decrease your attack by swapping gear until the message changes. That will give you a rough estimate of what the defense is and the accuracy will depend on how much the increment missed the actual value by and how you account for that mathematically. Once you have that you can give a rough estimate of pDif and the impact of PDL. This info should be saved (probably indexed by zone+mobname+level).

For the hell of it I went to review the code to see what's up. Maybe spending time would reverse my view.

The code has issues. As stated you only issue a check once, that combined with never saving results means that this will never really give value in a reasonable usable way.

You issue a check command based on the following logic
Code
local t = windower.ffxi.get_mob_by_target('t')
            if t and t.valid_target then


valid_target does not mean what you or AI think it means here. valid_target includes any mob entity. That means players and npcs. You need to check spawn_type == 16 for mobs.
Have you tried engaging a mob and then sub targeting yourself or another player? get_mob_by_target('t') returns sub target too so if you're engaged and try to cast a spell on yourself or a party member then this will end up issuing a check on them too if I'm not mistaken.

Code
local function mob_entry(id)
    if not mobs[id] then mobs[id] = {} end
    return mobs[id]
end


This function is called every time you change targets when you're engaged. This struct is only cleared when a mob dies. If the mob doesn't die or if the death packet is missed then this table is never cleared meaning it will slowly just build up. This is worse than it sounds due to the sub target issue above. If you're targeting players or tabing through things while engaged then I believe you'll just start filling up this mob struct you're keeping and they'll likely never clear out.

I didn't look too closely at the code because, again, this screams I tossed it at AI and haven't checked it. I don't really want to code review it in depth.
[+]
 Carbuncle.Firebrandt
Offline
Server: Carbuncle
Game: FFXI
Posts: 33
By Carbuncle.Firebrandt 2026-08-12 02:17:21
Link | Quote | Reply
 
If the OP is any indication of the effort that went into this addon , stay well away