Replies: 19 comments 1 reply
|
Fixed and live in v1.76.0, all in the same night as the report: the announcement's "held M:SS" now survives the ordering where the pet turning on you breaks the charm before the fade line prints - the hold recorded at the attack is found by a short look-back when the fade arrives. Third confirmed catch tonight, bjstrange - the release notes are basically your changelog. |
|
This is still happening in v1.76.0 |
|
Thanks for staying on this — and the persistence found a second, sneakier bug hiding behind the first one. The 1.76.0 fix handled the attack-breaks-then-fade-prints ordering. What it missed: if you RE-CHARM quickly (which, being you, you do), the delayed fade line from the OLD charm was being read as a fresh break — it silently wiped the new charm's clock, so when that new charm eventually broke there was nothing to measure. Fixed: a fade arriving within seconds of an already-recorded break is now recognized as the echo it is — the old break keeps its announced time, and the new charm keeps its clock. One ask to make sure this was YOUR case and not a third bug hiding behind the second: if you catch it again after the update, a short log excerpt around one silent break (the charm landing, the break, and the minute after) would confirm it — same as your #122 log, which diagnosed itself. |
|
Now live in v1.77.0 - the re-charm echo guard. If the silence repeats after this update, that log excerpt is the next move; if it goes quiet, we got it. |
|
Still happening, but randomly. Three sets of charms were announced properly, 4th one did not. Different mobs. |
|
Your log cracked it. Third attempt at this one, and it was the attachment that did it — thank you for going to the trouble. Here's the exact moment, from your Same second. Bzzazzt was mid-swing when the charm landed, and the game resolved that attack round anyway. EQBuddy treats a "pet" hitting you as the charm breaking — reasonably, most of the time. So it dropped the charm claim one second after making it. Worse, the hold it tried to record was zero seconds long, which it discards as nonsense, so nothing was written down either. Eight minutes later, when the charm actually ended: ...there was no landing left to measure from. The fade message printed, because that comes straight off the log line. The held time didn't, because the clock had been thrown away at 22:28:07. And that's why it looked random. It depended entirely on whether the creature happened to be mid-round at the instant your Allure landed. Three charms fine, the fourth silent, different mobs, no pattern — because the pattern was in the mob's swing timer, not in anything you did. Both of my previous fixes were aimed at the wrong end of the problem: they dealt with late fade lines, and this was an early attack line. The fix: a hit on you within 3 seconds of the charm landing is now read as the tail of that in-flight round, not a break. A melee round is about 2 seconds, so 3 covers it. Nothing is lost if a charm genuinely does fail instantly — the "worn off" line still records the break a moment later, so that path is unchanged. Tested both directions: the in-flight swing no longer breaks the claim (and the fade eight minutes later correctly reports This'll be in the next release. If you see a silent one after that, send another excerpt — but I think this was it. The zero-second hold being silently discarded is the kind of thing that only shows up when someone hands you the actual seconds. |
|
Still not consistent. v1.85.0 |
|
Working example. Charm lasted 12 seconds and alerted as expected. |
|
That's a perfect control case — thank you, it corroborates the diagnosis exactly. I pulled your That's precisely the difference. In the failing log, the charmed creature itself hit you in the same second the charm landed, because it was mid-swing when the spell took hold — and EQBuddy read its own new pet hitting you as the charm breaking. Here nothing your pet did looked like a break, so the clock survived and the fade reported honestly. A working example is genuinely more useful than another broken one at this stage: it rules out "the announcement path is flaky" and pins the fault on the break detection specifically. The fix shipped in v1.85.0 a few minutes ago. A hit on you within 3 seconds of the charm landing is now treated as the tail of the creature's in-flight attack round rather than a break — and if a charm genuinely does fail instantly, the "worn off" line still records it a moment later, so nothing is lost either way. Worth also grabbing 1.85.0 because it fixes a startup crash in 1.84.0 that stops the app opening entirely if you have the Epic card's "classic-doable only" filter ticked (#158). If you catch another silent one after updating, send the excerpt the same way. But between the failing log and this control, I think this one's closed. |
|
Third cause, and your log names it in a single line. Thank you for the fourth one — this was not findable any other way. From There were two of them. Your charmed one was fighting the uncharmed one — that second line is the giveaway, a creature attacking something with its own name — and the uncharmed one was hitting you. EQ's log identifies creatures by name and nothing else. So when a "greater ice bones" hit you at 15:03:56, EQBuddy had no way to know it wasn't yours, concluded the charm had broken, and dropped the clock. The charm then ran another 26 seconds and its fade at 15:04:22 had nothing left to measure. Same missing "held" as before, third distinct cause:
The fix: when EQBuddy has seen proof that two creatures share your pet's name — a line where one attacks another of the same name — a same-named attacker hitting you is treated as ambiguous, and the claim survives until the wear-off line settles it. That line is unambiguous, so nothing is lost by waiting for it. Deliberately narrow. A pet fighting a ghoul and then turning on you is a real break with no identity confusion, and that still drops the claim immediately — I had it broader for about ten minutes and it broke exactly that case, which an existing test caught. In the next release. And if there's a fourth cause, please do send a fifth log — every one of these three was found from an attached excerpt and none of them was findable by reading the code. |
|
I appreciate the work on this. |
|
Still no. Log is attached. Log has me saying when I cast/break charm and if it did announce or not. The breaks were intentional to collect the data, not random fades. First charm/break announced, 2nd charm/break did not. |
|
Found it, and charm5.txt is what found it. Fixed. It was never the same bug. This is the fourth distinct cause in this thread, and it's the first one that involves no attack at all — which is exactly why the previous three fixes kept missing it. Every one of them keys on a genuine attack, and your second charm ended without one. What actually happenedYour log has this at 20:21:49, six seconds after the charm landed:
Choking was cast on you before you charmed her. Look at 20:21:03 through 20:21:38 — she's hitting you with it while still hostile. A damage-over-time spell doesn't stop when the caster becomes your pet; it keeps ticking on its own schedule. And each tick arrives at EQBuddy naming her as the attacker. So EQBuddy read a tick as "my pet just turned on me", dropped the claim six seconds into the charm, and the real fade five and a half minutes later had no landing left to measure. Hence a fade line with no duration. The in-flight-swing guard from 1.85.0 didn't cover it because that window is 3 seconds and the tick came at 6. The same-name guard from 1.87.0 didn't cover it because there was only ever one princess. A tick is not a decision to attack — it's the tail of a spell cast before the charm existed. Ticks no longer break a charm. Real swings still do, and the wear-off line still settles anything ambiguous. The slightly galling part: EQBuddy already knew this. The mez tracker learned it back in issue #32 — a DoT cast before a mez keeps landing while the mob sleeps, so it mustn't be read as the mob waking up. That guard was written, documented, and never applied to charm. How your log cracked itWorth saying, because it's the reason to keep sending them. I first wrote a condensed version of your sequence by hand — both charms, the mez, the attacks — and it passed. Produced "held 5:31" correctly. The bug only appeared when I replayed the actual file line by line and printed every moment the charm claim changed. The line that killed it was one I hadn't thought to include, because it looks like ordinary incoming damage. Four attempts, four causes, and every single one was found from a log you attached. None of them was findable by reading the code. Two regression tests now cover it: a tick from before the charm doesn't break it, and a real swing outside the settle window still does — so ignoring ticks can't hide a genuine break. This ships in the next build. Thank you for the fifth log, and for marking up exactly where you cast and broke each one — that annotation is what made the two charms comparable. |
|
Still no. Worked all night until final charm break. Log is attached for that entire charm/break sequence. |
|
Possible edge case: Used puppet strings to charm and didn't get any announce at the end. Tried twice. |
|
charm7 is a genuinely new case, not a return of the previous five — and you've found the boundary of the mechanism that fixed them. Thank you for the seventh log; nobody has done more to make this feature honest than you have. Why Puppet Strings is different. Everything 1.88.3 and 1.88.4 do keys off the spell you cast. When you cast Charm or Cajole Undead, EQBuddy waits that specific spell's cast time before claiming the pet, because the "it's yours now" line arrives about one cast later and one fixed wait could never fit both. That list of what counts as a charm, and how long each takes, is harvested from the wiki's spell pages — which is what let it catch Allure of Death masquerading as a charm on its name alone. Puppet Strings is an item, not a spell. It has no spell page, so it is not in that catalog, and the per-spell wait has nothing to look up. That's the gap, and it will be the same for any other clicky charm effect. I don't want to guess further in public before I've replayed charm7 itself — the last two times I reasoned about this from the shape of the problem rather than from your actual file, I got it wrong, and the hand-condensed version of charm5 passed while the real one failed. So: I'm pulling charm7.txt and working from it directly. What is fixed, in 1.88.4, from charm6: you charmed Bzzazzt, put the pet on hold, and eight seconds later "Bzzazzt" landed a full five-hit round on you — so EQBuddy read that as your own pet turning on you and threw the clock away fifteen seconds in. There were two Bzzazzt. The same-name guard couldn't help, because the only proof it accepted was a creature attacking something with its own name, and those two never fought each other. But your pet had already said the thing that settles it: "Now holding, Master. I will not start attacks until ordered." A pet on hold does not start attacks, so a same-named attacker while yours is held is a different creature. Replaying your actual file now gives "held 3:28" against no duration at all before. So charm6 is closed and charm7 is open. I'll come back to this thread with what the log says rather than with a theory. |
|
v1.91.0. This instance failed also. It works a lot more often than it doesn't. I don't think additional time needs to be spent on it. Unless you just really want to track this down, I'm good with calling it good enough. |
|
Found it, and charm7.txt is what found it. Fixed and live in v1.91.0. I pulled your file and replayed it line by line rather than reasoning about the shape of it, and the sixth cause is the first one in this thread with no attack in it at all. Here is the whole of it, from your log: Nineteen seconds, cleanly bracketed, and no held time. There is no "You begin casting" line above it — because Puppet Strings is an item. Every mechanism the previous five fixes added keys off the spell you cast: its cast time, its entry in the catalog harvested from the wiki's spell pages, the per-spell arm window that decides whether a landing line is yours. An item click prints no casting line, so all of that had nothing to key on and the landing was dropped on the floor. Not just unclaimed — unrecorded. So when the wear-off arrived nineteen seconds later, there was no landing time left to measure from, exactly as in the previous five, by a completely different route. The fix. A charm landing with no cast behind it is now remembered but still believed by nobody. It has to be: that line names no caster and prints in your log when a bystander charms something, which is why it was never trusted on its own. What settles it is your pet's own Replaying your actual charm7.txt now gives Three regression tests went in with it, including the two that matter most: the landing on its own still claims nothing, and a tell about a different creature does not promote it. Those are the guards that stop this fix handing you a stranger's pet. Six causes, seven logs, and every single one was found from a file you attached. The condensed version of charm5 passed while the real one failed, so I have stopped writing condensed versions. If there is a seventh, send an eighth log — it has worked every time. |
Uh oh!
There was an error while loading. Please reload this page.
Charm fading doesn't always trigger time charmed announcement. It does always trigger the faded message.
EQBuddy 1.75.0 · Windows 19045
All reactions