Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions libs/gw2_evtc_parser/src/gw2_evtc_parser/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -1201,6 +1201,9 @@ def parse_events(source: BinaryIO | bytes) -> Iterator[Event]: # noqa: PLR0912,
if _iff not in {1, 2} and not is_self_condi_tick:
continue
if _ev_buff:
# Raw source-less condition ticks with UNKNOWN iff and a master are uncredited.
if _iff == 2 and event_src_agent == 0 and src_master_inst != 0:
continue
magnitude = 0 if buff_dmg >= _DAMAGE_SANITY_CAP else max(0, buff_dmg)
condition_damage = magnitude
is_attempt = magnitude > 0 or _result != 0
Expand Down
25 changes: 25 additions & 0 deletions libs/gw2_evtc_parser/tests/test_parser_emit_buff.py
Original file line number Diff line number Diff line change
Expand Up @@ -1115,6 +1115,31 @@ def test_parse_events_2025_keeps_unknown_iff_damage() -> None:
assert events[0].iff == 2


def test_parse_events_2025_drops_unknown_iff_uncredited_master_condition_damage() -> None:
evtc = _build_minimal_evtc(
[(1, 1, 1, "Src", True), (2, 1, 1, "Target", False)],
build="20260618",
skills=[(723, "Bleeding")],
events=[
_build_event_record_2025(
time_ms=10_000,
src_agent=0,
dst_agent=2,
value=0,
buff_dmg=33,
skill_id=723,
iff=2,
buff=1,
result=14,
src_instid=2437,
src_master_instid=1452,
),
],
)

assert list(PythonEvtcParser().parse_events(evtc)) == []


def test_parse_events_2025_keeps_statechange_on_minion_actor() -> None:
evtc = _build_minimal_evtc(
[(1, 1, 1, "Owner", True), (2, 1, 1, "Minion", False)],
Expand Down
Loading