- the auction house end to end: right-clicking an auctioneer opens Browse/Bids/Auctions on the server's reply — search, the category tree from your own DBCs, the reference's 50-a-page pager, multi-key sorting (directions corrected at the bytes), bid/buyout, the sell slot with deposit and duration, cancel with its fee popup; prices sit on the reference's own money-frame kit in lined-up columns, the twenty auction messages split refusals-red / outcomes-to-chat, and a won or sold auction reads as a proper mail receipt — the window's Lua re-worded in our own terms after the overlap ratchet caught the first cut leaning on the reference's text - the PvP honor system whole: the Honor tab and the inspect page over a real wire model, with current rank and highest-ever rank correctly two different fields - a day of reported fixes: WASD survives a /logout re-entry, addon settings save on a window close and Cmd+Q (exactly once — a mac close could fire the tail twice), clams open again, random-enchant items name themselves on every surface, the loot window's rows hold their seats with legible counts, idle players stop sinking through building floors, the shooter re-pulls between Auto Shots, portraits loosen ~19% to the client's own aspect-1.0 matrix, and big creatures thump the camera off the CameraShakes table - character select clicks like 1.12 — captions whiten on hover, buttons fire on release, Humans face straight ahead off the stage bone's real yaw, the facing is per-character, and hunter/warlock pets stand beside you at their family-ramp size with their own emitters (the imp's flames), the Voidwalker's sequence-hidden shackles culled - the smaller player-facing set: nameplate on/off rows in Options with the CanAttack category gate (emissaries stop plating), the bonus bar slides up with igBonusBarOpen, the camera's framing height glides on a shapeshift, the open letter evicts the centre seat, the far-band fog hull stops printing a pale horizon stripe at low view distance, the guide arrow is gold with per-source rim art, error text fades through its shadow too, and /convertraid converts the party - README: the auction house and PvP honor move out of "not built yet" Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
50 lines
1.7 KiB
Rust
50 lines
1.7 KiB
Rust
//! What distance-fade band does a doodad actually land in? Prints each matching M2's authored
|
|
//! bounding-sphere radius (the reference's `rec+0x68` source) and the band the radius selects:
|
|
//! `cargo run -p benilla-formats --example fade_bucket -- fence`
|
|
//!
|
|
//! The band is chosen by SIZE, never by what the thing is — so "fences fade at 40→50" is a claim
|
|
//! about a radius, not about a fence. This prints the radius so the claim can be checked instead
|
|
//! of remembered. Radii are model-local (pre-scale); a placement's `scale` multiplies them.
|
|
//!
|
|
//! Output is Blizzard data — pipe it to the scratchpad, never into the repo.
|
|
|
|
fn main() -> anyhow::Result<()> {
|
|
let pat = std::env::args()
|
|
.nth(1)
|
|
.ok_or_else(|| anyhow::anyhow!("usage: fade_bucket <substring>"))?
|
|
.to_lowercase();
|
|
let data = benilla_formats::wow_data().expect("no WoW install found (set $WOW_DATA)");
|
|
let mut chain = benilla_formats::open_chain(&data)?;
|
|
let names: Vec<String> = chain
|
|
.list()?
|
|
.into_iter()
|
|
.map(|e| e.name)
|
|
.filter(|n| {
|
|
let l = n.to_lowercase();
|
|
l.ends_with(".m2") && l.contains(&pat)
|
|
})
|
|
.collect();
|
|
for name in names {
|
|
let Ok(b) = benilla_formats::load_m2_bounds(&mut chain, &name) else {
|
|
continue;
|
|
};
|
|
println!(
|
|
"{:>8.2} {:<22} {}",
|
|
b.sphere_radius,
|
|
band(b.sphere_radius),
|
|
name
|
|
);
|
|
}
|
|
Ok(())
|
|
}
|
|
|
|
/// The `FUN_00683f80` size buckets, as `model_fade.rs` encodes them.
|
|
fn band(r: f32) -> &'static str {
|
|
match r {
|
|
r if r > 7.0 => "never fades",
|
|
r if r <= 0.5 => "40 -> 50",
|
|
r if r <= 2.5 => "100 -> 125",
|
|
_ => "150 -> 200",
|
|
}
|
|
}
|