Skip to content

Feature/warlock - #1533

Open
1337LutZ wants to merge 5834 commits into
masterfrom
feature/warlock
Open

Feature/warlock#1533
1337LutZ wants to merge 5834 commits into
masterfrom
feature/warlock

Conversation

@1337LutZ

Copy link
Copy Markdown
Contributor

No description provided.

hillerstorm and others added 30 commits August 8, 2026 17:01
The binary protobuf encoding is nondeterministic (map ordering), so a
no-op regeneration previously churned the .bin files on every run. The
JSON output is deterministic and covers all UIDatabase fields, so
compare the freshly built JSON against the file on disk and skip
writing both files when identical.
Correctness:
- WriteBinaryAndJson only skipped writing when db.json was unchanged, so a
  deleted or corrupt db.bin was never regenerated and make db still exited 0.
  Require the binary to exist before skipping. WriteBinary/WriteJson now fail
  loudly instead of discarding os.WriteFile's error, which that guard relies on.
- DecodeRows clones a copy-table row's decoded values, which only matches
  upstream while no column is COMMON-compressed: common values are resolved by
  row id, so a copy row would inherit the source id's value. No table has both
  today; error out instead of silently emitting wrong rows if that changes.
- Bound the .dbd and listfile HTTP requests. The listfile deliberately bounds
  connect and response-header time only, since a legitimate ~150 MB transfer
  must not be cut off mid-flight.
- Warn when --dbcache is given but no pinned file holds the extracted build,
  instead of quietly running without the hotfix overlay.
- --build now takes a bare number or a full version string and no longer leaks
  an internally synthesized "0.0.0."+v into its error message.

Unused code: bitReader.clone, the value32 accessors, Build.BuildConfig/
CDNConfig plus the CDN config read the local-only reader never needed,
AvailableBuild.CDNPath/CDNConfig, five unread WDC5 header fields (the cursor
still reads past them), and Decoded.ColumnNames, which had become a second
source of truth for column order next to the version definitions.

Settings files and their bindings now carry only the keys that are read.

Tests: the golden gates diffed against a .NET reference capture, and the .NET
tool is gone, so that reference can never be regenerated again. Together with
the build-68571 fixtures under a gitignored refs/, 8 of 9 tests could only ever
skip. Replaced with 21 fixture-free tests that always run: exhaustive unaligned
bit-reader reads against an independent reference implementation, a synthetic
XFTH v9 builder covering parse/dedup/rejection paths, SStrHash pinned to two
known table hashes, and a .dbd parser suite built on an inline definition.
Also fixes the sqlite test's all-zero-array assertion, which was reading the
row it had just upserted.

Idiom: license headers no longer sit in the package-doc slot (godoc showed
concatenated license text), one package doc per package, range-over-int,
strings.SplitSeq, slices.Sort/Equal, and max where gopls' modernize analyzer
flagged them.

Verified: extracting build 68806 with the live DBCache.bin reproduces the
committed wowsims.db exactly — 236 schema objects identical, 0 differing rows
across all 72 tables.
Malkorok - various timing fixes
The ReforgeOptimizer multiplies haste/mastery EP by the amplification
trinket modifier, but Unholy EP weights already include it when sourced
from stat weight runs with the trinket equipped (as in the P5 defaults,
whose gear set includes Thok's Tail Tip). With haste EP close behind
crit, the extra ~8.5% boost made the reforger wrongly prefer haste.

Add the same getEPDefaults normalization Blood and other specs use,
dividing haste/mastery EP by the amp modifier so it is counted once.
The ReforgeOptimizer multiplies haste/mastery EP by the amplification
trinket modifier, but Unholy and Frost EP weights already include it
when sourced from stat weight runs with the trinket equipped (their P5
gear sets include Thok's Tail Tip). With haste EP close behind crit,
the extra ~8.5% boost made the Unholy reforger wrongly prefer haste;
Frost's 2h mastery/crit margin was similarly distorted.

Add the same getEPDefaults normalization Blood and other specs use,
dividing haste/mastery EP by the amp modifier so it is counted once.
The retuned weights (crit 0.75) were compensating for the reforger
double-counting amplification trinkets; with that fixed separately,
the original weights (crit 0.68, haste 0.64, mastery 0.61, AP 0.3)
reforge correctly. Keeps the P5 gear set changes.
…double-count

Fix reforger double-counting amplification trinket for Unholy/Frost
Adds APLValueBossSpellCastTimeRemaining, exposing the remaining time on
a boss's current hardcast of a specific spell as a Duration, composable
with the existing Compare operator (e.g. to trigger a defensive cooldown
shortly before a cast completes, such as Malkorok's Imploding Energy).

The constructor rejects spells with no cast time (instants and channels)
with a validation warning, since the value would otherwise silently
never report non-zero. bossHardcastRemaining is factored out and shared
with BossSpellIsCasting so the two can't drift out of sync.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…remaining

Feat/apl boss cast time remaining
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants